Likes Likes:  0
Resultaten 1 tot 2 van de 2
Geen
  1. #1
    Jonathan
    [PHP] while loop probleem
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    [PHP] while loop probleem

    Hoi,

    ik heb een stukje code geschreven met een fout erin maar ik ben er nu al
    uren naar aan het staren en zie niet hoe ik het kan oplossen. Misschien kan
    iemand me even helpen. Het gaat om het volgende stukje code:

    $timestamps = Array(); // Array that will hold timestamps to display
    $twoweeks = 60*60*24*7*2; // Number of seconds in 2 weeks
    $now = time(); // Current timestamp
    $items_query = "SELECT timestamp FROM items ORDER BY timestamp DESC";
    $items_result = mysql_query($items_query) or die("mysql error
    ".mysql_errno().": ".mysql_error());

    while ($items_object = mysql_fetch_object($items_result))
    {
    $twoweeksago = $now - $twoweeks;
    if (($items_object->timestamp <= $now) && ($items_object->timestamp >
    $twoweeksago))
    { $timestamps[$now]++; } else { $now = $twoweeksago; }
    }
    while (list ($key, $val) = each ($timestamps))
    {
    if ($val>0)
    {
    echo "output";
    }
    }

    Het gaat er hierbij om dat ik een overzicht wil echo'en naar een webpagina
    die alle periodes van 2 weken laat zien waarin items voorkomen. Als er geen
    items voorkomen in die 2 weken dan moet ie niks laten zien. Dus ik dacht ik
    tel hoevaak er items voorkomen in een periode en zet die in een Array die ik
    later doorloop met een if ($val). Probleem is nu echter als er precies 1
    item voorkomt dat hij die 2 weken niet laat zien. Logisch want dan gaat het
    if statement in de 1e while-loop niet op. Eigenlijk zou ik zoiets moeten
    hebben als een label waarin ik kan verwijzen om naar terug te keren:

    while ($items_object = mysql_fetch_object($items_result))
    {
    $twoweeksago = $now - $twoweeks; // hier plaats ik dan een 'label'
    if (($items_object->timestamp <= $now) && ($items_object->timestamp >
    $twoweeksago))
    { $timestamps[$now]++; } else { $now = $twoweeksago; // en hier een goto
    'label' }
    }

    Volgens mij kan dat niet ik PHP en het zal wel aan een onhandige constructie
    liggen, maar zoals ik al zei ik zie ff niet meer hoe ik het wel kan
    oplossen.
    Iemand een suggestie???????

    Alvast bedankt!

    Jonathan



  2. #2
    Daniel Tryba
    [PHP] while loop probleem
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: [PHP] while loop probleem

    Jonathan <jonathan@nospam-tricolon.com> wrote:
    > while ($items_object = mysql_fetch_object($items_result))
    > {
    > $twoweeksago = $now - $twoweeks; // hier plaats ik dan een 'label'
    > if (($items_object->timestamp <= $now) && ($items_object->timestamp >
    > $twoweeksago))
    > { $timestamps[$now]++; } else { $now = $twoweeksago; // en hier een goto
    > 'label' }
    > }


    PHP heeft inderdaad geen goto. Soms een gemis (voor een quickhack), maar
    nooit strict noodzakelijk.

    > Volgens mij kan dat niet ik PHP en het zal wel aan een onhandige constructie
    > liggen, maar zoals ik al zei ik zie ff niet meer hoe ik het wel kan
    > oplossen.
    > Iemand een suggestie???????


    Het kan zijn dat ik je verkeert begrepen heb maar ik vind je code
    nodeloos ingewikkeld. Je hebt namelijk mysql tot je beschiking staan,
    dus waarom zou je de moeite nemen om eerst allerlei gegevens over te
    halen naar PHP en daarmee te gaan rekenen, volgens mij is een redelijk
    simpel alternatief, voor het vullen van het timestamps array:

    <?php
    $min=mysql_fetch_row(mysql_query('select min(timestamp) from items')));

    for($now=time(),$timestamps=array();$now>$min[0];$now-=1209600)
    {
    if($n=mysql_num_rows(mysql_query("select timestamp from items where timestamp>=($now-1209600) and timestamp<$now"))>0)
    {
    $timestamps[$now]=$n;
    }
    }
    ?>

    Niet getest maar ik neem aan dat het wel duidelijk is waar ik heen wil.

    BTW Met count() kan het wellicht nog efficienter.

    --

    Daniel Tryba


Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics