Variable à la suite...AIDE

Variable à la suite...AIDE - PHP - Programmation

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

Reply

Marsh Posté le 19-03-2006 à 22:02:54   

Reply

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


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

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

Reply

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.

Reply

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

Reply

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)

Reply

Marsh Posté le 20-03-2006 à 20:24:11    

$req = mysql_query('SELECT * FROM jeu WHERE'.$Categorie.$Age.$Joueur.$Prix)

Reply

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
 
++


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed