Autor | Zpráva | ||
---|---|---|---|
MaxDJs Profil * |
Zdravím,
bylo by možno mi poradit, co mám blbě v tomto skriptu. Data získávám z databáze. Checkboxy by se měli zobrazit napozicované podle souřadnic získaných z databáze, ale místo 492 napozicovaných checkboxů se mi zobrazí pouze jeden checkbox v levém horním rohu. <?php $server = "localhost"; // jméno serveru $login = "root"; // prihlašovací jméno $heslo = ""; // heslo $databaze = "rezervace_ples"; // název databáze MySQL_Connect($server, $login, $heslo) or die("Nepodarilo se pripojit k databázi"); // pripojení k databázi MySQL_Select_DB($databaze) or die("Nepodarilo se otevrít databázi"); // výber databáze $i = 0; $s = 1; $x = 0; $y = 0; $pocet = mysql_result(mysql_query("SELECT COUNT(*) FROM sedadla"), 0); $query_x = "SELECT souradnicex FROM sedadla WHERE kategorie='".$i."';"; $query_y = "SELECT souradnicey FROM sedadla WHERE kategorie='".$i."';"; echo "<table>"; while ($i <= $pocet){ $x = MySQL_Query($query_x); $y = MySQL_Query($query_y); echo "<input type=\"checkbox\" style=\"position:absolute;top:".$x."px;left:".$y."\" />"; $i++; $s++; } echo "</table>" ?> Děkuji za odpověď Moderátor Alphard: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Alphard Profil |
#2 · Zasláno: 7. 1. 2011, 23:41:56
MaxDJs:
Máte to chybně sestavené, mysql_query() na řádcích 18 a 19 vám nevrátí požadovanou pozici. I když tam dáte mysql_result, inkrementace $i nebude fungovat zamýšleným způsobem. Jak vypadá ta tabulka? Nešlo by ty hodnoty vytáhnout jedním dotazem? |
||
Keeehi Profil |
#3 · Zasláno: 7. 1. 2011, 23:46:18
<?php $server = "localhost"; // jméno serveru $login = "root"; // prihlašovací jméno $heslo = ""; // heslo $databaze = "rezervace_ples"; // název databáze MySQL_Connect($server, $login, $heslo) or die("Nepodarilo se pripojit k databázi"); // pripojení k databázi MySQL_Select_DB($databaze) or die("Nepodarilo se otevrít databázi"); // výber databáze $dotaz = "SELECT souradnicex, souradnicey FROM sedadla"; $vysledek = MySQL_Query($dotaz); while (list($x,$y)=mysql_fetch_row($vysledek)){ echo "<input type=\"checkbox\" style=\"position:absolute; top: {$y}px; left: {$x}px;\" />"; } ?> Máš tam mnoho chyb, většinou v logice. Jednu ti ale musím vysvětlit. Funkce mysql_query se provádí pouze jednou a "navrátí" už všechny výsledky. Do proměnné $vysledek se uloží jakýsi identifikátor který ukazuje na tyto výsledky. A potom se několikrát provádí funkce mysql_fetch_row(). Ta při prvním provedení vrátí první řádek z výsledků, při druhém provedení vrátí druhý řádek, při třetím vrátí třetí, atd. Chci tedy říci, že je potřeba použít funkci mysql_query jen jednou a výsledky získávat v cyklu pomocí některé z funkcí mysql_fetch_* (* = row/assoc/array/object). |
||
MaxDJs Profil * |
#4 · Zasláno: 7. 1. 2011, 23:48:32
Keehi:
Děkuji za radu. |
||
MaxDJs Profil * |
#5 · Zasláno: 8. 1. 2011, 00:02:53
Vypíše mi to tohle varování:
Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:\wamp\www\odchyceni_pozice_sedadel\index-prizemi.php on line 20 |
||
Keeehi Profil |
#6 · Zasláno: 8. 1. 2011, 00:06:56
Na desátý řádek vlož
echo mysql_error();
Co to vypíše za chybu? |
||
MaxDJs Profil * |
#7 · Zasláno: 8. 1. 2011, 00:31:26
Už jsem našel chybu. Odkazoval jsem se na sloupec, který neexistuje.
|
||
Časová prodleva: 13 let
|
0