Autor Zpráva
Patres
Profil
Čaute ľudia!

Potrebujem poradiť ohľadne jednej maličkosti. Na stránke mám zoznam koncertov a
potom option select, pomocou ktorého vyberám, že zoradiť koncerty podľa dátumu,
názvu, štátu alebo mesta.

<form method="post">

<table>
<tr>
<td>Zoradiť podľa</td>
<td><select name="order">
<option value="datum">dátumu</option>
<option value="stat">štátu</option>
<option value="mesto">mesta</option>
<option value="nazov">názvu</option>
</select></td>
<td><input type="submit" name="odosli" value="zoradiť"/></td></tr>
</table>
</form>



Potom nasleduje výber z databázy:

$zaznam = mysql_query("SELECT * FROM koncerty ORDER BY

'".$_POST["order"]."'");



Ale ten samozrejme, že nezoraďuje... neviem, či je to tým, že proste mysql
takýto zápis nepodporuje alebo som napísal niečo zle... nepíše to žiadnu chybu,
len proste vypíše bez zoradenia
djlj
Profil
Vypíše něco mysql_error? Je opravdu ta proměnná naplněná? Jinak bych mimochodem nikdy neposílal do SQL dotazu data přímo od uživatele.
Alphard
Profil
echo "SELECT * FROM koncerty ORDER BY '".$_POST["order"]."'";
zkontroluj tohle

echo mysql_error()
pak tohle

a ošetři vstup (je to nebezpečné)
Patres
Profil
Áno, ja viem, že to nie je veľmi bezpečné (SQL injection) ale to je teraz nepodstatné...

Suprglobálna premenná $_POST je naplnená, pretože keď ju dám po odoslaní formuláru vypísať, tak ju vypisuje :(

A tak isto aj funguje nasledujúci kód, ktorý je ale dosť škaredý:

if (empty($_POST["order"]))

$_POST["order"] = "datum";

if ($_POST["order"] == "datum"):
$zaznam = mysql_query("SELECT * FROM koncerty ORDER BY datum desc");
elseif ($_POST["order"] == "nazov"):
$zaznam = mysql_query("SELECT * FROM koncerty ORDER BY nazov desc");
elseif ($_POST["order"] == "stat"):
$zaznam = mysql_query("SELECT * FROM koncerty ORDER BY stat desc");
elseif ($_POST["order"] == "mesto"):
$zaznam = mysql_query("SELECT * FROM koncerty ORDER BY mesto desc");
endif;
Patres
Profil
nie... die(mysql_error()); nevypisuje nič :(
djlj
Profil
A když si vypíšeš jen ten MySQL dotaz, tak je správně?
Patres
Profil
echo "SELECT * FROM koncerty ORDER BY '".$_POST["order"]."'";
zkontroluj tohle


Funguje to nádherne

SELECT * FROM koncerty ORDER BY 'mesto'
Patres
Profil
už som to vyriešil:


if (empty($_POST["order"]))

$_POST["order"] = "datum";

$zaznam = mysql_query("SELECT * FROM `koncerty` ORDER BY `".$_POST["order"]."` DESC") or die(mysql_error());


Ďakujem za pomoc ;-)

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