Requete SQL

Résolu
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 25 avril 2006 à 10:42
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 27 avril 2006 à 14:32
Salut!!

J'ai un formulaire à partir duquel je récupère des infos; j'envoie ensuite ces infos dans une requete SQL, mais ca me sort l'erreur Query was empty...

Ma requete :

$sql = 'SELECT description, cause_probable, proposition_amelioration, agence_concernee, processus_concerne, resp, etat_action, numero
FROM '%$ameliorations%', '%$observations%'
WHERE description LIKE '%$description%' AND cause_probable LIKE '%$cause_probable%' AND proposition_amelioration LIKE '%$proposition_amelioration%' AND agence_concernee like '%$agence_concernee%' AND processus_concerne LIKE '%$processus_concerne%' AND resp LIKE '%$resp%' AND etat_action LIKE '%$etat_action%' AND numero LIKE '%$numero%'
ORDER BY numero
';

Je ne comprends pas pourquoi ca me dit que ma requete est vide, si je fais un echo avant la requete, les champs du formulaire sont bien récupérés...

Merci d'avance pour votre aide!!

25 réponses

sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
26 avril 2006 à 20:48
//Tables

$flag='';

$from='';


if(isset($_POST['recap_ameliorations']))

{

$from=" FROM recap_ameliorations ";

$flag='1';

}




if(isset($_POST['recap_observations']))

{

if($flag=='1') $from.=" ,  recap_observations  ";

else

$from.="  FROM recap_observations  ";

}




//Mot clé

$flag='';

$where='';




if(isset($_POST['mot_cle']))

{

$where=" WHERE description, cause_probable, proposition_amelioration LIKE '%

$_POST['mot_cle']

%' ";

$flag='1';

}




//Agence concernée

if(isset($_POST['agence_concernee']))

{

if($flag=='1') $where.=" AND agence_concernee LIKE

'%$_POST['agence_concernee']

%' ";

else

$where.=" WHERE agence_concernee LIKE

'%$_POST['agence_concernee']

%'

";

$flag='1';

}




//Processus concerné

if(isset($_POST['processus_concerne']))

{

if($flag=='1') $where.=" AND processus_concerne LIKE

'%$_POST['processus_concernee']

%'

";

else

$where.=" WHERE processus_concerne LIKE

'%$_POST['processus_concernee']

%'

";

$flag='1';

}




//Responsable

if(isset($_POST['resp']))

{

if($flag=='1') $where.=" AND resp LIKE

'%$_POST['resp']

%'

";

else

$where.=" WHERE resp LIKE

'%$_POST['resp']

%'

";

$flag='1';

}




//Etat des actions

if(isset($_POST['etat_action']))

{

if($flag=='1') $where.=" AND etat_action LIKE '%

$_POST['etat_action']

%' ";

else

$where.=" WHERE etat_action LIKE

'%

$_POST['etat_action']

%'

";

$flag='1';

}




//Numéro

if(isset($_POST['numero']))

{

if($flag=='1') $where.=" AND numero LIKE '%

$_POST['numero']

%' ";

else

$where.=" WHERE numero LIKE

'%

$_POST['numero']

%'

";

$flag='1';

}








attention les variables !!!!!!!!!!!!!!!
3
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008
25 avril 2006 à 10:48
Salut,

