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 :

Liste déroulante et requète [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 24
    Points : 14
    Points
    14
    Par défaut Liste déroulante et requète
    Bonjour tout le monde. Je sais que ce sujet a déja été traité mais je ne suis pas arrivé a corriger mon probleme...

    Voilà je vais expliquer ou je bloque :

    j'ai une table unique qui me sert de base de données. dbterrain

    je souhaite pouvoir afficher sur une page les différente information contenu dans ma base de données (donc ma table)

    il s'avère que j'ai ajouté un champ dans ma table : le champ departement qui est un entier. La valeur de ce champ provient d'une liste déroulante (valeur possible "01","02","03")

    j'espère etre assez clair pour le moment

    Ce que je souhaite donc c'est quand j'execute ma requete "SELECT * from dbterrain" que j'affiche sur la page tous les renseignements. Mais dans le cas d'une modification de l'enregistrement, j'aimerai afficher la liste déroulante avec les valeurs ("01","02","03") mais que la valeur selectionné dans la liste soit la valeur retourné par ma requète...

    j'espere etre toujours clair

    Voici mon code

    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
    18
    19
    20
    21
    22
    23
    24
    25
    $requete = "SELECT * from dbterrain";
     
     $mysql = mysql_query( $requete );
     
     while ( $resultat = mysql_fetch_array($mysql))
     {
     echo
      '
         <tr onmouseover=\'mOvr(this)\' onmouseout=\'mOut(this)\' >
              <td bgcolor=#F9E4C9><select name="departement'.$resultat[0].'" selected='.$resultat[6].' id="inputboxsai"/>
                <option value="01">01</option>
                <option value="02">02</option>
                <option value="03">03</option>
                </td>
              <td bgcolor=#F9E4C9><input type="text" name="ville'.$resultat[0].'" size="30" value='.$resultat[1].' id="inputboxsai"/></td>
              <td bgcolor=#F9E4C9><input type="text" name="surface'.$resultat[0].'" size="12" value='.$resultat[2].' id="inputboxsai"/></td>
              <td bgcolor=#F9E4C9><input type="text" name="prix'.$resultat[0].'" size="12" value='.$resultat[3].' id="inputboxsai"/></td>
              <td bgcolor=#F9E4C9><input type="text" name="ref'.$resultat[0].'" size="8" value='.$resultat[4].' id="inputboxsai"/></td>
              <td align=center  bgcolor=#F9E4C9>
                  <input type="checkbox" name="supp[]" value='.$resultat[0].' />
                  <input type=hidden name="mod[]" value='.$resultat[0].' checked>
              </td>
          </tr>
      ';
      }
    je sais qu'il y a beaucoup d'erreur dans mon code. J'ai ajouté comme je l'ai dit la liste déroulante par la suite. Mon code fonctionné bien avant cette liste déroulante

    la valeur est la valeur retourné par ma requete pour la 7eme colonne de ma table, celle de departement

    Je suis reelement perdu, et je commence a tourné de l'oeil a force de tout essayer.

    En espérant qu'on puisse éclairer ma lanterne

    Merci et bon dev'

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    489
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 489
    Points : 388
    Points
    388
    Par défaut
    salut,

    il te faut plutot une instruction dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($jour == $jour_naissance) {echo(" selected='selected' ");};
    sauf qu'a la place de $jour et $jour_naissance, tu teste tes valeurs $resultat[6] et ... le 0-1-2 etc

    Au passage, plutot que de preciser chacune de tes options, tu devrais avoir une boucle du style..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	echo ("<select name='jour_naissance' id='jour_naissance'>\n\r");
    	for ($i=1;$i<=31;$i++) {
    		if (strlen($i) < 2){$jour="0".$i;} else {$jour=$i;};
    		echo ("<option value='".$jour."'");
    		if ($jour == $jour_naissance) {echo("selected='selected'");};
    		echo (">".$jour."</option>\n\r");
    	}
    	echo ("</select>\n\r");
    [/code]

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : Tunisie

    Informations forums :
    Inscription : Août 2002
    Messages : 141
    Points : 97
    Points
    97
    Par défaut
    j'utilise ce code qui marche parfetement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	$monsql="select * from nationalite";
    	if($monrs = mysql_query($monsql))
    	?>
    	  <select name="cod_nationalite">
    	  <option value="0" selected></option>
    	  <?php
    	   while($maligne = mysql_fetch_array($monrs)) {
    	?>
    	  <option value="<? echo $maligne["cod_nationalite"] ?>"><? echo $maligne["lib_nationalite"] ?></option>
    	  <? } ?>
    	  </select>

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par zevince
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if ($jour == $jour_naissance) {echo(" selected='selected' ");};
    Plus précisément :
    En XHTML, les valeurs des attibuts doivent être entre doubles quotes.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    Bonjour et surtout Merci pour votre aide, mais apparement le problème a lieu lorsque que je récupere les valeurs de ma requetes...

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in f:\dev\site\client\pro\ivr\maisonlib\adm\index.php on line 81

    je m'explique, j'ai donc enelvé tous mes affichages pour recommencer doucement et faire afficher mes valeurs au fur et a mesure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $requete = "SELECT * from dbterrain";
     
    $mysql = mysql_query( $requete );
     
     while ( $resultat = mysql_fetch_array($mysql))
     {
     echo ''.$resultat[0].'';
    donc j'essaie de faire afficher le premier element retourné de ma requete... qui est l'id

    mais il me retourne l'erreur ci dessus en indiquant la ligne
    while ( $resultat = mysql_fetch_array($mysql))
    bref je patauge...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 123
    Points : 97
    Points
    97
    Par défaut
    quand tu veux modifier une donnée tu fais ça grace à un formulaire ?

    Moi pour ce genre de choses.
    si je clique sur le titre par exemple, j'arrive sur une autre page modifier qui contient un formulaire.
    dans le forumulaire je vais afficher un nom pour les données et leur valeurs actuelles dc un input=\"text\"
    si j'ai besoin je fais récupère les données que je veux afficher dans une liste déroulante.
    par exemple pour toi les départements. je suppose que ds ta table tu as le nom des départements ainsi que leur numéro.
    dc tu fais ta réquete pour récup le num et le nom du dept. et
    while($var=mysql_fetch_array($marequete))
    {
    echo"<option value=".$var['num']."">".$var['Nomdépartement']."
    ;}</option>

    et hop valider et puis tu fais tes requetes de récupération de ton formulaire pour tout modifier

  7. #7
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Tu as une erreur dans ta requête ou dans ta connexion.
    Rajoute ceci dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mysql=mysql_query($requete) or die(echo mysql_error());

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    bonjour et merci a tous, en trifouillant et grace a vos morceau de code, j'ai creer une fonction. Elle me permet donc d'afficher les 3 valeurs que je souhaitait en plus d'une valeur "".

    il me reste un soucis celui de faire afficher la valeur présente dans la base (ca doit bloquer au niveau du SELECTED) car pour le moment chaque liste déroulante crée se positionne sur sa 1ere valeur la valeur: ""

    voici le code de ma fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function iFctAffCP($dep,$val)
    {
        echo'<option value='.$dep;
        if ($dep==$val)
        {
        echo ' SELECTED="selected"';
        }
        echo '> '.$dep.'</option>';
    }

    et voici mes 4 appels de cette fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     iFctAffCp("",$resultat[6]);
                iFctAffCp("07",$resultat[6]);
                iFctAffCp("26",$resultat[6]);
                iFctAffCp("38",$resultat[6]);
    a mon avis ca provient de SELECTED, enfin ca paraitrait logique. J'ai essayé en ne méttant que ca ne fonctionne pas non plus ma liste se rempli mais elle ne se positionne pas sur ma valeur contenue dans la base de données.

    Si quelqun a une idée je suis preneur

    merci d'avance Have Fun'

  9. #9
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Normalement le "SELECTED" seul devrait faire ce que tu cherches. Tu as regardé le code HTML généré pour vérifier que tout se passe comme tu veux ?
    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)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    bonjour Jwhite

    Oui je vient de le regarder... et apparement c'est toujours sur la valeur "" qu'il apparait... , je supose donc que la fonction a un soucis.


    Ma page permet a un administrateur de modifier sa base et notemment le champ departement a l'aide de cette liste déroulante. J'ai donc choisi pour un enregistrement, une valeur et j'ai ensuite valider la page. en réaffichant ma page la valeur enregistré via mon formulaire s'affiche correctement

    tant mieux vous allez me dire ( ), mais je ne comprend pas pourquoi. Car quand je retourne dans ma base de nombreux enregistrement contiennent un departement

    je comprend pas très bien la...

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    euh, j'avance tout doucement et apparament ca fonctionne bien en passant par le formulaire pour remplir ma table.. sauf que... quand j'insere une valeur vide (""), ca me met dans la base la valeur "se" a la place d'avoir un champ vide... Quelqun sait-il pourquoi ?

    merci

  12. #12
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Je pense que tu devrais afficher les requêtes que tu construis pour voir ce qui est réellement fait dans ta base.
    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)

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 24
    Points : 14
    Points
    14
    Par défaut
    C'est bon finalement c'est résolu, ca va paraitre bête mais le "se" provient de "selected", mon champ avait pour taille 2 il prenait donc les deux première lettres de Selected.

    merci a tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Liste déroulante et requête SQL
    Par dahu17 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/02/2008, 19h53
  2. liste déroulante pour requête
    Par swissmade dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 16/08/2007, 09h52
  3. [VBA] liste déroulante avec requête
    Par dalmasma dans le forum VBA Access
    Réponses: 17
    Dernier message: 16/07/2007, 14h52
  4. Liste déroulante sur requête
    Par guiguikawa dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 21/06/2006, 12h31

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