abonnement Unibet Coolblue Bitvavo
pi_51892341
quote:
Op vrijdag 27 juli 2007 16:08 schreef Geqxon het volgende:

[..]

Mwa, userfriendly wil ik het niet noemen,
Dat kan net zo userfriendly zijn als via een database, het ligt maar net aan de vereisten.
quote:
om over de snelheid maar te zwijgen.
Wat? Ga jij nu beweren dat een include trager is dan alle opties via een functie uit de database te trekken?
  vrijdag 27 juli 2007 @ 17:12:34 #252
84926 WyriHaximus
Release the hounds smithers!
pi_51892442
quote:
Op vrijdag 27 juli 2007 16:59 schreef Geqxon het volgende:

[..]

Een config class om de configuratie op te vragen? Voor iets dat in vijf regeltjes code kan?
1 config class in 5 regels .

1
2
3
4
5
6
7
<?php
class config_class
{
    function 
__construct() { self::_settings unserialize(file_get_contents('config file')); }
    function 
get_settings($index) {  return self::_settings[$key]; }
}
?>
phluphy for president!
pi_51892477
quote:
Op vrijdag 27 juli 2007 17:09 schreef JeRa het volgende:

Wat? Ga jij nu beweren dat een include trager is dan alle opties via een functie uit de database te trekken?
Elke keer hardeschijfactiviteit versus elke keer databaseactiviteit? Ik gok dat een database sneller werkt. Gok ik.
  vrijdag 27 juli 2007 @ 17:18:58 #254
84926 WyriHaximus
Release the hounds smithers!
pi_51892612
quote:
Op vrijdag 27 juli 2007 17:13 schreef Geqxon het volgende:

[..]

