Pähkinä purtavaksi
haen php:llä taulusta rivejä ja jos rivejä löytyy useampi samalta timestampilta niin miten saisin ne samaan diviin tulostettua?
varmaan onnistuisi sql:llä, mutta onnistuuko php:llä?
eli pitäisi jotenkin vertailla edellistä riviä foreach:sa?
vai olenko ihan väärillä jäljillä?
Ihan mielenkiinnosta kysyn että mihin tarvitset tälläistä, jossa rivejä tulostetaan eri ryhmiin sekunnin tarkkuudella.
Mutta käyt vaikka koko taulukon läpi foreach:llä, ja vertaat onko timestamp-arvo sama kuin edellinen. Jos oli muuttunut, niin tulostat divin lopputagit edelliselle, ja alkutagit seuraavalle diville. Ei pitäisi olla kovin vaikea homma.
Ehkä helpompaa olisi tehdä niistä taulukko.
Oikeastaa tuo ensimmäinen kysymys ei ole tarpeeksi tarkka.
Haluasin siis kannasta tulostaa dataa diveihin ja jos on saman tyylistä peräkkäin niin samaan diviin.
Eli
kanta
id,foo,nimi
0, 123, matti
1, 123, pertti
2, 123, pertti
3, 124, pertti
4, 123, matti
5, 123, pertti
Nyt php&mysql yhdistelmällä pitäisi saada tulostettua sivuille aina div:n sisään rivit. Esimerkin kannassa vaan pitäisi saada id:t 1 ja 2 samaan diviin ja muut eriin. Tätä olen tässä miettiny ja nyt ei vaan tajua.
Eli lyhyesti kaksi samaa tietoa rivillä ja voi olla vaikka 5 peräkkäin niin tulostuu samaan diviin.
Käy tulokset läpi silmukassa ja jos foo ja nimi ei ole muuttunut edellisestä kierroksesta niin tulostat ne ilman mitään lisukkeita. Sitten kun huomaat että ne oli muuttuneet edellisistä arvoista niin tulostat aina "</div><div>" ja sen jälkeen foo, nimi. Näin yksinkertaisesti sanottuna.
miten teen tuon vertauksen? jos esim 4 samaa peräkkäin?
ei nyt ajatus kulje.
Vertaa vain joka kerta riviä edelliseen riviin. Jos rivillä on useampi sarake, jonka muuttumisen pitää vaihtaa DIV:iä, hankaloituu homma hieman. En ole testannut tätä mitenkään, mutta idean pitäisi ainakin tulla selväksi:
$r2 = null; while ($rivi = $kysely->fetch (PDO::FETCH_NUM)) { $r1 = array_slice ($rivi, 1); if ($r1 != $r2) { // uusi DIV } $r2 = $r1; // tulosta rivi }
Array_slice-funktiolla otetaan rivistä muut sarakkeet paitsi id. Sen jälkeen vertaillaan, poikkeaako jäljelle jäänyt rivin osa edellisestä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.