Variable à la suite...AIDE - PHP - Programmation
Marsh Posté le 19-03-2006 à 22:23:16
$req = mysql_query('SELECT * FROM jeu WHERE categorie LIKE \'%'.$Categorie.'%\'' AND age = '. $Age );
voila à toi de compléter
Marsh Posté le 19-03-2006 à 22:28:35
hum je sois pas sur que ça soit encore comme ça...si l'utilisateur ne choisit pas d'age...il faut que ça soit vide dans ma requête...et j'ai fait ça par rapport à un test (la haut) et toi tu écris en dur ce que tu veux dans la requête tu vois ce que je veux dire :s
Marsh Posté le 19-03-2006 à 22:40:56
utilise addslahes() quand tu mets des valeurs prisent du web dans tes requêtes.
le $_POST['operateurAge'] c est pas terrible non plus, y a toujours un petit malin qui peut trouver la faille pour s amuser avec ta BDD. vérifie d abord que l opérateur est valable: > < >= <= =
Sinon, quand j ai besoin de faire ce genre de recherches, j utilise une array condition:
$conditions=array();
Puis je la remplie avec les conditions et jointures, celà permet de bien séparer les diverses options de recherche, et de rendre les critères facilement optionnels pour l internaute. A la fin j utilise:
$where=implode(' AND ',$conditions);
En général ça me permet de rendre le code plus clair, d éviter de déclarer plein de variables dont je ne me rappellerai pas forcément, et donc d éviter des erreurs.
Marsh Posté le 19-03-2006 à 22:51:48
oula oula jamais toutes ces choses là :s...tu sais c'est pour un petit projet d'exams client / serveur la sécurité c'est pas le 1er objectif...
parce que les addslahes() & implode() j'ai jamais vu ça :s
J'ai seulement 4 5 criteres de selection...il faut juste arriver à les mettre bout à bout :$
merci en tout cas
Marsh Posté le 20-03-2006 à 19:46:42
le truc c'est juste qu'il faut coller des bouts de chaînes c'est tout
mais je ne pense pas que comme ça ça soit possible....
$req = mysql_query('SELECT * FROM jeu WHERE'.$Categorie $Age $Joueur $Prix)
Marsh Posté le 20-03-2006 à 20:24:11
$req = mysql_query('SELECT * FROM jeu WHERE'.$Categorie.$Age.$Joueur.$Prix)
Marsh Posté le 21-03-2006 à 06:52:52
$sql = 'SELECT * FROM jeu WHERE categ=\''.myesql_real_escaped_strings($_POST['categ']).\''
if (isset($_POST['age'])
$sql .= 'AND age=\''.intval($_POST['age']).'\''
tu rajoutes comme ca ton critère que qd il est choisi et ta requete fonctionne.
Autre truc souvent abordé aussi ce n'est pas addslashes qu'il faut utiliser danstes requêtes mais mysql_real_escaped_string
++
Marsh Posté le 19-03-2006 à 22:02:54
Salut je voudrais faire une requête selon plusieurs critiques que l'utilisateur aura choisi. Une sorte de recherche avancée avec la catégorie du jeu, son prix, l'age etc etc
Donc en gros j'ai ça pour la CATEGORIE
if ($_POST['categorie'] = "*" )
$Categorie = 'jeu.num_cat = categorie.num_cat';
else // sinon c'est que l'on a choisit une catégorie précise
$Categorie = 'jeu.num_cat = categorie.num_cat and categorie.num_cat = '.$_POST[categorie];
pour l''AGE etc etc
if ($_POST['age'] != "" )
$Age = 'and jeu.age_jeu'.$_POST['operateurAge'].$_POST['age'];
else
$Age = "";
et je voudrais donc construire ma requête comme cela :
$req = mysql_query('SELECT * FROM jeu WHERE'.$Categorie $Age $Joueur $Prix ,$connect);
mais ça ne marche pas ^^
merci d'avance
si ça peut vous aider, j'avais vu un peu ce sujet sur un autre site mais pas de solution correcte...sur http://www.phpcs.com/infomsg/VARIA [...] 87324.aspx