Elke keer hardeschijfactiviteit versus elke keer databaseactiviteit? Ik gok dat een database sneller werkt. Gok ik.
I/O actie:
  • Hit naar het bestand
  • Bestand in 1 ruk uitlezen

    SQL:
  • Connectie openen naar de server
  • Autenticeren
  • Database selecteren
  • Query opdracht geven
  • - Hit naar de tabel bestanden, mits het niet nog in de cache staat
  • - Door het bestand gaan zoeken
  • - Results samen stellen en dusnoods sorteren
  • Results van de database ontvagen


    Weet niet zeker maar gok dat database toch trager is...
  • phluphy for president!
    pi_51892626
    quote:
    Op vrijdag 27 juli 2007 17:13 schreef Geqxon het volgende:

    [..]

    Elke keer hardeschijfactiviteit versus elke keer databaseactiviteit? Ik gok dat een database sneller werkt. Gok ik.
    Net zoals bij een database heb je maar één keer schijfoverhead doordat daarna de block cache de read kan opvangen. Verder heb je deze additionele overhead bij de database:
    1) Het openen van de verbinding (TCP is trager dan een lokale socket, bv)
    2) Het parsen van de query
    3) Het plannen van de query
    4) Het checken van de rechten op de betrokken relations (database, tabellen, kolommen)
    5) De resultset teruggeven en intern door PHP naar de juiste variabelen laten omzetten
    pi_51892672
    quote:
    Op vrijdag 27 juli 2007 17:18 schreef WyriHaximus het volgende:

    [..]

    I/O actie:
  • Hit naar het bestand
  • Bestand in 1 ruk uitlezen

    SQL:
  • Connectie openen naar de server
  • Autenticeren
  • Database selecteren
  • Query opdracht geven
  • - Hit naar de tabel bestanden
  • - Door het bestand gaan zoeken
  • - Results samen stellen en dusnoods sorteren
  • Results van de database ontvagen


    Weet niet zeker maar gok dat database toch trager is...
  • bij je I/O actie vergeet je alleen dat dit door de HD moet gebeuren, een database actie zal in het geheugen van de server gebeuren (die ,na een tijdje, ook wel weer I/O heeft maar toch)
      vrijdag 27 juli 2007 @ 17:23:08 #257
    84926 WyriHaximus
    Release the hounds smithers!
    pi_51892716
    quote:
    Op vrijdag 27 juli 2007 17:20 schreef mschol het volgende:

    [..]

    bij je I/O actie vergeet je alleen dat dit door de HD moet gebeuren, een database actie zal in het geheugen van de server gebeuren (die ,na een tijdje, ook wel weer I/O heeft maar toch)
    Heb het er al bij gezet . (Database stuk dan.) Daarnaast cached je HDD ook het 1 en ander .
    phluphy for president!
    pi_51892720
    quote:
    Op vrijdag 27 juli 2007 17:20 schreef mschol het volgende:

    [..]

    bij je I/O actie vergeet je alleen dat dit door de HD moet gebeuren, een database actie zal in het geheugen van de server gebeuren (die ,na een tijdje, ook wel weer I/O heeft maar toch)
    Die database zal in eerste instantie toch echt iets van de harde schijf moeten halen, en na de eerste I/O-actie bij een include zit de boel in de block cache
    pi_51893284
    quote:
    Op vrijdag 27 juli 2007 15:51 schreef Geqxon het volgende:

    [..]

    Daar heb ik een settings-tabel in de database voor. Waarbij alles via getSetting($instelling) op te vragen is.
    En je database settings, waar sla je die op?

    Ik heb een Settings klasse die gebruik ik zo:

    1
    2
    3
    4
    5
    6
    7
    <?php
    $settings 
    Settings::getInstance();
    $settings->import('config.ini');

    $hostname $settings->get('database.hostname');
    $username $settings->get('database.username');
    ?>


    En die config.ini kan ik weer wijzigen via een formulier. Werkt handig.
    pi_51900143
    Om weer op het OO puntje uit te komen: super-muffin hierboven gebruik bijvoorbeeld een setting-classe. Maar is je complete systeem / website dan ook Object Oriented?
      zaterdag 28 juli 2007 @ 05:25:12 #261
    71919 wonderer
    Hung like a My Little Pony
    pi_51907531
    Misschien vindt iemand het leuk om hier mee te spelen, ik krijg mijn brein er niet omheen gevouwen op dit moment.

    Ik heb alle menu-items in een tabel zitten. Het veld link_parent_id vertelt van welke sectie het een onderdeel is (de bovenste laag is natuurlijk alleen parent, dus daar is ie leeg) en het veld link_level geeft aan hoe diep ie gaat.

    Nu wil ik een recursieve functie die de tabel uitleest en elk menu-item op de juiste plek zet, en met de juiste stijl zodat het visueel ook in orde komt (<li class="menu_level_'.$link_level.'"> voldoet daar prima);

    Ik weet niet hoeveel levels er zijn (nou ja, op dit moment wel, en ik denk ook niet dat het echt gaat veranderen, maar je weet nooit en ik wil geen while-loopjes hoeven blijven toevoegen). Hij moet zichzelf dus aanroepen tot alles klaar is.

    Iemand enig idee? Twee functies, denk ik? Eentje voor de buitenkant ($menu='<ul>'; $menu.=make_inner_menu($level); $menu.='</ul>';

    En dan make_inner_menu($level) {
    select from menu where level = $level;
    while(result){
    $menu.=style linkje naam;
    $menu.=make_inner_menu($level+1);
    }
    return $menu;

    ?

    Of wordt dat een oneindige loop? Of is het anderszins nogal dom om het zo te doen?
    "Pain is my friend. I can trust pain. I can trust pain to make my life utterly miserable."
    "My brain is too smart for me."
    "We don't need no education." "Yes you do, you just used a double negative."
    pi_51908110
    quote:
    Op zaterdag 28 juli 2007 05:25 schreef wonderer het volgende:
    Menu uit tabel
    ok dit is misschien geen antwoord op je vraag maar mijn mening, waarom zou je een verbinding opzetten met je database voor een paar menuitems O_O, zo kan het ook?

    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
    <?php
    $menu 
    =
    array(
    "item1" =>
          array (
    "subitem1" => "linkje",
                 
    "subitem2" => "linkje",
                 
    "subitem3" =>
                 array(
    "subsubitem1" => "linkje",
                       
    "subsubitem2" => "linkje"
                      
    )
                ),
          
    "item2" => "linkje",
          
    "item3" =>
          array (
    "subitem1" => "linkje",
                 
    "subitem2" => "enzovoort"
                
    )
         );

    function 
    bouwmenutje(array $menu) {
        
    $result "";
        foreach(
    $menu as $item => $submenu)
            if(
    is_array($submenu))
                
    $result .= "$item" bouwmenutje($submenu);
            else
                
    $result .= "<a href=$submenu>$item</a>";
        return 
    $result;
    }
    ?>
    pi_51908503
    quote:
    Op vrijdag 27 juli 2007 16:23 schreef WyriHaximus het volgende:
    Hmmm dit moet nog voor mod_rewrite gebeuren of tijdens PHP of nog voor mod_rewrite, want dat was me nog niet helemaal duidelijk . * WyriHaximus is niet echt wakker vandaag
    Op het moment doe ik het in PHP, maar dat vind ik niet zo'n mooie oplossing....
    Het is de bedoeling dat het in de .htaccess, vóór de rest van de mod_rewrite gaat gebeuren

    En één optie om het te doen is met RewriteMap, maar daar heb je weer een extra txt-bestandje voor nodig, en daar zit ik ook niet op te wachten
    pi_51908830
    quote:
    Op zaterdag 28 juli 2007 05:25 schreef wonderer het volgende:
    ?
    Dan moet je dus voor elk sub-menu een query uitvoeren. Ik denk dat het een stuk sneller is om alle menu items in één keer te lezen (gesorteerd op level). Met php loop je door de resultaten heen en bouw je een array van array's op (van hoog naar laag). Die plak je dan recursief aan elkaar tot het uiteindelijke menu in html.
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
    pi_51909340
    quote:
    Op vrijdag 27 juli 2007 22:15 schreef Geqxon het volgende:
    Om weer op het OO puntje uit te komen: super-muffin hierboven gebruik bijvoorbeeld een setting-classe. Maar is je complete systeem / website dan ook Object Oriented?
    Jup. Alhoewel ik het systeem wel ga herschrijven voor een groot deel, maar dan ook op een OO manier.
    pi_51910371
    Ik wil XML naar SQL converteren. De meeste dingen lukken wel, maar er is een deel dat er zo uitziet:

    <item id='blabla'>
    <inside>
    <item id='pa'>
    <item id='po'>
    <item id='pe'>
    <inside>
    <item id='at'>
    </inside>
    <item id='it'>
    </inside>

    Dit moet in een db die er zo uitziet:

    pid | sid | item
    Pid is parent id, en sid is het itemnummertje.

    Dus met het voorbeeld moet het er zo uitzien:

    pid | sid | item
    1 | 102 | blabla
    blabla | 103 | pa
    blabla | 104 | po
    blabla | 105 | pe
    pe | 106 | at
    blabla | 107 | it

    Ik heb geen idee hoe ik dit moet doen, want die <inside>'s gaan heel lang door..
    Dingen met 1 value als <acc number='101'> lukken nog wel, maar dit niet
    Ideeen?

    [ Bericht 90% gewijzigd door Scriptha op 28-07-2007 12:29:25 ]
    pi_51911171
    Je moet de hele lijst in een loop afgaan en in een variabele bijhouden in welke scoop je zit, maw binnen welk <inside> blok.. Aangezien die blokken meerdere niveaus diep kunnen gaan kun je daar het beste een array voor gebruiken waar je bij een <inside> een element aan toevoegt en bij </inside> deze weer verwijdert. In pseudocode:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var $scope = new Array()
    var $lastid = ""
    $scope[0] = ...   # volgummer of initiele waarde

    for each $elem in $elems {
       if $elem == <item> {
          insert into table (pid, item) values ($scope[0], $elem->id)
          $lastid = $elem->id
       } else if $elem == <inside> {
          unshift $scope, $lastid   # voeg nieuw element op pos 0 toe
       } else if $elem == </inside> {
          shift $scope   # verwijder element op pos 0
       }
    }


    [ Bericht 3% gewijzigd door Farenji op 28-07-2007 13:10:55 ]
      zaterdag 28 juli 2007 @ 15:29:38 #268
    84926 WyriHaximus
    Release the hounds smithers!
    pi_51913593
    quote:
    Op vrijdag 27 juli 2007 22:15 schreef Geqxon het volgende:
    Om weer op het OO puntje uit te komen: super-muffin hierboven gebruik bijvoorbeeld een setting-classe. Maar is je complete systeem / website dan ook Object Oriented?
    In mijn situatie is alles OO . Maakt het makkelijker en overzichtelijker om bepaalde blokken die iets doen (bijvoorbeeld mijn wow screenshots weergeven op verschillende manieren) appart te houden .
    quote:
    Op zaterdag 28 juli 2007 10:19 schreef Xcalibur het volgende:

    [..]

    Op het moment doe ik het in PHP, maar dat vind ik niet zo'n mooie oplossing....
    Het is de bedoeling dat het in de .htaccess, vóór de rest van de mod_rewrite gaat gebeuren

    En één optie om het te doen is met RewriteMap, maar daar heb je weer een extra txt-bestandje voor nodig, en daar zit ik ook niet op te wachten
    Ik zou het dan gewoon bij PHP houden . Doe het zelf ook zo en bevalt prima . RewriteMap kan ook maar dan heb je je extra bestandje .
    phluphy for president!
    pi_51915040
    ja, maar dat was nou net niet m'n vraag
      zaterdag 28 juli 2007 @ 16:46:33 #270
    84926 WyriHaximus
    Release the hounds smithers!
    pi_51915440
    quote:
    Op zaterdag 28 juli 2007 16:30 schreef Xcalibur het volgende:
    ja, maar dat was nou net niet m'n vraag
    Je kunt het trouwens toch ook met mod_rewrite doen gewoon? Alleen moet je dan tot vrij diep gaan genereren . (ff voorbeeldje maken)
    phluphy for president!
      zaterdag 28 juli 2007 @ 16:56:15 #271
    62215 qu63
    ..de tijd drinkt..
    pi_51915715
    quote:
    Op zaterdag 28 juli 2007 16:46 schreef WyriHaximus het volgende:

    [..]

    Je kunt het trouwens toch ook met mod_rewrite doen gewoon? Alleen moet je dan tot vrij diep gaan genereren . (ff voorbeeldje maken)
    deze pagina doet het neit echt trouwens bij je
    It's Time To Shine
    [i]What would life be like without rhethorical questions?[/i]
      zaterdag 28 juli 2007 @ 17:00:09 #272
    84926 WyriHaximus
    Release the hounds smithers!
    pi_51915814
    quote:
    Op zaterdag 28 juli 2007 16:56 schreef qu63 het volgende:

    [..]

    deze pagina doet het neit echt trouwens bij je
    Heb me forum verplaatst . En was dat ff vergeten ja .
    phluphy for president!
    pi_51916496
    quote:
    Op zaterdag 28 juli 2007 16:46 schreef WyriHaximus het volgende:
    Je kunt het trouwens toch ook met mod_rewrite doen gewoon? Alleen moet je dan tot vrij diep gaan genereren . (ff voorbeeldje maken)
    Ja, dat deed ik eerst, tot 3 niveau's.... tot ik tegen niveau 4 aanliep, etc.
    En ik ben nou met een webshop bezig waar het aantal niveau's in principe onbeperkt is... en dat wil ik niet gaan voorbereiden
      zaterdag 28 juli 2007 @ 17:38:20 #274
    84926 WyriHaximus
    Release the hounds smithers!
    pi_51916956
    quote:
    Op zaterdag 28 juli 2007 17:23 schreef Xcalibur het volgende:

    [..]

    Ja, dat deed ik eerst, tot 3 niveau's.... tot ik tegen niveau 4 aanliep, etc.
    En ik ben nou met een webshop bezig waar het aantal niveau's in principe onbeperkt is... en dat wil ik niet gaan voorbereiden
    Het is toch niet zo bar moeilijk om een scripte te maken wat het tot op 500 niveau's genereerd voor je?
    phluphy for president!
      zaterdag 28 juli 2007 @ 17:38:57 #275
    62215 qu63
    ..de tijd drinkt..
    pi_51916969
    quote:
    Op zaterdag 28 juli 2007 17:00 schreef WyriHaximus het volgende:

    [..]

    Heb me forum verplaatst . En was dat ff vergeten ja .
    loopt nog steeds niet hoor
    It's Time To Shine
    [i]What would life be like without rhethorical questions?[/i]
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')