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 21/06/2007, 16h39   #1
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2007
Messages : 17
Points : 1
Points : 1
Par défaut [SQL] insérer des variables php dans une requête sql

Bonjour a tous,

Donc je vous expose mon probleme, je travail sous WAMP5 (windows, apache, mysql, php5).

Jai fais pas mal de forum et j'ai pas trouvé de reponse donc désolé si cette question a deja été posée.

Je suis en train (d'essayée) de creer une interface en php, avec une base de données mysql, pour la gestion de clientel de ma société, donc j'ai reussi (non sans fierté j'avoue) a creer la partie remplissage de la base, et maintenant je bloque sur la partie consultation...

Donc j'ai créée une feuille contenant des checbox, et des zones de texte, donc l'utilisateur doit pouvoir cocher plusieurs case et noter dans dans les zones de texte les critères de selection correspondant. Donc je n'ai plus d'erreures mais rien ne s'affiche

En fait j'ai esseyai d'inserer les données contenu dans un tableau $tab[], dans ma requete, dans le where. je pense que ca vient de la parceque quand j'ecris une requete normale ca marche, et ça m'affiche les données...

donc la je vois plus rien alors viens vous demander un peu d'aide parceque la je galère

voici mon code:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php 
$nom = $_POST['nom']; 
$ville = $_POST['ville'];
$cp = $_POST['cp'];
$nomresp = $_POST['nomresp'];
$genre = $_POST['genre'];
$nomc = $_POST['nomc']; 
$villec = $_POST['villec'];
$cpc = $_POST['cpc'];
$genrec = $_POST['genrec'];
$nomrespc = $_POST['nomrespc'];
 
$i = 0;
$tab = array ();
 
if(($nom) == 'on')
{$tab[i] = "nom = '$nomc'" ;
i==i+1;
exit();}
 
  if(($ville) == 'on')
      {if( i==0)
      {$tab[i] = "ville = '$villec'";
      exit();}
  $tab[i] = "and ville =  '$villec'" ;
  i==i+1;
  exit();}
 
    if(($cp) =='on')
      {if( i==0)
      {$tab[i] = "cp = '$cpc'";
      exit();}
     $tab[i] = "and cp = '$cpc' " ;
    i==i+1;
    exit();}
 
      if(($nomresp) == 'on')
       { if( i==0)
      {$tab[i] = "nomresponsable = '$nomrespc'";
      exit();}
       $tab[i] = "and nomresponsable = '$nomrespc'" ;
      i==i+1;
      exit();}
 
        if(($genre) == 'on')
          {if( i==0)
      {$tab[i] = "genre = '$genrec'";
      exit();}
         $tab[i] = "and genre = '$genrec'" ;
        i==i+1;
        exit();}
 
$connexion = mysql_connect('localhost','root','') or die ('Erreur de connexion'.mysql_error());
 
mysql_select_db('clientsms',$connexion) or die ('Erreur de selection'.mysql_error());
 
$sql = "SELECT * FROM `entreprise` WHERE '$tab[0]' '$tab[1]' '$tab[2]' '$tab[3]' '$tab[4]' ";
 
$result = mysql_query($sql) or die('erreur SQL'.sql.mysql_error());
 
if (mysql_num_rows($result) == 0) 
{   echo "Aucune ligne trouvée, rien à afficher.";  
exit;}
// Tant qu'une ligne existe, place cette ligne dans la variable $row
// sous la forme d'un tableau associatif.
// Note : Si vous n'attendez qu'une seule ligne, oubliez la boucle
// Note : Si vous utilisez extract($row); dans la boucle suivante
//       vous créerez $userid, $fullname et $userstatus
while ($row = mysql_fetch_assoc($result)) {   
 echo $row["raisonsociale"].'<br>';   
 echo $row["adresse"].'<br>';
  echo $row["adresse2"].'<br>'; 
   echo $row["adresse3"].'<br>'; 
    echo $row["cp"].'<br>'; 
     echo $row["ville"].'<br>'; 
      echo 'fax: '.$row["fax"].'<br>';  
       echo 'tel: '.$row["numtel"].'<br>'; 
        echo 'port: '.$row["port"].'<br>'; 
         echo $row["civilite"].' '; 
          echo $row["responsable"].'<br>'; 
           echo $row["fonction"].'<br>';   
 echo '.<br>';
 echo '----------------------------------------------------------- <br>';
 }
 
mysql_free_result($result);
 
 
mysql_close();
 
 
?>
 
<html>
 
<head>
<meta http-equiv="Content-Language" content="fr">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Nouvelle page 1</title>
</head>
 
<body link="#FFFF00" vlink="#FFFF00" alink="#FFFF00" text="#FFFF00" bgcolor="#000000">
 
 
<p align="center"><b><font size="4" face="Usuzi Italic">[Retour a la 
consultation]</font></b></p>
 
 
</body>
 
</html>
Merci d'avance a vous.
lili38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 16h46   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Je pense que tu as un probleme dans ta requete, or pour la requete ton die() a un probleme :
Code :
$result = mysql_query($sql) or die('erreur SQL'.sql.mysql_error());
il faut faire
Code :
$result = mysql_query($sql) or die('erreur SQL! Ma requete : '. $sql .'<br/> Erreur : ' .mysql_error());
comme tu le fais pour le connect par exemple Et maintenant tu devrais voir l'erreur mysql liée à la requete effectuée.
Si tu ne trouves pas, montres nous la requete en exemple !

EDIT : Premiere piste, tu mets des ' ' autour de chaque condition de ton where et je pense que le probleme vient justement de là, il n'y a pas de ' ' autour des 'monchamp = 'aaa' ' and 'monchamp2 = 'bbb' ' ...
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 17h01   #3
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2007
Messages : 17
Points : 1
Points : 1
Merci pour cette reponse rapide, mais je viens d'essayer et il ne me mets aucune erreure... tout en ne m'affichant toujours rien.

ma

Code :
$sql = 'SELECT * FROM `entreprise` WHERE '$tab[0]' '$tab[1]' '$tab[2]' '$tab[3]' '$tab[4]'' ;
voila se que j'ai changée
et voila se qu'il me mets

Citation:
Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\clients\consent.php on line 57
lili38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 17h02   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Une astuce pour constuire une telle requête, c'est de l'initialiser avec WHERE 1=1 (qui est toujours vérifié) et ensuite d'ajouter les conditions en mettant AND champ=valeur, ça évite de bricoler avec la valeur de $i.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 17h04   #5
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Envoyé par lili38
Merci pour cette reponse rapide, mais je viens d'essayer et il ne me mets aucune erreure... tout en ne m'affichant toujours rien.

ma

Code :
$sql = 'SELECT * FROM `entreprise` WHERE '$tab[0]' '$tab[1]' '$tab[2]' '$tab[3]' '$tab[4]'' ;
voila se que j'ai changée
et voila se qu'il me mets

Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\clients\consent.php on line 57
Tu as un léger problème avec tes quotes là... Et koopajah a fait une bonne remarque il faut virer les quotes qui entourent tes $tab[i]. De plus il faut faire une boucle car à priori le nombre d'éléments dans $tab est variable donc tu peux très bien avoir un $tab[4] qui n'existe pas et ça il va pas aimer...
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 17h05   #6
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2007
Messages : 17
Points : 1
Points : 1
z'ai pas tout compris
lili38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 17h06   #7
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Envoyé par lili38
z'ai pas tout compris
Ah bah désolé j'ai pourtant fait gaffe de faires des belles phrases en français Qu'est ce qui va pas ?
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 17h07   #8
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2007
Messages : 17
Points : 1
Points : 1
Amara t'as repondu en meme temps que je poster donc maintenat je vais lire ta reponse... et apres je pourrais dire si j'ai compris ou pas
lili38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 17h07   #9
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Envoyé par lili38
Amara t'as repondu en meme temps que je poster donc maintenat je vais lire ta reponse... et apres je pourrais dire si j'ai compris ou pas
Ah ok désolé
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 17h12   #10
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2007
Messages : 17
Points : 1
Points : 1
Citation:
avoir un $tab[4] qui n'existe pas et ça il va pas aimer...
ça j'm'en été douté mais bon je m'étais dit que de toutes façon ça aurait été vide donc pas de soucis (je sais ça marche pas comme ça, mais on sait jamais )

Citation:
il faut virer les quotes qui entourent tes $tab[i]
quand je les vires il aime pas non plus...

bon en tous cas merci de toutes vos reponse rapide, vous étes vraiment sympas.

bon je vais essayé de faire une boucle, mais faut que je la fasse dans la requete???
lili38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 17h22   #11
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
En fait tu n'as pas besoin de $tab ni de boucle du coup si tu suis le conseil que j'ai donné plus haut avec le WHERE 1=1, ça va tout te simplifier. Tu construis entièrement ta requête dans une variable et tu fais ton mysql_query dessus.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 17h54   #12
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2007
Messages : 17
Points : 1
Points : 1
désolé mais j'ai pas tout bein compris donc j'ai fait ca

Code :
1
2
3
$sql = "SELECT * 
        FROM entreprise 
        WHERE  nom = $nomc or 1=1 and ville = $villec or 1=1 and cp=$cpc or 1=1 and responsable=$nomrespc or 1=1 and genre = $genrec or 1=1" ;
et ca veut pas marcher non plus, bon c peu etre un peut speciale comme requete il faut dire
j'ai ca comme message :

Citation:
erreur SQL! Ma requete : SELECT * FROM entreprise WHERE nom = or 1=1 and ville = or 1=1 and cp=38000 or 1=1 and responsable= or 1=1 and genre = or 1=1
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 'or 1=1 and ville = or 1=1 and cp=38000 or 1=1 and responsable= or 1=1 and genre' at line 3
lili38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 18h02   #13
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Non c'est pas ça que je voulais dire, je te fais un algo en speed :

Code :
1
2
3
4
requete = "SELECT * FROM table WHERE 1=1"
TANT QUE conditions à ajouter FAIRE
  requete .= " AND champ = valeur"
FIN TANT QUE
En entourant de quotes éventuellement la valeur.

Comme ça à la fin ta requête a une forme comme
Code :
SELECT * FROM table WHERE 1=1 AND champ1='valeur1' AND champ2='valeur2'
sans prise de tête avec les espaces, les AND, ...


Par contre là tu dois voir que ta requête est bancale, par exemple la ville est vide donc ça peut pas aller. De plus il faut encadrer les chaînes par des quotes (exemple ville='Le Mans'').
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 18h05   #14
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2007
Messages : 17
Points : 1
Points : 1
alors je viens d'essayé avec ca

Code :
1
2
3
"SELECT * 
        FROM entreprise 
        WHERE  1=1 and nom = $nomc  and ville = $villec  and cp=$cpc  and responsable=$nomrespc  and genre = $genrec " ;
et la ça ne m'affiche rien du tout... une page blanche.
lili38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 18h09   #15
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2007
Messages : 17
Points : 1
Points : 1
ça y est j'ai compris

je comprends vite mais faut m'expliquer longtemps
lili38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 18h50   #16
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2007
Messages : 17
Points : 1
Points : 1
bon certes j'ai compris le principe mais z'ai du mal a le mettre en place...
mais je desespère pas c'est la condition du tant que qui me fait fumer le cerveau
lili38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 18h53   #17
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Là dans ta dernière requête il te manque toujours les quotes autour de tes chaînes (je suppose que la ville par exemple c'est une chaîne de caractères...).
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 19h09   #18
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2007
Messages : 17
Points : 1
Points : 1
j'viens d'essayer avec des quotes, mais ça me dit Aucune ligne trouvée, rien à afficher.
lili38 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 19h26   #19
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Envoyé par lili38
j'viens d'essayer avec des quotes, mais ça me dit Aucune ligne trouvée, rien à afficher.
Ah bah après faut voir ce que tu as en base, tu peux faire un echo de ta requête une fois construite et la tester dans phpmyadmin par exemple pour voir si ça te sort quelque chose.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 20h38   #20
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juin 2007
Messages : 17
Points : 1
Points : 1
j'ai voulue essayer quelque chose et je pense que ca peut marcher mais ça marche pas...

je vous montre :

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
$sql = "SELECT * 
        FROM entreprise 
        WHERE 1 = 1  " ;
 
 
if(($nom) == 'on')
{$sql = $sql . " and raisonsociale = '$nomc'";
exit();}
 
  if(($ville) == 'on')
        {$sql = $sql . " and raisonsociale = '$villec'";
  exit();}
 
      if(($cp) == 'on')
        {$sql = $sql . " and cp = '$cpc'";
      exit();}
 
        if(($nomresp) == 'on')
         {$sql = $sql . " and responsoable = '$nomrespc'";      
        exit();}
 
          if(($genre) == 'on')
            {$sql = $sql . " and fonction = '$genrec'";     
          exit();}
j'avais dans l'espoir que mais condition se rajouterai mais ça veux pas c tropinjuste
lili38 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 03h16.


 
 
 
 
Partenaires

Hébergement Web