Autor Zpráva
gardener
Profil
Zdravím
Chtěl bych se zeptat, jak správně zapsat Výběrový dotaz SQL s použitím PHP, tj, dotaz se bude měnit v závislosti na vyplněných polích formuláře.

Zatím jsem laboroval s tímto:

$sql = mysql_query("SELECT * FROM seznam" if (!empty($_POST['interpret']))
{.WHERE interpret= $_POST['interpret'] } 
"ORDER By id DESC");


Ale je tam chyba v syntaxi, zkoušel jsem použít spojovací operátor tečku ale dělám někde chybu.

Vím, že jednoduší by bylo napsat výb. dotaz jen s použitím OR a AND a dopnňovat $_POST z formu, ale to bych přišel o pružnost toho vyhledávání.

Díky za každou radu.
martindeveloper
Profil
$interpret = (!empty($_POST['interpret']) ? 'WHERE interpret = ' . $_POST['interpret'] : '');
$sql = mysql_query("SELECT * FROM seznam " . $interpret . " ORDER By id DESC");


Jinak bacha na SQL Injection ;)
gardener
Profil
martindeveloper:Díky za radu, jenom prosímtě k čemu jsou u deklarace $interpret, ty prázdné apostrofy za dvojtečkou?
bohyn
Profil
gardener
Operator ?: musi vracet nejakou hodnotu, prazdne uvozovky = prazdny retezec - tedy platna hodnota pro vraceni
gardener
Profil
Tak bohužel jsem se opět zasekl,
pokud si napíši tento kód a testuji to i třeba jenom na where tj.

$interpret = (!empty($_POST['interpret']) ? 'WHERE interpret = ' . $_POST['interpret'] : '');
$album = (!empty($_POST['album']) ? 'OR album = ' . $_POST['album'] : '');
$styl = (!empty($_POST['styl']) ? 'AND styl = ' . $_POST['album'] : '');
$rok_vydani = (!empty($_POST['rok_vydani']) ? 'OR rok_vydani = ' . $_POST['rok_vydani'] : '');

$sql = mysql_query("SELECT * FROM seznam " .$interpret." ORDER By id DESC");
if (!$sql)
die('Nepodařilo se nám poslat SQL dotaz do databáze.');


Tak se mi nepodaří poslat SQL dotaz.
bohyn
Profil
gardener
A co treba udelat
echo mysql_error();


Edit: Chybi ti tam uvozovky
gardener
Profil
Pravda, omlouvám se
Zřejmě chyba v apostrofech.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'In flames ORDER BY id DESC' at line 1
Tomasds
Profil
Kormě toho co píše bohyn
Před WHERE, OR, AND nemáš mezery. Takže dotaz pak vypadá takto: .. WHERE interpret = phil glassOR album = photographerAND styl = ....
gardener
Profil
Ty uvozovky chybí prosím kde?
Jedině mě napadá zde, ale to asi není pravda..
. $_POST['interpret']
Mastodont
Profil
To tě napadá správně. Co třeba si výsledný SQL vypsat? Pak to hned uvidíš.
gardener
Profil
Jenže když si napíši klasický SQL příkaz, tak to jde jedna báseň ale zde mě matou apostrofy...

EDIT: Vážně nevím, tahle by to mělo být správně ale není...
$interpret = (!empty($_POST["interpret"]) ? " WHERE interpret = " .$_POST["interpret"] : '');

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: