Autor Zpráva
Berny
Profil
Zdravím,
rád bych se zeptal, jestli jde spojit příkaz WHILE a FOR - popřípadě, jestli se k tomu nedá využít jiné příkazy.

Zkrátka potřebuji sloučit tyto cykly:

$sql = "SELECT jmeno 

FROM tabulka
ORDER BY jmeno ASC
LIMIT 9";
$res = @mysql_query($sql);echo mysql_error();
while ($row = @mysql_fetch_array($res))
{
echo "$row[jmeno]";
}
a cyklus

echo "<table border=/"1/">"; 

for ($i=1; $i<=3; $i++) {
echo "<tr>";
for ($j=1; $j<=3; $j++) {
echo "<td>$jmeno</td>";
}
echo "</tr>";
}
echo "</table>";


+--------+--------+--------+

| $jmeno | $jmeno | $jmeno |
+--------+--------+--------+
| $jmeno | $jmeno | $jmeno |
+--------+--------+--------+
| $jmeno | $jmeno | $jmeno |
+--------+--------+--------+


Zkrátka, aby data vybrané z DB byly zformátovány a vypsány do tabulky 3x3.
Potřebuji použít příkazy FOR, protože rozměry tabulky se budou měnit a tohle by bylo potom nejjednodušší řešení.
Předem děkuji za každou radu.
Joker
Profil
Berny
Cyklus v cyklu je normální programovací konstrukce. Nehrozí, že by vybuchul počítač nebo tak něco :-D Maximálně se to vevnitř celé zacyklí :)

Ostatně stačí to jen vyzkoušet ;-)
tiso
Profil
Pred nedávnom som tu písal jedno riešenie...
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=59 746
lam1t0
Profil *

$sql = "SELECT jmeno

FROM tabulka

ORDER BY jmeno ASC

LIMIT 9";

$res = @mysql_query($sql);echo mysql_error();



echo "<table border="1">";

for ($i=1; $i<=3; $i++) {

echo "<tr>";

for ($j=1; $j<=3; $j++) {

$row = @mysql_fetch_array($res);

if ($row !== FALSE)
echo "<td>$row[jmeno]</td>";
else
echo "<td>----------</td>";

}

echo "</tr>";

}

echo "</table>";



Netestoval som to, ale logika je dufam z toho jasna :)
Mike8748
Profil
co takhle?

$sql = "SELECT jmeno FROM tabulka ORDER BY jmeno ASC LIMIT 9";

$res = mysql_query($sql);
echo mysql_error();
while ($row = mysql_fetch_array($res))
{
$pole=$row["jmeno"]; // vysledku dotazu nasklada do pole
}
$pole=array_chunk($pole,3); // rozdeli pole po 3

echo "<table border="1">";
foreach ($pole as $radka)
{
echo "<tr>";
foreach ($radka as $jmeno) { echo "<td>$jmeno</td>"; }
echo "</tr>";
}
echo "</table>";
Joker
Profil
Mike8748
A proč ty výsledky nejdřív skládat do pole a potom vypisovat, já bych je rovnou vypisoval.
tiso
Profil
Mike8748 - nefunkčné, ale i tak tam máš zbytočný cyklus... Stačí while + if, ako v riešení čo som uviedol...
Berny
Profil
Joker
Obávám se, že jsi vůbec nepochopil můj problém, ale i tak dík.

tiso
Moc děkuji, přesně tohle jsem potřeboval.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0