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

Langage PHP Discussion :

Menu déroulant dans tableau


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Par défaut Menu déroulant dans tableau
    Je débute en php et je bute... Voilà, j'ai un premier fichier avec un menu déroulant issu de Mysql, je choisis dans ma liste et je récupère les données dans un second fichier. Jusqu'ici pas de pb. Dans le second fichier, je récupère les données dans un tableau. Voici le 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <form method="post" name="anim" action="">
    <?php
    require ('conf.php');
    //Fichier de réception du formulaire listecole.php
    $postecole = $_POST['ecole'];
     
    echo ("<b>Ecole</> : $postecole<br/><br>");
     
    $query = mysql_query("SELECT Nom, Prénom FROM jos_ecole_etat where ECOLE='$postecole' ORDER BY Nom") OR die("impossible");
     
    //Déclare fonction
    function menuanim() {
      $rqani = mysql_query("SELECT anim FROM jos_anim ORDER BY ID");
      echo ('<select name="anim">');
      if ($produit == "") {
        echo ('<option value="' . '">' . '< Choisir >' . '</option>');
      }
      else {
        echo ('<option value="' . '">' . '</option>');
      }
      while ($ligne1 = mysql_fetch_object($rqani)) {
     
        echo ('<option>' . $ligne1->anim . '</option>');
      }
      echo ('</select>');
     
    }
     
    //tableau des données récoltées
    echo "<table border='1' cellpadding='1' cellspacing='1' align='left'>
    				<td><b>Nom</b></td>
    				<td><b>Prénom</b></td>
                                    <td><b>Animation 1</b></td>
                                    </tr>";
     
    	while ($row=mysql_fetch_array($query))
     
    {
     
    echo "<tr>
    <td>$row[Nom]</td>
    <td>$row[Prénom]</td>
    <td>$anim</td>
    <tr>";}
    echo "</table>";
     
    ?>
    </form>
    Mon tableau me donne bien les Noms et les Prénoms mais je voudrais intégrer dans chaque ligne, à la 3ème colonne, un menu déroulant généré par ma fonction. Ma fonction fonctionne, si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $menuanim='menuanim';
    $menuanim();
    J'obtiens bien mon menu déroulant mais impossible de trouver comment le placer dans le tableau!!
    Chaque ligne de mon tableau final devrait comporter le Nom, le Prénom et un menu déroulant (que j'ai appelé $anim dans la table) pour envoyer les choix de chacun dans un nouveau formulaire. Je ne sais pas si je suis très clair...
    Votre aide m'aidera à progresser.

  2. #2
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    Si j'ai bien compris voici ce que tu as fait
    while ($row=mysql_fetch_array($query)){

    echo "<tr>
    <td>$row[Nom]</td>
    <td>$row[Prénom]</td>
    <td>$anim</td>
    <tr>";
    }
    echo "</table>";
    Voici ce que tu dois faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while ($row=mysql_fetch_array($query)){
     
    echo "<tr>
    <td>$row[Nom]</td>
    <td>$row[Prénom]</td>
    <td>";
    menuanim();
    echo "</td>
    <tr>";
    }
    echo "</table>";

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Par défaut
    Bonjour,

    je n'ai que survolé votre code mais déjà quelques remarques :
    - votre fonction menuanim lance la requête et n'affiche qu'un seul résultat. Comme c'est une fonction, à moins que vous n'ayez défini des variables locales, vos variables sont spécifiques à la fonction (autrement dit les valeurs sont indépendantes des autres valeurs ailleurs dans le programme)
    Prévoyez une boucle à la place de la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $rqani = mysql_query("SELECT anim, ID FROM jos_anim ORDER BY ID");
    echo "<select name=\"id_anim\">
      <option value=\"\">< Choisir ></option>
    ";
    while (list($anim, $id_anim) = mysql_fetch_row($rqani)) {  //c'est bien de passer par les objets, mais avec un ou 2 résultats, simplifiez-vous le code
      echo ("<option value=\"$id_anim\">$anim</option>\r\n";
    }
    echo ('</select>');
    Ensuite, mais ce n'est qu'un conseil, évitez les accents dans le nom des champs ou des tables mysql (même si ça marche...), et évitez de mélanger les minuscules et les majuscules.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Par défaut
    Rebonjour,
    Je vois la réponse de Riete, qui me montre que nous sommes plusieurs à ne pas bien saisir ce que vous souhaitez obtenir.

    Je comprends votre tableau, avec le nom, prénom, et choix sélect.

    Ma question : est-ce que le choix sélect est EXACTEMENT le même pour toutes les cases ? Si oui, il ne faut pas lancer la requête autant de fois que vous avez de cases, mais une seule fois, et ensuite vous copiez...

    Si vous pouvez donner plus de détails, merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Par défaut
    Tout d'abord merci pour vos réponses, je vais essayer d'être plus clair :
    Je voudrais que s'affiche un tableau dans lequel chaque ligne aurait :

    Nom reçu par _Post Prénom reçu par _Post le menu déroulant, le même à chaque ligne, pour pouvoir faire un choix pour chaque Nom.

    J'ai modifié selon 'riete' mais mon menu s'affiche au dessus du tableau.

    Je viens de supprimer la fonction et la remplacer par une boucle selon 'papa6' mais faut que je regarde mieux, j'obtiens "Parse error: syntax error, unexpected ';' in E:\xampp\htdocs\Essais PHP\Joomla ecole\Document2.php on line 17".

    Pour les accents, le pire c'est que je le sais et je vais modifier le tout dans mes bases ainsi que les majuscules minuscules. Le tout en majuscule m'évitera les accents!

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Par défaut rajout identifiant individu
    En effet, mon code mélangeait les echos avec des parenthèses et des guillemets, alors que seuls les guillemets ou apostrophes qui remplissent ce rôle sont utiles...

    J'en profite pour rajouter dans le choix select un identifiant de l'individu afin que l'on sache qui a été modifié.

    Code d'extraction des anims, à n'appliquer qu'une seule fois pour toutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rqani = mysql_query("SELECT anim, ID FROM jos_anim ORDER BY ID");
    Recherche de l'identifiant de l'individu également
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = mysql_query("SELECT Nom, Prénom, ID_bonhomme FROM jos_ecole_etat where ECOLE='$postecole' ORDER BY Nom") OR die("Erreur sur la requ&ecirc;te xxx : " . mysql_error());
    Puis dans chaque case du tableau
    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
    echo "<select name=\"id_anim[$row[ID_bonhomme]]\">
      <option value=\"\">< Choisir ></option>
    ";
    if( ! isset($tab_maliste)) {
      // Premier passage
      while (list($anim, $id_anim) = mysql_fetch_row($rqani)) {  // toujours pas besoin de se compliquer avec mysql_fetch_array, fetch_assoc, etc. fetch_row suffit
        $tab_maliste[$id_anim] = $anim;
        echo "<option value=\"$id_anim\">$anim</option>\r\n";
      }
    } else {
      foreach($tab_maliste as $cle => $val) {
        echo "<option value=\"$cle\">$val</option>\r\n";
      }
    }
    echo '</select>';

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Par défaut des menus, pas de contenu
    Bien, je sens que ça avance, enfin plus vous que moi quoique j'en ai beaucoup appris aujourd'hui. Bien, je joins mon nouveau script qui me donne bien dans chaque case un menu déroulant mais pas de contenu.... mes requêtes ne sont pas déclarées au bon endroit ? des accolades qui manquent ?
    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
    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
    <form method="post" name="anim" action="">
    <?php
    require ('conf.php');
    //Fichier de réception du formulaire listecole.php
    $postecole = $_POST['ecole'];
    echo ("<b>Ecole</> : $postecole<br/><br>");
     
    $query = mysql_query("SELECT Nom, Prénom, id_nom FROM jos_ecole_etat where ECOLE='$postecole' ORDER BY Nom") OR die("impossible");
    $rqani = mysql_query("SELECT anim, id_anim FROM jos_anim ORDER BY ID");
     
    //tableau des données récoltées
     
    echo "<table border='1' cellpadding='1' cellspacing='1' align='left'>
    				<td><b>Nom</b></td>
    				<td><b>Prénom</b></td>
                    <td><b>Animation 1</b></td>
                    </tr>";
     
     
    while ($row=mysql_fetch_array($query))
     
    {
    echo "<tr>";
    echo "<td>";
    echo "<select name=\"id_anim[$row[id_nom]]\"><option value=\"\">< Choisir ></option>";
    if( ! isset($tab_maliste)) {
      // Premier passage
      while (list($anim, $id_anim) = mysql_fetch_row($rqani)) {  // toujours pas besoin de se compliquer avec mysql_fetch_array, fetch_assoc, etc. fetch_row suffit
        $tab_maliste[$id_anim] = $anim;
        echo "<option value=\"$id_anim\">$anim</option>\r\n";
      }
    } else {
      foreach($tab_maliste as $cle => $val) {
        echo "<option value=\"$cle\">$val</option>\r\n";
      }
    }
    echo "'</select>';</td>";
     
    echo "<td>";
    echo "<select name=\"id_anim[$row[id_nom]]\"><option value=\"\">< Choisir ></option>";
    if( ! isset($tab_maliste)) {
      // Premier passage
      while (list($anim, $id_anim) = mysql_fetch_row($rqani)) {  // toujours pas besoin de se compliquer avec mysql_fetch_array, fetch_assoc, etc. fetch_row suffit
        $tab_maliste[$id_anim] = $anim;
        echo "<option value=\"$id_anim\">$anim</option>\r\n";
      }
    } else {
      foreach($tab_maliste as $cle => $val) {
        echo "<option value=\"$cle\">$val</option>\r\n";
      }
    }
     
    echo "'</select>';</td>";
     
    echo "<td>";
    echo "<select name=\"id_anim[$row[id_nom]]\"><option value=\"\">< Choisir ></option>";
    if( ! isset($tab_maliste)) {
      // Premier passage
      while (list($anim, $id_anim) = mysql_fetch_row($rqani)) {  // toujours pas besoin de se compliquer avec mysql_fetch_array, fetch_assoc, etc. fetch_row suffit
        $tab_maliste[$id_anim] = $anim;
        echo "<option value=\"$id_anim\">$anim</option>\r\n";
      }
    } else {
      foreach($tab_maliste as $cle => $val) {
        echo "<option value=\"$cle\">$val</option>\r\n";
      }
    }
     echo "'</select>';</td>
    <tr>";
    }
    echo "</table>";
     
    ?>
    </form>
    Heureusement que j'ai 1 mois et demi pour préparer tout ça.

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

Discussions similaires

  1. bouton avec menu déroulant dans la tool bar.
    Par archerhawke dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 27/10/2009, 19h50
  2. Menu déroulant dans un tableau
    Par alucard02 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/07/2009, 14h27
  3. menu déroulant dans un tableau
    Par logiciel_const dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 22/07/2008, 13h10
  4. Menu déroulant dans un formulaire
    Par basto dans le forum IHM
    Réponses: 1
    Dernier message: 15/03/2007, 15h21
  5. [XSLT][>(X)HTML/JS] Menu déroulant dans XSL
    Par tomy29 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/01/2007, 11h17

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