Essaies ceci :
$sql = mysql_query("SELECT description, cause_probable, proposition_amelioration, agence_concernee, processus_concerne, resp, etat_action, numero FROM '%$ameliorations%', '%$observations%' WHERE description LIKE '%$description%' AND cause_probable LIKE '%$cause_probable%' AND proposition_amelioration LIKE '%$proposition_amelioration%' AND agence_concernee like '%$agence_concernee%' AND processus_concerne LIKE '%$processus_concerne%' AND resp LIKE '%$resp%' AND etat_action LIKE '%$etat_action%' AND numero LIKE '%$numero%' ORDER BY numero");
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
25 avril 2006 à 11:32
Maintenant, j'ai l'erreur :

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 ''%', '%recap_observations' WHERE cause_probable LIKE '%' AND pro
0
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
25 avril 2006 à 11:56
Salut,
moi, personnellement, j'aurais mis des points à la place des pourcentages, afin de concaténer tes valeurs à la chaine de caractères qui est ta requete (enfin j'ai toujours fait comme cela et aucun problème). Mais bon je ne sais pas ce que signifient les pourcentages, donc peut etre qu'ils servent à concaténer. S'il ne servent pas à concaténer, peux-tu me dire quelle est leur utilité ici (je ne suis qu'un débutant et en plus je me suis mis au langage SQL il y a peu).
Bonne journée,
David
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
25 avril 2006 à 11:59
Le %, c'est un peu comme * dans le dos, ca indique qu'il peut y avoir d'autres caratères.
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
25 avril 2006 à 12:00
FROM '%$ameliorations%', '%$observations%'

tu n'as pas des noms de fichiers standards ??
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
25 avril 2006 à 12:02
En fait, dans mon formulaire, j'ai des checkbox qui permettent de dire sur quelle table on recherche, c'est pour ça que j'ai des variables...
Je sais pas si je peux déclarer ca autrement??
0
David_monchy Messages postés 214 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 23 juin 2006 1
25 avril 2006 à 12:03
merci pour tes précisions flopad, maintenant que tu le dis, cela me revient, effectivement j'avais déjà vu une fois cela, mais c'était il y a longtemps. Bon donc je pense que mon post ne résoudra pas le problème alors...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 avril 2006 à 12:29
Hello,

après avoir déclaré ton $sql, fais un echo $sql;
Tu verras déjà à quoi ressemble $sql.

Ensuite, montre comment tu fais ta requête, aussi...
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
25 avril 2006 à 13:35
Mon echo ne donne rien, sinon je traie ma requete comme suit:

//requête SQL:
$sql = mysql_query("SELECT description, cause_probable, proposition_amelioration, agence_concernee, processus_concerne, resp, etat_action, numero FROM '%$ameliorations', '%$observations' WHERE description LIKE '%$description%' AND cause_probable LIKE '%$cause_probable%' AND proposition_amelioration LIKE '%$proposition_amelioration%' AND agence_concernee like '%$agence_concernee%' AND processus_concerne LIKE '%$processus_concerne%' AND resp LIKE '%$resp%' AND etat_action LIKE '%$etat_action%' AND numero LIKE '%$numero%' ORDER BY numero") or die('Erreur SQL !
'.$sql.'
'.mysql_error());


// Boucle qui va faire un tour pour chaque enregistrement
while($data = mysql_fetch_assoc($sql))
{
// Affiche les informations de l'enregistrement en cours
echo ''.$data['numero'].' '.$data['description'].''.$data['cause_probable'].''.$data['proposition_amelioration'].''.$data['agence_concernee'].''.$data['processus_concerne'].''.$data['resp'].''.$data['etat_action'].'';
}
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
25 avril 2006 à 15:02
comme dit malalam

$sql = "SELECT description, cause_probable, proposition_amelioration, agence_concernee, processus_concerne, resp, etat_action, numero FROM '%$ameliorations', '%$observations' WHERE description LIKE '%$description%' AND cause_probable LIKE '%$cause_probable%' AND proposition_amelioration LIKE '%$proposition_amelioration%' AND agence_concernee like '%$agence_concernee%' AND processus_concerne LIKE '%$processus_concerne%' AND resp LIKE '%$resp%' AND etat_action LIKE '%$etat_action%' AND numero LIKE '%$numero%' ORDER BY numero";

echo $sql;
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
25 avril 2006 à 15:23
Voila :

SELECT description, cause_probable, proposition_amelioration, agence_concernee, processus_concerne, resp, etat_action, numero FROM '', 'recap_observations' WHERE description LIKE '%b%' AND cause_probable LIKE '%%' AND proposition_amelioration LIKE '%%' AND agence_concernee like '%LAFRANCAISE%' AND processus_concerne LIKE '%%' AND resp LIKE '%%' AND etat_action LIKE '%%' AND numero LIKE '%%' ORDER BY numero

Erreur SQL !
SELECT description, cause_probable, proposition_amelioration, agence_concernee, processus_concerne, resp, etat_action, numero FROM '', 'recap_observations' WHERE description LIKE '%b%' AND cause_probable LIKE '%%' AND proposition_amelioration LIKE '%%' AND agence_concernee like '%LAFRANCAISE%' AND processus_concerne LIKE '%%' AND resp LIKE '%%' AND etat_action LIKE '%%' AND numero LIKE '%%' ORDER BY numero
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 ''', 'recap_observations' WHERE description LIKE '%b%' AND cause_
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
25 avril 2006 à 15:30
Eh ben voilà...
toutes les variables ne sont pas renseignées, ou du moins, elles sont vides.
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
25 avril 2006 à 15:38
Oui, je pensais que c'était normal....
En fait c'est un formulaire qui permet de rechercher ds une bdd que j'ai crée.
Donc, je voulais récupérer tous les champs du formulaire, et ensuite faire la requete en fonction des champs remplis...
Je sais plus trop comment faire en fait là; mon formulaire ressemble à ca :

<form name="Recherche" action="Recherche2.php" method="post">


Table Améliorations
Table Observations



<td>
Description :
</td>
<td>

</td>


<td>
Cause probable :
</td>
<td>

</td>


<td>
Proposition d'amélioration :
</td>
<td>

</td>

.....
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
25 avril 2006 à 15:41
En fait, je veux afficher plusieurs champs, mais sans que l'utilisateur soit obligé de tous les remplir. Ensuite je voudrais créer une requete qui reprend les champs qui ont été remplis...
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
25 avril 2006 à 15:48
FROM '',
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
25 avril 2006 à 15:49
pardon

FROM '',

c'est là que ça plante. normal...
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
25 avril 2006 à 15:52
tu es bon pour concaténér ta chaine sql
en fonction des options cochées !
et tout depend de ce que tu veux faire
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
25 avril 2006 à 16:31
Alors, en premier, je sélectionne sur quelles tables je recherche via les checkboxs.

Ensuite, je vais mettre une input text via laquelle si qque chose est entré, je vais rechercher sur plusieurs champs de ma ou mes tables.

Ensuite, je dois pouvoir faire une recherche par le biais de listes déroulantes...

Comment je dois m'y prendre donc..?

Désolé, j'avais vu ca un peu trop simple au début je pense !!
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
25 avril 2006 à 16:54
dejà pour les tables

$flag='';
$from='';
if(isset($_POST['recap_ameliorations']))
{
$from=" FROM recap_ameliorations ";
$flag='1';
}

if(isset($_POST['recap_observations']))
{
if($flag=='1') $from.=" , recap_observations ";
else
$from.=" FROM recap_observations ";
}

pareil pour $where... (utilise un flag pour les AND...)

et à la fin
$sql="select ".$from.$where." order by ...";

un truc dans le genre quoi !
0
Rejoignez-nous