abonnement Unibet Coolblue Bitvavo
pi_55978939
quote:
Op zaterdag 12 januari 2008 19:00 schreef LeeHarveyOswald het volgende:

[..]

Je bent helemaal geweldig!!!!!!!
Let op, want hij is nu niet meer goed in firefox. Wees voorzichtig met veranderingen en probeer in verschillende browsers hoe het er uit ziet. Let ook op dat f5 drukken soms niet de css vernieuwd, doe dat dus met ctrl-f5

En graag gedaan natuurlijk..
pi_55979406
Hier (ook firefox) issie wel goed?
pi_55979547
quote:
Op zaterdag 12 januari 2008 19:41 schreef LeeHarveyOswald het volgende:
Hier (ook firefox) issie wel goed?
Ja, hier is 'ie nu ook weer goed. Ik had trouwens de <p>-tags gecommentariseerd maar als je in css de p-tag een margin van 0 meegeeft moet het wel goed gaan in beide browsers. Margin wordt standaard in verschillende browsers per tag in verschillende afstanden weergegeven wat de site lelijk kan maken. Door de margin zelf in te stellen voorkom je dat en is de margin overal hetzelfde. Succes verder met je site!
pi_55980096
Om mijn layout te maken heb ik hetvolgende geschreven:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
class HTML{
    
    
private $title;
    
private $content;
    
private $disable_menu;
    
    
public function HTML($title ''$disable_menu false){
    }
    
    
public function addHTML($html){
        
$this->content .= $html;
    }
    
    
public function addHeader($text$level 2){
        
// voeg een header (h1 tot h7) aan de pagina toe
    
}
    
    
public function addParagraph($text$class ""){
        
// voeg een paragraaf aan de pagina toe
    
}
    
    
public function addAnchor($name){
        
// voeg een <a name="$name"> aan de pagina toe
    
}
        
    
private function getMenu(){
        
// returned op basis van de ingelogde user een menu
    
}
    
    
public function getContent(){
        return 
$this->content;
    }
    
    
public function getOutput(){
        
$header "<!DOCT ...... ";
        
$footer ".....</html>";

        return 
$header $this->getMenu() . $this->getContent() . $footer;
    }
}
?>


Het aanmaken van een pagina gaat nu als volgt:

1
2
3
4
5
6
7
8
9
10
<?php
    $template 
= new HTML("Logfile");
    
$template->addHeader("Recent activity",2);
    
$template->addParagraph("In the .... place:");

    [...]

    
$template->addHTML($log_table);
    echo 
$template->getOutput();
?>


