Autor | Zpráva | ||
---|---|---|---|
quickspider Profil |
Dobrý den,
mám tabulku s jednotlivými roky a vedle se vypisují filmy. databázi mám tak, že každému filmu je přiřazen jeho rok natočení. problém byl jak vypsat k datu všechny filmy. zatím jsem to vyřešil takto: $zaznam ="select zacatek, nazev FROM film_herec WHERE postava='semir' and serial=0 order by zacatek desc"; $vysledek = mysql_query($zaznam); while ($zaznam = mysql_fetch_array($vysledek)) { $novy=$zaznam["zacatek"]; if ($stary==$novy) { echo ', '.$zaznam["nazev"].'</td></tr>'; $stary=$novy; } else { echo '<tr><td>'.$zaznam["zacatek"].'</td><td>'.$zaznam["nazev"]; $stary=$novy; } } problém to sice vyřešilo ale kód není validní vypadá takto: <table class="tabulka_info_film"> <tr><td>2010</td><td>Geister: All Inclusive, C.I.S. - Chaoten im Sondereinsatz</td></tr><tr><td>2006</td><td>Hammer & Hart<tr><td>2002</td><td>Maximum Speed - Renn' um dein Leben!<tr><td>2000</td><td>Liebe pur<tr><td>1999</td><td>Sperling<tr><td>1995</td><td>Doppelter Einsatz, Einsatz für Lohbec</td></tr><tr><td>1994</td><td>Die Wache<tr><td>1992</td><td>Diese Drombuschs<tr><td>1990</td><td>Musik groschenweise </table> Nemohli byste mi poradit jak na to? Díky |
||
Nox Profil |
#2 · Zasláno: 2. 7. 2010, 21:36:52
validita je záležitost HTML, nevím proč to řešíš v souvislosti s PHP/MySQL... na řádku 15 ti třeba chybí na konci </td> (což ti nejspíš validátor řekl, ale nenapsal jsi to sem)
pokud je u filmu rok, tak filmy určitýho roku vytáhneš přece SELECT * FROM filmy WHERE rok=$rok (a pokud bude potřeba další tabulky, tak se naJOINují) |
||
xmark Profil |
#3 · Zasláno: 2. 7. 2010, 21:40:47
Myslím že podstatu jsem pochopil.
Musíš si prostě "pamatovat", žes začal nový řádek a neukončil ho. A když ten cyklus skončí a budeš vědět, že nemáš ukončeno, tak ho ukončit. Do jedné větve ifu bych přidal $ukonceno = true; , do druhé $ukonceno = false; |
||
quickspider Profil |
#4 · Zasláno: 2. 7. 2010, 22:09:59 · Upravil/a: quickspider
xmark: nevím jak jak by se to zapsalo. potřeboval byc testovat jestli následující film je ze stejného roku a podle toho to uzavřít
ukázka výsledku html bez použití: databáze http://www.kuban.wz.cz/k11/semir.php při pozdějším doplnění filmu k existujícímu roku už kód nesplňuje účel a nový text není v tabulce. Ví někdo jak upravit tu podmínku? |
||
quickspider Profil |
#5 · Zasláno: 3. 7. 2010, 23:41:20 · Upravil/a: quickspider
tak jsem se to pokusil vyřešit pomocí pole. Je to jiný kus kódu, ale princip je stejný.
$dotaz ="select distinct (rada) FROM dily join hraje using (de) WHERE semir=1"; $vysledek = mysql_query($dotaz); for ($i = 1; $radek = mysql_fetch_assoc ($vysledek); $i++) { $pole[$i] =$radek["rada"]; } $pocet=$i-1; for ($i=1; $i=$pocet; $i++) { echo $pole[$i].', '; } ale podmínka $i=$pocet nefunguje a zacyklí se to. mohl by mi někdo poradit proč se to cyklí a jak to vyřešit? díky za radu. |
||
Webb Profil |
#6 · Zasláno: 3. 7. 2010, 23:55:55 · Upravil/a: Webb
for ($i=1; $i<=$pocet; $i++) { echo $pole[$i].', '; } cyklus se provádí když podminka souhlasí, u tvého případu ne. protože $i se s největčí pravděpodobností nerovná $pocet. |
||
xmark Profil |
#7 · Zasláno: 4. 7. 2010, 00:10:16 · Upravil/a: xmark
quickspider
ok, tak ještě jednou: o co se jedná? O to, že tam máš neukončený <tr>? Tak si prostě musíš hlídat otevření každého <tr> a jeho uzavření. Když dokončíš ten cyklus a víš, žes <tr> neukončil, tak to udělej. |
||
Str4wberry Profil |
#8 · Zasláno: 4. 7. 2010, 10:56:52
Nebo stačí použít HTML, které zbytečné uzavírající značky k validitě nevyžaduje.
|
||
quickspider Profil |
#9 · Zasláno: 4. 7. 2010, 22:11:33 · Upravil/a: quickspider
Webb díky za vysvětlení.
xmark: mám tabulku v databázi, kam do jednoho sloupce vkládám rok a do druhého daný film. jako výstup potřebuju tabulku kde je rok a vypsané filmy oddělené čárkou. někde je filmů více, někde jen jeden. $vysledek = mysql_query($zaznam); while ($zaznam = mysql_fetch_array($vysledek)) { $novy=$zaznam["zacatek"]; if ($pamatuj!==$novy) { echo '</td></tr>'; } if ($stary==$novy) { echo ', '.$zaznam["nazev"]; $stary=$novy; } else { echo '<tr><td>'.$zaznam["zacatek"].'</td><td>'.$zaznam["nazev"]; $stary=$novy; $pamatuj=$novy; } } vygenerovaný výstup je špatně. Neuzavírá buňka, která obsahuje více filmů. <table class="tabulka_info_film"> </td></tr><tr><td>2010</td><td>Deutschland sucht den Superstar</td></tr><tr><td>2009</td><td>DAS!, Die ultimative Chartshow, Krömer - Die internationale Show </table> |
||
xmark Profil |
#10 · Zasláno: 4. 7. 2010, 22:42:46
quickspider:
ok, je to trochu jinak, než jsem myslel, ale na principu a mém návrhu to nic nemění. Zkus rozluštit, jak to funguje tady: $vysledek2 = mysql_query( $qry); $num_rows2 = mysql_num_rows($vysledek2); if ($num_rows2 > 0 ) { $foteknaradek = 4; $vradku = 0; echo "<table id='gallery'><tr>"; while ($zaznam2=MySQL_Fetch_Array($vysledek2)): if ($zaznam2["filename"] != "" ) { if ($vradku == $foteknaradek ){ echo "<tr>";$vradku=0;}; echo "<td><a href ='galerie/".$zaznam2["filename"].".".$zaznam2["ext"]."'>"; echo "<img src ='galerie/".$zaznam2["filename"]."-tn.".$zaznam2["ext"]."'>"; echo "</a></td>"; $vradku = $vradku+ 1; if ($vradku == $foteknaradek ) { echo "</tr>";}; }; endwhile; if ($vradku !== $foteknaradek ) { for ($i = $vradku; $i < $foteknaradek; $i++) { echo "<td> </td>"; } echo "</tr>"; }; echo "</table>"; }; Je to tabulka, kde zobrazuju fotky v $foteknaradek sloupcích. |
||
quickspider Profil |
#11 · Zasláno: 5. 7. 2010, 14:16:45
xmark:
nějak si nerozumíme: není to to galerie fotek z filmu, ale jen seznam - názvy filmů v daném roce. ještě mě napadlo, že bych to mohl zkusit vypsat jako pole a porovnávat 2 hodnoty, jestli patří ke stejnému roku. Jestli to není moc složité. Jinak díky za snahu. |
||
Časová prodleva: 14 let
|
0