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
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
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
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
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
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
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
Nebo stačí použít HTML, které zbytečné uzavírající značky k validitě nevyžaduje.
quickspider
Profil
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
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>&nbsp;</td>";
    }
    echo "</tr>";
  };
  
  echo "</table>";
};


Je to tabulka, kde zobrazuju fotky v $foteknaradek sloupcích.
quickspider
Profil
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.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0