ik heb een regel:

<?php

$s_sports= mysql_query ( "SELECT * FROM ".$config['site']['mysql_tabel']." WHERE jaar='".$_GET['jaar']."' AND (stad='".$_GET['stad']."' and evenement='".$_GET['evenement']."' and video='".$_GET['video']."' and foto='".$_GET['foto']."') ORDER BY achternaam ASC" ) or die ( mysql_error ( ) );

?>


nu moet ik echter in mijn url elke optie aangeven,

pagina.php?jaar=2009&stad=amsterdam&evenement=voetbal&video=ja&foto=nee

dus ik ben verplicht om bijvoorbeeld een stad in te geven in mijn URL, anders komt er niets vanuit mijn database.

Ik wil graag dat als ik geen stad in de url zet, dat hij dan alle steden weer geeft. Maar als ik dat nu doe, krijg ik geen uitvoer.
Zie php.net -> if en isset
Verder is je script lek -> sql-injection.
<?php
$sql = "SELECT * FROM ".$config['site']['mysql_tabel']."";
if(!empty($_GET['stad'])){
$sql .= "WHERE stad = '".mysql_real_escape_string($_GET['stad'])."'";
}
if(!empty($_GET['jaar'])){
$sql .= "AND jaar = ".mysql_real_escape_string($_GET['jaar']);
}
// herhaal laatste if voor andere variabelen

if(!$result = mysql_query($sql)){
trigger_error(mysql_error());
}
else {
//ga verder met je code
}

?>

Zoiets, alleen is het nog niet optimaal, en moet je het voor de andere variabelen nog even verder maken.

edit: En geen * gebruiken in je query, veldnamen uitschrijven bvd.
[php]isset[/php]() of [php]empty[/php]().

Maak daarnaast nog gebruik van een goede foutafhandeling. Or die() is fout!

@Afra: en wat nu als er geen stad is, maar daarna de parameters wel? Dan heb je geen WHERE...
@ Jezpur,

Dat bedoelde ik ook met "niet optimaal". Had even geen zin om dat te fixen in m'n code, maar dit geeft wel een goed beeld wat het ongeveer moet worden.
ik heb van Afra gekregen:

<?php

if(!$result = mysql_query($s_linkpartners)){
trigger_error(mysql_error());

?>

alleen heb ik verderop in mijn script:

<?php

## lijst weergeven
while ( $f_linkpartners = mysql_fetch_assoc ( $s_linkpartners ) )
{

?>

ik heb van alles geprobeerd, maar ik krijg dit 2e gedeelte niet aan de praat.
<?php

if(!$result = mysql_query($s_linkpartners)){
trigger_error(mysql_error());
}
else {
while ($f_linkpartners = mysql_fetch_assoc($s_linkpartners)){
echo $f_linkpartners['kolomnaam']
}
}

?>

Werkt niet? En zoals Jezpur al zei, en zoals ik al besefte maar niet goed genoeg verwoorde, werkt mijn versie niet als iemand stad niet heeft ingevuld, aangezien die verantwoordelijk is voor de WHERE in de query. Je kan het zelf fixen, of pm me even.

edit: En het kan helpen je query even te echo-en en kijken of hij klopt en uit te voeren in bijvoorbeeld php myadmin om te kijken of er sowiezo een resultaat is.
werkt niet
Nou, dat zit vol informatie ..... Heb je zoals ik al zei de query te echo-en, en kijken of je de query in phpmyadmin rechtstreeks kunt uitvoeren?
ik heb nu het volgende, en dat werkt:

<?php

$sql = "SELECT * FROM ".$config['site']['mysql_tabel']."";
if(!empty($_GET['db'])){
$sql .= " WHERE db = '".mysql_real_escape_string($_GET['db'])."'";
}
if(!empty($_GET['jaar'])){
$sql .= " AND jaar = '".mysql_real_escape_string($_GET['jaar'])."'";
}
if(!empty($_GET['stad'])){
$sql .= " AND stad = '".mysql_real_escape_string($_GET['stad'])."'";
}
if(!empty($_GET['evenement'])){
$sql .= " AND evenement = '".mysql_real_escape_string($_GET['evenement'])."'";
}
if(!empty($_GET['video'])){
$sql .= " AND video = '".mysql_real_escape_string($_GET['video'])."'";
}
if(!empty($_GET['foto'])){
$sql .= " AND foto = '".mysql_real_escape_string($_GET['foto'])."'";
}


$result = mysql_query($sql);

?>

echter wil ik nu ook sorteren op 1 onderdeel maar niet 1 in bovengenoemde lijst, bij voorbeeld wil ik sorteren op: datum

hoe ga ik dat doen?
Als je wilt dat de gebruiker zelf kan selecteren waar hij op sorteert, kan je een dropdown menu gebruiken, die dan dus nog een GET genereert, en die ook in je SQL gooien na als je if's. Als je zelf een vaste sorteermethode wilt gebruiken kan je na je if's $sql.= "SORT BY datum"; oid doen. Je hebt je datum toch wel in DATE of DATETIME field staan?

Reageren