Új hozzászólás Aktív témák

  • cucka

    addikt

    válasz Sk8erPeter #3189 üzenetére

    Nem igazán értem, hol akadtál el. Valahogy így oldanám meg:

    $tomb=array();
    $elozonev=null;
    $res=mysql_query("select * from tablanev order by nev asc");
    while ($row=mysql_fetch_assoc($res)){
    $tomb[]=$row;
    }
    for ($i=0;$i<count($tomb);$i++){
    if ($i==0 || $tomb[$i]['nev']!=$tomb[$i-1]['nev']{
    //nagy kep kiirasa
    print '<img src="'.$tomb[$i]['nagy_kep_url'].'"" />';
    } else {
    //kis kep kiirasa
    print '<img src="'.$tomb[$i]['kis_kep_url'].'"" />';
    }
    if (!isset($tomb[$i+1]) || $tomb[$i+1]['nev']!=$tomb[$i]['nev']){
    print 'Kutya neve: '.$tomb[$i]['nev'];
    }
    }

    A program név szerint abc sorrendben kiír minden kutyához egy nagy képet, n darab kis képet és a végén a kutya nevét.
    A lényeg: végigiterálunk a sorokon és azt figyeljük, hogy mikor érünk el egy új kutya adataihoz. Ha új kutyához érünk, akkor nagy képet írunk ki, különben kis képet. Ha a következő kép már egy új kutyához tartozik, akkor kiírjuk a kutya nevét.
    Az adatok kutyanév szerint vannak rendezve, tehát olyan nem fog előfordulni, hogy egy korábban kiírt kutyához tartozó sorral találkozunk.
    Azért rakom ki a mysql-ből érkező adatokat egy tömbbe, mert az iteráció során szükségem van az előző és a következő sorra is. Feltételezem, nincs több százezer sor a táblában, így nem fog gondot okozni a script futtatása. (A lehetséges probléma az lehet, hogy nem elég a php programnak engedélyezett memóriamennyiség, ami általában 16 mega.)

Új hozzászólás Aktív témák