Mijn vragen:
  • Maak ik nu correct gebruik van OO in PHP?
  • Is dit een fatsoenlijke manier om een template systeem op te zetten?
  •   zaterdag 12 januari 2008 @ 21:09:54 #245
    85514 ralfie
    !Yvan eht nioj
    pi_55981932
    OO in php is voornamelijk om het de scripters zelf makkelijk te maken. Dus of het correct gebruik van OO is, hangt ervan af of jij of je gebruikers het zelf makkelijk te gebruiken vind/-en

    wat jij hebt gemaakt lijkt me niet echt een template systeem (ik versta daar onder een html achtige file die ingeladen wordt door het template object, waarna je een zooi variabelen in datzelfde object gooit en dan $object->parse() doet om de output te verkrijgen.). Ik krijg de indruk dat jouw code meer een verzameling functies is die html uitpoept? Ik kan het mis hebben en zelf het verschil niet helemaal zien, ik vind het moeilijk om uit te leggen
    pi_55982189
    Juist, maar ik was even bang dat ik de syntax verkeerd had. Ik heb hier ooit eens een OO stukje code gezet, maar toen werd hij verteld dat dat achterhaald was en het tegenwoordig met PHP 5.0 mooier kan. :)

    En ja, wat dit doet is een object aanmaken, daar gooi ik wat gegevens naartoe (html-headers, paragrafen, tabellen), en als ik getOutput() uitvoer krijg ik een string met HTML. Hij laad inderdaad geen externe template in, aangezien dat voor mij onnodig is. Mijn opmaak en HTML zijn toch gescheiden, een voorbeeld van bovenstaande logfile pagina:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <!DOCTYPE [...]>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl">
       <head>
          <title>Portfolio - Logfile</title>
          <link rel="stylesheet" type="text/css" href="include/stylesheet.css" />
          <script type="text/javascript" src="include/javascript.js"></script>
       </head>
       <body>
          <h1>Mijn portfolio</h1>
          
          <ul class="menu">
             [...]
             <li><a href="logfile.php">Logfile</a></li>
             [...]   
          </ul>            
                
          <h2>Recent activity</h2>
        
          <p>In the [...] place:</p>
          
          <table>
          [...]
          </table>
        
          <p class="footer">© 2008</p>
       </body>
    </html>      


    Om daar nou een template voor te parsen. :P
      zaterdag 12 januari 2008 @ 22:03:25 #247
    85514 ralfie
    !Yvan eht nioj
    pi_55983487
    Ja, ok, daar heb je gelijk in

    wat syntax betreft, geen idee, dat is voor mij meestal gwn proberen, ik gebruik persoonlijk niet zoveel OO

    php5 heeft wel wat geile OO functies en regeltjes erbij gekregen, maar geen waarvan ik denk dat jij er voor een gebruik als dit iets aan zal hebben.
    pi_55983745
    quote:
    Op zaterdag 12 januari 2008 20:06 schreef Geqxon het volgende:
    Om mijn layout te maken heb ik hetvolgende geschreven:
    [ code verwijderd ]

    Het aanmaken van een pagina gaat nu als volgt:
    [ code verwijderd ]

    Mijn vragen:
  • Maak ik nu correct gebruik van OO in PHP?
  • Is dit een fatsoenlijke manier om een template systeem op te zetten?
  • Ik begrijp je functies niet, bijv "addParagraph", waar voegt ie dan een paragraaf toe? Aan het einde? Aan het begin? Ergens in het midden? Lijkt me weinig flexibel, hoe dan ook.

    En een header, dat is voor mij meestal een http header (bijv "Content-type: text/html"), de doctype is gewoon deel van de html.

    Ik heb het idee dat je het jezelf moeilijker maakt dan noodzakelijk, waarom niet gewoon een template gebruiken die je inlaadt? Hier loop je jezelf alleen maar te beperken. Object georienteerd programmeren is niet iets dat "moet" maar het is iets dat je leven als programmeur makkelijker maakt en zorgt voor duidelijke structuur die je later ook makkelijk kan hergebruiken. De structuur die je hier hebt is veel te specifiek en te beperkt - misschien bruikbaar voor die ene applicatie maar voor een andere mag je het weer opnieuw doen. Dat is zonde.
    pi_55984010
    quote:
    Op zaterdag 12 januari 2008 22:12 schreef Farenji het volgende:

    [..]

    Ik begrijp je functies niet, bijv "addParagraph", waar voegt ie dan een paragraaf toe? Aan het einde? Aan het begin? Ergens in het midden? Lijkt me weinig flexibel, hoe dan ook.

    En een header, dat is voor mij meestal een http header (bijv "Content-type: text/html"), de doctype is gewoon deel van de html.

    Ik heb het idee dat je het jezelf moeilijker maakt dan noodzakelijk, waarom niet gewoon een template gebruiken die je inlaadt? Hier loop je jezelf alleen maar te beperken. Object georienteerd programmeren is niet iets dat "moet" maar het is iets dat je leven als programmeur makkelijker maakt en zorgt voor duidelijke structuur die je later ook makkelijk kan hergebruiken. De structuur die je hier hebt is veel te specifiek en te beperkt - misschien bruikbaar voor die ene applicatie maar voor een andere mag je het weer opnieuw doen. Dat is zonde.
    Bedankt, hier heb ik wat aan.

    De opmaak gaat via CSS, dus een template inladen is hier niet nodig.

    [ Bericht 4% gewijzigd door Geqxon op 12-01-2008 22:29:52 ]
    pi_55984070
    quote:
    Op zaterdag 12 januari 2008 11:06 schreef autocue het volgende:
    Een manier om zowel de performance te houden van een grote batch queries als het kunnen achterhalen is het zetten van een flag (of een timestamp) op je duplicaat tabelrow. Je zou bijvoorbeeld zoiets kunnen doen als :
    [ code verwijderd ]

    Niet supernetjes en het werkt alleen onder MySQL, maar 't doet (als 't goed is) z'n werk .
    Ik begrijp niet precies wat je bedoelt, maar ik vind op zich de timestamp-suggestie niet onaardig....
    Alleen heb ik dan juist alle niet-gewijzigde records te pakken, wat niet per se hetzelfde is als alle duplicaten...
    pi_55984806
    quote:
    Op zaterdag 12 januari 2008 22:24 schreef Geqxon het volgende:
    De opmaak gaat via CSS, dus een template inladen is hier niet nodig.
    De opmaak gaat eigenliijk per definitie via css, daar is css voor, maar de structuur... hoe doe je dat dan?
    pi_55985156
    quote:
    Op zaterdag 12 januari 2008 22:52 schreef Farenji het volgende:

    [..]

    De opmaak gaat eigenliijk per definitie via css, daar is css voor, maar de structuur... hoe doe je dat dan?
    Die kwak ik van top-to-bottom in de body neer, en geef ik een passende class-naam mee. Dat gaat voor nu prima, een stukje hierboven staat een voorbeeld hoe ik met deze class een pagina opbouw.
    pi_55986241
    quote:
    Op zaterdag 12 januari 2008 23:02 schreef Geqxon het volgende:

    [..]

    Die kwak ik van top-to-bottom in de body neer, en geef ik een passende class-naam mee. Dat gaat voor nu prima, een stukje hierboven staat een voorbeeld hoe ik met deze class een pagina opbouw.
    Als je niet gaat positioneren via je class maar dat static via css gaat doen wat is dan nog het doel van de class? Imo wordt het pas bruikbaar als je alle css-styles meegeeft in de tags in het html-bestand. Anders kun je beter een template aanmaken en die elke keer gebruiken.

    Laat maar en niet goed gelezen, classes meegeven in de tag kan natuurlijk ook al krijg je dan wel enorm stylesheets als je alle opties sowieso moet aanmaken..
    pi_55989799
    quote:
    Op zaterdag 12 januari 2008 22:26 schreef Xcalibur het volgende:

    [..]

    Ik begrijp niet precies wat je bedoelt, maar ik vind op zich de timestamp-suggestie niet onaardig....
    Alleen heb ik dan juist alle niet-gewijzigde records te pakken, wat niet per se hetzelfde is als alle duplicaten...
    Als je de MySQL ON DUPLICATE functionaliteit gebruikt kun je juist de duplicaten markeren en deze dus later selecteren, daar doelde ik op .
    pi_55989907
    Heeft het nut om LIMIT 1 te gebruiken bij een UPDATE wanneer je zeker bent dat de limit ook altijd 1 is? Of is het overbodig?
    ne okuyon, bokmu var?
    pi_55989940
    quote:
    Op zondag 13 januari 2008 02:22 schreef saban het volgende:
    Heeft het nut om LIMIT 1 te gebruiken bij een UPDATE wanneer je zeker bent dat de limit ook altijd 1 is? Of is het overbodig?
    Depends. Want als er dan toch stiekem ooit 2 records zijn, weet je niet zeker of hij wel de goede van de twee update. Als je dan toch een LIMIT 1 doet, gelijk ook maar even een ORDER BY erbij, zodat hij wel de "beste" van de twee pakt.

    Verder kan het handig zijn voor als er ooit iets goed fout gaat, en hij maar 1 record verpest, in plaats van je complete tabel.
    pi_55990120
    Het kan niet zo zijn dat er twee zelfde records zijn, hij zoekt/select op een uniek id. Mijn vraag was meer van, heeft het snelheidswinst, dus wanneer hij de eerste record heeft gevonden niet meer naar een tweede zoekt (die is er toch niet).
    ne okuyon, bokmu var?
    pi_55993435
    Het zoeken op een geindexeerd ID gaat echt onwaarschijnlijk snel, dus ik vermoed dat de UPDATE zelf de bottleneck is zeg maar.... het toevoegen van een LIMIT zal wellicht *iets* uitmaken, maar dan heb je het toch wel over (tien?)duizenden van seconden denk ik...

    Maak anders een een benchmarkje, waarin je beide varianten 10.000 draait en de tijd bijhoudt
    pi_55993493
    quote:
    Op zondag 13 januari 2008 02:14 schreef autocue het volgende:
    Als je de MySQL ON DUPLICATE functionaliteit gebruikt kun je juist de duplicaten markeren en deze dus later selecteren, daar doelde ik op .
    Ik ga d'r even naar kijken
    Maar voor het goede moet je dan wel de duplicaten overschijven in je database, omdat je anders de oude informatie uit je database haalt, terwijl die niet per se hetzelfde is als de informatie in je CSV (de unieke combinatie is wel hetzelfde natuurlijk, maar de andere velden misschien niet). En eigenlijk wil je de informatie uit je CSV weten...

    Aan de andere kant: ik heb nu een unieke index op firstname + lastname + email, dus als ik dat laat zien weet je op zich ook wel genoeg

    Edit: heb er inmiddels naar gekeken. Volgens mij ontkom je er niet aan om een extra kolom, zoals in jouw voorbeeld? Op zich geen ramp, maar ook niet de mooiste oplossing ... Wat had jij voor ideeën over het bijhouden met een timestamp? Dat lijkt me niet zo betrouwbaar?

    [ Bericht 13% gewijzigd door Xcalibur op 13-01-2008 12:05:28 ]
    pi_55996306
    quote:
    Op zaterdag 12 januari 2008 19:47 schreef Tarabass het volgende:

    [..]

    Ja, hier is 'ie nu ook weer goed. Ik had trouwens de <p>-tags gecommentariseerd maar als je in css de p-tag een margin van 0 meegeeft moet het wel goed gaan in beide browsers. Margin wordt standaard in verschillende browsers per tag in verschillende afstanden weergegeven wat de site lelijk kan maken. Door de margin zelf in te stellen voorkom je dat en is de margin overal hetzelfde. Succes verder met je site!
    Ik zag het! Anders viel in IE het menu over de titelkop...

    Nogmaals heel erg bedankt
    pi_56004352
    quote:
    Op zondag 13 januari 2008 11:39 schreef Xcalibur het volgende:
    Het zoeken op een geindexeerd ID gaat echt onwaarschijnlijk snel, dus ik vermoed dat de UPDATE zelf de bottleneck is zeg maar.... het toevoegen van een LIMIT zal wellicht *iets* uitmaken, maar dan heb je het toch wel over (tien?)duizenden van seconden denk ik...

    Maak anders een een benchmarkje, waarin je beide varianten 10.000 draait en de tijd bijhoudt
    Duidelijk, thanks
    ne okuyon, bokmu var?
    pi_56021586
    Als ik een simpel php servertje op mn pc wil instaleren, is dat dan mogelijk zonder dat dat ding altijd loopt? Dat ik hem alleen run wanneer nodig? Zijn er nog verschillende manieren om zon php server te maken? Ik wil hem gewoon om wat scriptjes te testen...
    pi_56021920
    quote:
    Op maandag 14 januari 2008 12:54 schreef Flaccid het volgende:
    Als ik een simpel php servertje op mn pc wil instaleren, is dat dan mogelijk zonder dat dat ding altijd loopt? Dat ik hem alleen run wanneer nodig? Zijn er nog verschillende manieren om zon php server te maken? Ik wil hem gewoon om wat scriptjes te testen...
    Je kan de server als een service installeren en daarvan kun je aangeven of die automatisch of handmatig gestart moet worden.
    pi_56021955
    quote:
    Op maandag 14 januari 2008 12:54 schreef Flaccid het volgende:
    Als ik een simpel php servertje op mn pc wil instaleren, is dat dan mogelijk zonder dat dat ding altijd loopt? Dat ik hem alleen run wanneer nodig? Zijn er nog verschillende manieren om zon php server te maken? Ik wil hem gewoon om wat scriptjes te testen...
    www.wampserver.com, voor windows, bevat alles wat nodig is om gelijk te beginnen.
    Kan je zelf aan/uit zetten.
    pi_56022589
    quote:
    Op maandag 14 januari 2008 13:11 schreef Scorpie het volgende:

    [..]

    www.wampserver.com, voor windows, bevat alles wat nodig is om gelijk te beginnen.
    Kan je zelf aan/uit zetten.
    Bedankt, ga het zo eens uitchecken!

    Als je in een mysql table een row met auto_increment hebt, kan je deze waarde dan updaten naar iets anders zonder die auto increment?

    [ Bericht 13% gewijzigd door Flaccid op 14-01-2008 14:01:31 ]
    pi_56023287
    Iemand een tip hoe ik een eenvoudige taalkeuze mogelijkheid kan bouwen?

    Op het moment include ik een van de 2 mogelijke talen door middel van de controle van een sessie. In die sessie sla ik de keuze van de taal op.

    Echter moet ik dus een knopje krijgen die een bepaalde waarde toekent aan die sessie. Ik zat te denken aan een ?language=nl in de URL toe te voegen, en die uit te lezen in de top van de code door te submitten naar PHP_SELF. Echter hebben enkele pagina's weer bepaalde waardes in de URL meegegeven, en anderen weer niet.

    Dus dacht ik aan een 'toggle' pagina. De huidige URL wordt opgeslagen in een sessie waarna je naar een pagina gaat die aan de hand van de ?language=XX in de url de sessie waarde veranderd en hij je weer terug redirect naar de URL in de sessie.

    Dat moet in principe werken, maar misschien is er nog een veel betere manier die ik niet ken
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_56023466
    Opslaan in een sessie is een goede optie. Als je het via de URL wilt meegeven kan dat bijvoorbeeld middels de http_build_query() functie. Het resultaat daarvan kun je gebruiken na de ? in de URL.

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $data 
    = array('foo'=>'bar',
                  
    'baz'=>'boom',
                  
    'cow'=>'milk',
                  
    'php'=>'hypertext processor');

    echo 
    http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor
    ?>


    Bron: http://php.net/http_build_query
    pi_56024071
    quote:
    Op maandag 14 januari 2008 14:14 schreef HuHu het volgende:
    Opslaan in een sessie is een goede optie. Als je het via de URL wilt meegeven kan dat bijvoorbeeld middels de http_build_query() functie. Het resultaat daarvan kun je gebruiken na de ? in de URL.
    [ code verwijderd ]

    Bron: http://php.net/http_build_query
    Kan je een login systeem ook het beste met sessies doen? Want ik wil nog een login systeem in mijn cms doen uiteraard.
    pi_56024136
    Ik denk trouwens dat ik i.p.v. de taal in de sessie op te slaan gebruik ga maken van een cookie, dan blijft de keuze natuurlijk onthouden.

    En ik denk dat ik dan toch maar gebruik ga maken van een toggle pagina die dan weer redirect naar de pagina waar hij vandaan kwam. Ik zou het anders ook niet weten.
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_56024182
    quote:
    Op maandag 14 januari 2008 14:40 schreef Flaccid het volgende:

    [..]

    Kan je een login systeem ook het beste met sessies doen? Want ik wil nog een login systeem in mijn cms doen uiteraard.
    Zelf maak ik ook gebruik van een sessie bij een zelfgebouwd CMS. Ik controleer dan of die sessie bestaat en of de waarde juist is, en dan geef ik pas de content weer.
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')