Autor | Zpráva | ||
---|---|---|---|
cmelak Profil |
#1 · Zasláno: 21. 3. 2009, 23:03:07 · Upravil/a: cmelak
Zdravím všechny.
Řeším takovýto problém: Mám v databazi jídla které vypisuju na webu, to jsem zvládnul(např.): (jedna tabulka v databázi) chleba houska rohlik ale otřeboval bych nějak udělat aby se nad ten seznam zobrazilo: pečivo chleba houska rohlik pití voda kola juice proste aby se vypsal z databaze seznam s nadpisem me se nedari aby se ten nadpis zobrazil jen jednou, protože je to v ciklu kde se to pokaždy zobrazi kod vypadá takto: na tom začátku vypisování jsem se nějak snažil o vypsání jen jednou, ale prostě nevím jak na to: $dotaz="SELECT * FROM jidla ,skupinyjidel WHERE jidla.SkupinaJidel=skupinyjidel.Razeni"; //vytvoření sql dotazu $vysledek = MySQL_Query($dotaz); // provedení sql dotazu $jednou = ""; $poc = mysql_num_rows($vysledek); while ($poc>1) { $zaznam = MySQL_Fetch_Array($vysledek); if ($jednou==$zaznam["NazevSkupiny"]){ $NazevSkupiny = $zaznam["NazevSkupiny"]; } print $NazevSkupiny; $jednou = 1; if ($zaznam){ ?> <tr class="text"> <td width="25"><? print $zaznam["PoradoveCislo"]; ?></td> <td width="30"><? if ($zaznam["Gramaz"]) {print $zaznam["Gramaz"] . "g";}?></td> <td width="245"><? print $zaznam["NazevJidla"]; ?><br><? if ($zaznam["Popis"]){ print "(".$zaznam["Popis"].")";}?></td> <td class="cena"><? print $zaznam["Cena"]; ?> Kč</td> <? } $zaznam = MySQL_Fetch_Array($vysledek); if ($zaznam){ ?> <td width="10"></td> <td width="25"><? print $zaznam["PoradoveCislo"]; ?></td> <td width="30"><? if ($zaznam["Gramaz"]) {print $zaznam["Gramaz"] . "g";}?></td> <td width="245"><? print $zaznam["NazevJidla"]; ?><br><? if ($zaznam["Popis"]){ print "(".$zaznam["Popis"].")";}?></td> <td class="cena"><? print $zaznam["Cena"]; ?> Kč</td> </tr> <? } $poc=$poc-1; } ?> Děkuji moc za pošťouchnutí |
||
Joker Profil |
#2 · Zasláno: 21. 3. 2009, 23:19:02
cmelak
Jedna možnost je například: $dotaz="SELECT * FROM jidla ,skupinyjidel WHERE jidla.SkupinaJidel=skupinyjidel.Razeni"; Možná raději: SELECT * FROM jidla JOIN skupinyJidel ON jidla.skupinaJidel = skupinyJidel.razeni - to první nejdřív vyrobí tabulku obsahující všechny kombinace těch dvou a potom z ní vybírá řádky, to druhé vyrobí rovnou jen tabulku se "smysluplnými" řádky. Krom toho je dobré mít u řádků identifikátory a tabulky propojovat přes ně (nevím, jaký účel má sloupec razeni) Samotný problém by šel řešit třeba tak, že se tabulka seřadí podle druhů jídla (klauzule ORDER BY v SQL dotazu) a PHP si pak vždycky bude pamatovat předchozí použitý nadpis a pokud ten nový bude jiný, vypíše nový nadpis. |
||
cmelak Profil |
#3 · Zasláno: 21. 3. 2009, 23:34:20
Děkuji za radu, ale ten příklad dělá to samé, jako ten muj originální:
takhlee vypada výpis: ID PoradoveCislo NazevJidla Popis Cena Gramaz SkupinaJidel ID NazevSkupiny Razeni 1 001 HOVĚZÍ CARPACCIO plátky svíčkové, ... 99 80 1 1 Předkrmy 1 2 003 polevka slepičí 79 0 2 2 Polévky 2 a v ciklu se mi ten "NazevSkupiny" vypíše pokaždy, nechápu to vysledek bych potřeboval tak to zde tohle je psany v asp a tak jak to je v tom kodu ne to nefunguje :( |
||
Alphard Profil |
#4 · Zasláno: 22. 3. 2009, 00:19:34
$skupina = ""; while ($line = mysql_fetch_array ($vysledek)) { if ($skupina != $line['NazevSkupiny']) { $skupina = $line['NazevSkupiny']; echo $line['NazevSkupiny']; } // zbytek zpracování } |
||
cmelak Profil |
#5 · Zasláno: 22. 3. 2009, 11:39:09 · Upravil/a: cmelak
Dik Alphard pomohlo to.
|
||
Časová prodleva: 15 let
|
0