Affichage et condition en sql

maleckk Messages postés 78 Statut Membre -  
maleckk Messages postés 78 Statut Membre -
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. le père
     
    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=...
    0
  2. maleckk Messages postés 78 Statut Membre
     
    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
    0
  3. maleckk Messages postés 78 Statut Membre
     
    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)
    0
  4. le père
     
    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.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. maleckk Messages postés 78 Statut Membre
     
    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
    0
  7. le père
     
    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 ?
    0
  8. maleckk Messages postés 78 Statut Membre
     
    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.)
    0
  9. le père
     
    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 ?
    0
  10. maleckk Messages postés 78 Statut Membre
     
    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'
    0
  11. maleckk Messages postés 78 Statut Membre
     
    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;
    0
  12. le père
     
    $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
    0
  13. maleckk Messages postés 78 Statut Membre
     
    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'
    0
  14. le père
     
    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 ?
    0
  15. maleckk Messages postés 78 Statut Membre
     
    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
    0
  16. le père
     
    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.
    0
  17. maleckk Messages postés 78 Statut Membre
     
    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
    0