Ongelmani on seuraavanlainen, yritän tehdä mysql hakua jossa saisin lajiteltua niin että haettavan kohteen vuosi näkyisi vain ensimmäisessä eli ei kaikissa, ja sittenkun vuosi vaihtuu seuraavaan se näkyisi taas vain ensimmäisessä.
<?php $sqlw = mysql_query("SELECT id,otsikko,vuosi,tyot,osoite FROM valvontak ORDER by vuosi DESC"); } while (list($id, $otsikko, $vuosi, $tyot, $osoite) = mysql_fetch_row($sqlw)) { echo " <div style='margin-top:3px;height:30px;'> ".$otsikko."<div style='width:230px;margin-top:0; height:25px;float:right;'> ".$tyot."</div><br/><div style='font-size:11px;height:10px;margin-top:2px;margin-left:5px;'>".$osoite."</div></div> <div style='border-bottom:1px solid #B9B9B9;width:95%;height:5px;'></div> "; ?>
Luo jokin apumuuttuja, vaikka $vanha_vuosi. Sijoita siihen joka kierroksen lopussa ko. kierroksen $vuosi-muuttujan sisältö. Tarkista silmukan alussa, onko $vuosi sama kuin $vuosi_vanha ja määrittele sillä onko $vuosi tulostettava vai ei.
<?php $sqlw = mysql_query("SELECT id,otsikko,vuosi,tyot,osoite FROM valvontak ORDER by vuosi DESC"); $vanha_vuosi = 0; while (list($id, $otsikko, $vuosi, $tyot, $osoite) = mysql_fetch_row($sqlw)) { if($vuosi != $vanha_vuosi) { echo $vuosi; } $vanha_vuosi = $vuosi; echo " <div style='margin-top:3px;height:30px;'> ".$otsikko."<div style='width:230px;margin-top:0; height:25px;float:right;'> ".$tyot."</div><br/><div style='font-size:11px;height:10px;margin-top:2px;margin-left:5px;'>".$osoite."</div></div> <div style='border-bottom:1px solid #B9B9B9;width:95%;height:5px;'></div> "; ?>
Kiitos, empä tuota olisi itse ihan heti keksinytkään!
Jos tuota haluaa vielä optimoida, niin sijoittaa tuon muuttujan $vanha_vuosi käpistelyn iffin sisään. Jos vanha vuosi on sama kuin vuosi niin ihan turhaan sitä silloin käsittelee. Vaikka käytännössä tällä ei ole varmaan yhtään mitään merkistystä, mutta kuitenkin...
while (list($id, $otsikko, $vuosi, $tyot, $osoite) = mysql_fetch_row($sqlw)) { if($vuosi != $vanha_vuosi) { echo $vuosi; $vanha_vuosi = $vuosi; } echo ... }
Mod. lisäsi kooditagit
Monissa tapauksissa yksinkertaisempi vaihtoehto on kerätä tulokset taulukkoon vuoden mukaan:
Aihe on jo aika vanha, joten et voi enää vastata siihen.