IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Problème avec liste déroulante et select


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut [SQL] Problème avec liste déroulante et select
    Bonsoir,
    le problème c'est que lorsque je ne choisis rien dans ma liste déroulante, la valeur par défaut est vide; maintenant lorsque j'envoie cette valeur vide dans la requete j'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [jour] => [heure] => [NumNat] => [NumClient] => [NumDecl] => [description] => [envoi] => Valider [MM_insert] => form1 ) Erreur de syntaxe près de 'LIMIT 0, 2' à la ligne 1
    Au passage, la valeur valeur par défaut de champ NumDecl est 0

    Comment faire pour contourner le problème??
    Merci.

  2. #2
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Bonjour
    Cette erreur est une erreur sur une requête SQL.
    Tu ne nous donnes que la sortie, on ne va pas pouvoir en faire grand chose.
    Un ou deux petits bouts de code judicieusement choisis nous seraient très utiles.

  3. #3
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_rsincident = "SELECT  I.NumInc, I.jourAppel, I.heure, I.NumNat, I.description, I.NumDecl, D.NumDecl, D.Nom, C.NumCli, I.NumCli, C.Raison_sociale, N.NumNat, N.nature  FROM incident as I, client as C, declarants as D, nature as N WHERE C.NumCli=I.NumCli and D.NumDecl = I.NumDecl and I.NumNat= N.NumNat  and  I.NumDecl  = ".$NumDecl." ";
    liste déroulante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     <td>Déclarant</td>
                <td> <select name="NumDecl" id="NumDecl">
    			      <option value="" ><option>
                    <?php
    					do {  
    				  ?>
     
    				<option value="<?php echo $row_rsdecl['NumDecl']?>"><?php echo $row_rsdecl['Nom']; ?>&nbsp;&nbsp;<?php echo $row_rsdecl['Prenom']; ?></option>
                    <?php
    						} while ($row_rsdecl = mysql_fetch_assoc($rsdecl));
     						 $rows = mysql_num_rows($rsdecl);
     						 if($rows > 0) {
          					mysql_data_seek($rsdecl, 0);
    	  					$row_rsdecl = mysql_fetch_assoc($rsdecl);
     						 }
    				?>
                  </select> </td>

  4. #4
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    $NumDecl c'est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if  (!isset($_POST['NumDecl']))     
                 {
    	$NumDecl=trim($_GET['NumDecl']);
    	}
    else
       {	$NumDecl=trim($_POST['NumDecl']);
      }

  5. #5
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    et où est-ce que tu passes ta requête ?

  6. #6
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    1/- $NumDecl vient d'un formulaire form1 (c'est le nom de la liste déroulante)
    2/-avec un GET, j'envoie les données de form1 dans le formulaire recherchclient.php
    C'est sur ce formulaire qu'il ya la requete .

    je ne sais pas si j'ai répondu à :
    et où est-ce que tu passes ta requête ?

  7. #7
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    ce qui est là, c'est que quand on selectionne une valeur dans la liste déroulante, il n'ya pas de problème!!

    MAis quznd, c'est le vide de la liste déroulante qui va dans la requete, c'est à ce niveau qu'il ya problème.

  8. #8
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Tu fais sans doute un mysql_query quelque part, est-ce qu'on peut le voir ?

  9. #9
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $query_limit_rsincident = sprintf("%s LIMIT %d, %d", $query_rsincident, $startRow_rsincident, $maxRows_rsincident);
    $rsincident = mysql_query($query_limit_rsincident, $connection) or die(mysql_error());
    $row_rsincident = mysql_fetch_assoc($rsincident);

  10. #10
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Tu peux modifier ton "or die" pour afficher aussi $query_limit_rsincident ? Comme dans ma signature (ça sera plus facile pour trouver des erreurs dans ta requête)

  11. #11
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo ( $query_rsincident);
    donne:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-7\www\suivi_incident\recherchincident.php on line 51
    SELECT I.NumInc, I.jourAppel, I.heure, I.NumNat, I.description, I.NumDecl, D.NumDecl, D.Nom, C.NumCli, I.NumCli, C.Raison_sociale, N.NumNat, N.nature FROM incident as I, client as C, declarants as D, nature as N WHERE C.NumCli=I.NumCli and D.NumDecl = I.NumDecl and I.NumNat= N.NumNat and I.NumDecl =
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-7\www\suivi_incident\recherchincident.php on line 62

  12. #12
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    lorsque la liste déroulante n'est pas vide, je n'ai aucune érreur!!!

    l'erreur apparait lorsqu'elle est vide, c'est a dire aucun éléments n'est sélectionné!

  13. #13
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    ta requête se termine par "I.NumDecl=" et rien derrière, c'est à ça que ça correspond quand rien n'est sélectionné ?

  14. #14
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    oui

  15. #15
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par cari
    oui
    et... ? tu voudrais mettre 0 à la place c'est ça ?

    Tu donnes ce code-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if  (!isset($_POST['NumDecl']))     
                 {
    	$NumDecl=trim($_GET['NumDecl']);
    	}
    else
       {	$NumDecl=trim($_POST['NumDecl']);
      }
    Il faut te décider entre POST et GET. Soit ton formulaire est en POST (de préférence), soit il est en GET. Pas la peine de tester les deux. Je vais supposer qu'il est en POST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if  (isset($_POST['NumDecl'])) {
      $NumDecl=trim($_GET['NumDecl']);
      if ($NumDecl=="") {
        $NumDecl = 0;
      }
    }
    else {
      $NumDecl=0;
    }

  16. #16
    Membre habitué
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Points : 146
    Points
    146
    Par défaut
    il est en GET mon formulaire.

    le problème c'est que c'est uen requete dans ma table, il n'ya pas de NumCli =0 et de plus, c'est pas le seul élément de la table!!
    ce qui fais que lorsque pour les autres champs (exemple : NumCli et NumNat ,je suis le meme raisonnemnemt, j'ai des pas les résultats escomptés, la requete ne renvoit plus d'élements!

    Voici la requete complète:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_rsincident = "SELECT  I.NumInc, I.jourAppel, I.heure, I.NumNat, I.description, I.NumDecl, D.NumDecl, D.Nom, C.NumCli, I.NumCli, C.Raison_sociale, N.NumNat, N.nature  FROM incident as I, client as C, declarants as D, nature as N WHERE C.NumCli=I.NumCli and D.NumDecl = I.NumDecl and I.NumNat= N.NumNat  and  I.NumDecl  = ".$NumDecl."  and  I.NumCli = ".$NumClient." and  I.NumNat  = ".$NumNat." and  I.jourAppel like '%" .$jour."%' and I.heure  like '%" .$heure."%'  and I.description like '%" .$description."%'   ";

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/01/2010, 12h16
  2. problèmes avec liste déroulante
    Par _MattU_ dans le forum VBA Access
    Réponses: 5
    Dernier message: 17/06/2008, 09h52
  3. [AJAX] Liste déroulante
    Par fourniey dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/01/2008, 04h14
  4. Problème avec listes déroulantes
    Par dl_jarod dans le forum Langage
    Réponses: 9
    Dernier message: 07/06/2006, 10h13
  5. Problème avec liste déroulante
    Par Invité dans le forum IHM
    Réponses: 2
    Dernier message: 14/12/2005, 21h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo