Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/10/2007, 13h47   #1
Membre du Club
 
Inscription : juillet 2006
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 150
Points : 40
Points : 40
Par défaut [SQL] fonction where avec variable

bonjour
j'ai fait un formulaire permettant une recherche a différents endroits de la base
avec une variable pour ce que l'on recherche et une pour l'endroit ou s'effectue la recherche, mais ce qui fonctionne bien quand j'écris
Code :
1
2
3
4
5
6
7
8
9
$mot=$_REQUEST['motclef'];
$searchpar=$_REQUEST['par'];
$recherche= '';
if (isset($mot)){
	$recherche= "WHERE  produits like '%$mot%'";
}
$sql= "SELECT * FROM produits ".$recherche;
$resultat=mysql_query($sql);
while ($produits =mysql_fetch_array ($resultat)){
ne fonctionne plus lorsque je mets
Code :
1
2
3
4
5
6
7
8
9
$mot=$_REQUEST['motclef'];
$searchpar=$_REQUEST['par'];
$recherche= '';
if (isset($mot)){
	$recherche= "WHERE  '%$searchpar%' like '%$mot%'";
}
$sql= "SELECT * FROM produits ".$recherche;
$resultat=mysql_query($sql);
while ($produits =mysql_fetch_array ($resultat)){
code avec le formulaire
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php echo $_REQUEST['motclef'];?>
"/>
<input type="submit" value="rechercher"/>
 
  par
  <select name="par">
  <option value="id">utilisation
  <option value="reference"reference">nom</option>
  <option value="constructeur">constructeur</option>
  <option value="importateur">fournisseur
  </select>
  </form>
<br><br><br>
<table width=90% align=center border=1>
<tr>
<td class='photo' width="7%"><b>photo </td>
<td class='intitule'width="20%"><b>designation</td>
<td class= 'intitule'width="20%"><b>reference</td>
<td class='intitule'><b>distributeur</td>
<td class='pdf'><b>documentations</td></b>
<?php
 
$mot=$_REQUEST['motclef'];
$searchpar=$_REQUEST['par'];
$recherche= '';
if (isset($mot)){
	$recherche= "WHERE  '%$searchpar%' like '%$mot%'";
}
$sql= "SELECT * FROM produits ".$recherche;
$resultat=mysql_query($sql);
while ($produits =mysql_fetch_array ($resultat)){
rvm31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2007, 13h53   #2
Membre du Club
 
Inscription : juillet 2006
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 150
Points : 40
Points : 40
juste une rectif par rapport a mon post precedent cela fonctionne quand je met
les mots reference, constructeur, id ...
à la place de la variable searchpar
Code :
$recherche= "WHERE  '%$searchpar%'
rvm31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2007, 17h02   #3
Membre du Club
 
Inscription : juillet 2006
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 150
Points : 40
Points : 40
j'ai toujours mon problème avec la variable $searchpar, qui n'est pas prise en compte
Code :
$recherche= "WHERE '%$searchpar%' LIKE '%$mot%'"
quand je teste en remplaçant la variable
Citation:
$searchpar
par un paramètre de ma table cela fonctionne uniquement quand je ne met pas le tri derrière cela ne marche pas quand je met les 2 variables
Code :
$sql= "SELECT * FROM produits ".$recherche.$ordre2
dans ce cas seul le tri fonctionne
et quand je fais un tri l'affichage de la liste est réinitialisé comment faire pour garder les critères de recherche quand cela fonctionnera, dans le tri
merci
rvm31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2007, 18h27   #4
Membre du Club
 
Inscription : mars 2003
Messages : 50
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 50
Points : 49
Points : 49
Salut,
Histoire d'avoir un peu plus d'info, as tu essayer de faire un "echo" de ta requête avant de l'éxecuter et de la tenter à la main dans phpMyAdmin (ou autre), si ton problème vient de la syntaxe SQL tu devrais obtenir un vrai message d'erreur.
Sinon, pour sauvegarder les critères de tri ou de recherche tu peux enregistrer tout ça en session.
Pysk0B0b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2007, 18h47   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Votre requête est erronée :
Code :
$recherche= "WHERE  '%$searchpar%' like '%$mot%'";
La syntaxe est : nom_du_champ LIKE motif. La partie située avant la clause LIKE n'est donc pas valide. Que cherchez-vous à faire ?

PS : pensez, par pitié, à ajouter le or die(mysql_error()); à l'exécution de vos requêtes (fonction mysql_query, entre autres).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2007, 19h48   #6
Membre du Club
 
Inscription : juillet 2006
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 150
Points : 40
Points : 40
j'essaye de faire une recherche sur un site en mettant dans un formulaire ce que l'on recherche variable $mot et de définir dans quel endroit (rubrique) de la base cette recherche se fait variable $searchpar.
exemple je cherche un produit appelé xyz dans ma colonne reference.

merci pour votre aide
rvm31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2007, 20h41   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Ce serait alors plutôt :
Code :
$recherche= ' WHERE `' . mysql_real_escape_string($searchpar) . '` LIKE "%' . mysql_real_escape_string($mot) . '%"';
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 09h12   #8
Membre du Club
 
Inscription : juillet 2006
Messages : 150
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 150
Points : 40
Points : 40
ça fonctionne, super, merci
rvm31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h10.


 
 
 
 
Partenaires

Hébergement Web