Affichage et condition en sql

svp quelqu'un peut m'aider
j'ai fait ce code pour affichage de données avec des condition mais il ne marche pas

$query ="SELECT client.nom, client.prenom,devis.id_devis FROM client, devis WHERE devis.id_client = client.id_client";
if (!empty($societe))
$query=$query."AND societe='$societe'";
if (!empty($id_devis))
$query=$query."AND id_devis='$id_devis'";
if (!empty($date))
$query=$query."AND date='$date' ";

//code d'affichage

$result = mysql_query($query) or die(mysql_error());

print("<table width=525 height=43 border=1>\n");
print("<tr >\n");
print"<td width=500 height=39 background=Liste.gif><div align=center class=Style2>Nom</div></td>";
print"<td width=500 height=39 background=Liste.gif><div align=center class=Style2>Prenom</div></td>";
print"<td width=500 height=39 background=Liste.gif><div align=center class=Style2>Numero Devis</div></td>";

print("</tr>\n");

while($row=mysql_fetch_array($result))
{
print("<tr>\n");
print("<td width=500 height=39 background=Liste2.gif><div align=left class=Style3>$row[nom]</div></td>\n");

print("<td width=500 height=39 background=Liste2.gif><div align=left class=Style3>$row[prenom]</div></td>\n");
print("<td width=500 height=39 background=Liste2.gif><div align=left class=Style3>$row[id_devis]</div></td>\n");

print("</tr>\n");
}
mysql_close($conn);
print("</table>\n");

svp je suis bloquée.merci d'avance

16 réponses

  1. bonjour enfet j'ai résoud le probleme il fallait mettre dans le formulaire
    <select name="annee">
    <Option value="">Années</Option>
    </select>
    <select name="mois">
    <Option name="ff" value="">Mois</Option>
    </select>
    <select name="jour">
    <Option value="" >Jour</Option>
    </select>

    au lieu de
    <select name="annee">
    <Option value="$annee">Années</Option>
    </select>
    <select name="mois">
    <Option name="ff" value="$mois">Mois</Option>
    </select>
    <select name="jour">
    <Option value="$jour" >Jour</Option>
    </select>

    merci pour ton aide le pére
    1. vu...
      un peu avant $query ="SELECT client.nom, client.prenom,devis.id_devis FROM client, devis WHERE devis.id_client = client.id_client"; , tu dois avoir quelque part:
      $date='$annee-$mois-$jour' ; avec des simples quotes. C'est là le problème, il faut des doubles quotes :
      $date="$annee-$mois-$jour" ;
      Car dans une chaîne en PHP, si tu veux que les variables soient remplacées par leurs valeurs, il faut l'écrire entre double quotes. Entre les simples quotes, les variables ne sont pas traduites.
      1. mais je suis sure que j'ai pas joué avec les ' et " mais bon
        il m'affiche pas d'erreur mais il m'affiche cette requete
        SELECT client.nom, client.prenom,devis.id_devis FROM client, devis WHERE devis.id_client = client.id_client AND date='$annee-$mois-$jour'
        lorsque je lui donne pas la date
        mais je lui donne la date il marche convenablement
        dand le code j'ai utilisé cette requete

        $query ="SELECT client.nom, client.prenom,devis.id_devis FROM client, devis WHERE devis.id_client = client.id_client";
        if (!empty($societe))
        $query=$query." AND societe='$societe'";
        if (!empty($id_devis))
        $query=$query." AND id_devis='$id_devis'";

        if (!empty($date))
        $query=$query." AND date='$date'";

        echo $query;
        $result = mysql_query($query) or die(mysql_error());

        j'ai pas comprei ce que vousvoulez dire par le morceau script dans mon code j'ai utilisé seulement de javascrip dans le forma du date le voila tout le code du formulaire

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>chercher devis</title>
        <script type="text/javascript">

        function init(deposer)
        {
        tabjour=new Array("01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31");

        tabMois=new Array("01","02","03","04","05","06","07","08","09","10","11","12");

        tabAnnee=new Array();
        for(var i=0;i<=110;i++)
        tabAnnee[i]=2009+i;
        for(var i=0;i<tabjour.length;i++)
        deposer.jour[deposer.jour.length]=new Option(tabjour[i]);
        for(var i=0;i<tabAnnee.length;i++)
        deposer.annee[deposer.annee.length]=new Option(tabAnnee[i]);
        for(var i=0;i<tabMois.length;i++)
        deposer.mois[deposer.mois.length]=new Option(tabMois[i]);
        }
        </script>
        </head>

        <body>
        <form method="post" action="chercher1 devis.PHP" name="deposer" >
        <table width="366" border="0" align="center">

        <tr bgcolor="#969696">
        <td width="134" align="right">
        Numéro De Devis
        </td>
        <td width="222">

        <input name="id_devis" type="text" maxlength="20">
        </td>
        </tr>
        <tr bgcolor="#969696">
        <td width="134" align="right">
        Nom De company
        </td>
        <td width="222">
        <input name="societe" type="text" maxlength="20">
        </td>
        </tr>
        <tr bgcolor="#969696">
        <td align="right">
        Date Devis
        </td>
        <td width="222">
        <select name="annee">
        <Option value="$annee">Années</Option>
        </select>
        <select name="mois">
        <Option name="ff" value="$mois">Mois</Option>
        </select>
        <select name="jour">
        <Option value="$jour" >Jour</Option>
        </select>

        </td>
        </tr>

        </table><br /><br />
        <center>
        <INPUT TYPE="SUBMIT" VALUE="Ajouter Devis" >
        <input type="reset" value= "Annuler" ></center></p>
        <script language ="javascript">
        init(deposer);
        </script>
        </form>

        </body>
        </html>

        merci
        1. S'il t'affiche vraiment la requête telle que tu le dis ci-dessus, c'est probablement que tu as joué avec les ' et les " dans
          $query=$query."AND date='$date' ";
          Tu n'aurais pas dû.
          Peux-tu mettre une copie (copier-coller) du message d'erreur correspondant à ton message précédent et la requête correspondante? Et le morceau de script pendant qu'on y est ?
          1. elle m'affiche la meme erreur meme avec accents graves et meme j'ai changé le nom date par date_devis dans la base mais il m'affiche sa
            SELECT client.nom, client.prenom,devis.id_devis FROM client, devis WHERE devis.id_client = client.id_client AND 'date_devis'='$annee-$mois-$jour'
            1. $query=$query."AND 'date'='$date' "; 
              avec des accents graves ' (pas des guillemets simples ' ) autour de date.
              Car date est un mot réservé en mysql. Le mieux serait de changer le nom du champ, mais si tu veux le garder, entoure le toujours de '' dans tes requêtes.
              J'aurais dû m'en rendre compte beaucoup plus tôt...

              Désolé, la nouvelle interface de commentcamarche semble convertir les accents graves en guillemets simples. Je précise donc les codes ASCII
              accent grave = 96 (Alt Gr 7 sur clavier AZERTY français)
              guillemet simple = 39
              1. voila lorsque je met la date en commentaire sa marche corectement

                $query ="SELECT client.nom, client.prenom,devis.id_devis FROM client, devis WHERE devis.id_client = client.id_client";
                if (!empty($societe))
                $query=$query." AND societe='$societe'";
                if (!empty($id_devis))
                $query=$query." AND id_devis='$id_devis'";
                //elseif (!empty($date))
                //$query=$query." AND date='$date'";
                echo $query;
                1. oui j'ai fait echo ,il m'affiche cette requete dans tout les cas seulement il m'affiche les données corecte chaque fois que je fait entrée la date .

                  SELECT client.nom, client.prenom,devis.id_devis FROM client, devis WHERE devis.id_client = client.id_client AND date='$annee-$mois-$jour'
                  1. je répète ma question : quelle est la requête générée par PHP ? As-tu fait le echo $query; juste avant $result = mysql_query($query) or die(mysql_error()); que je te demandais à 16h51 pour être sûr de la requête réellement exécutée par ton script ?
                    1. si j'ai compri votre question j'ai fait entré dans phpmadmin cette requete
                      SELECT client.nom, client.prenom,devis.id_devis FROM client, devis WHERE devis.id_client = client.id_client
                      il m'affiche sa

                      Affichage des enregistrements 0 - 2 (3 total, Traitement en 0.0005 sec.)
                      1. je répète mes questions : quelle est la requête générée ? Que t'affiche phpmyadmin si tu lui donnes directement cette requête ?
                        1. j'ai vérifié encore avec les espace elle m'affiche seulement la derniére condition c àd l'orsque je rempli tout les champs du formulaire
                          1. Comme je ne vois pas de problème dans le code, je pense que c'est simplement qu'aucun enregistrement ne correspond à tes critères.
                            Affiche ta requête (echo $query; juste avant $result = mysql_query($query) or die(mysql_error()); ) et vérifie que la requête est bien celle à laquelle tu t'attends. Ensuite, recopie-là pour l'entrer directement dans phpmyadmin pour voir si tu as des réponses.
                            1. l'orsque j'ai mi les espace il ne m'affiche plus les erreur mais il m'affiche seulement le premier ligne du tableau avec nom ,prenom et numero devis seulement sa donc il ne récupaire pas les données de la base(un tableau vide)
                              1. lorsque je laise le formulaire vide et j'apui sue bouton chercher devis
                                il m'affiche cette erreur

                                Erreur de syntaxe pr?s de 'date='$annee-$mois-$jour'' ? la ligne 1

                                et lorsque je rempli le champ id_client par exemple par 2 il m'affiche sa

                                Erreur de syntaxe pr?s de 'id_devis='2'AND date='$annee-$mois-$jour'' ? la ligne 1

                                si je rempli tout les champs il m'affiche cette erreur

                                Erreur de syntaxe pr?s de 'societe='sotulube'AND id_devis='2'AND date='2010-01-01'' ? la ligne 1

                                svp aidez moi c urgent
                                mercii
                                1. Bonjour

                                  Peux-tu préciser ce qui ne marche pas ? Un message d'erreur ? Lequel ? Pas d'affichage ? etc...
                                  Je vois au moins un problème :
                                  $query=$query."AND societe='$societe'";
                                  Quand tu fais ça, comme il n'y a pas d'espace avant le AND, il vient se coller au client.id_client qui précède, ce qui donne ...client.id_clientAND societe=... au lieu de ...client.id_client AND societe=...