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 :

input radio récupérant donnée mysql


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 118
    Points
    118
    Par défaut input radio récupérant donnée mysql
    Bonjour

    J'arrive à récupérer des résultats d'une requête select sur mysql dans un input text avec l'option value.
    Par contre je souhaite récupérer la valeur enregistrée dans une colonne de ma base, définie en ENUM avec 3 choix possibles, dans un input radio, qui m'affiche mes 3 choix dont celui qui est coché (enregistré en base)

    Est-ce que quelqu'un peut m'indiquer la syntaxe ?

    Merci

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Je pense que tu vas devoir t’y prendre en plusieurs requêtes, en commençant par une SHOW COLUMNS. Le champ type te permettra de connaître tous les boutons radio possibles. Et ensuite tu fais une SELECT classique
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par CoeurDeSQL Voir le message
    ...J'arrive à récupérer des résultats d'une requête select sur mysql dans un input text avec l'option value...
    Montre déjà ce que sais faire.

    Tu ne nous dis même pas si tu utilises mysql_, mysqli_, PDO,...
    Dernière modification par Invité ; 10/11/2018 à 10h33.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 118
    Points
    118
    Par défaut
    Oui bien sûr, j'ai une table utilisateur avec le nom, le prénom et la civilité, que je souhaite modifier si besoin.

    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
     
    $sql = 'select * from utilisateur ;';
    	$req = mysqli_query($co, $sql);
    	echo '<form action="updateuser.php" method="post" id="users"><center>';
    	while($donnees = mysqli_fetch_array($req))
    	{	
     
    	echo'
    	<table border="0">
    	<tr><td>Nom : </td><td><input type="text" name="Nom" value="'.$donnees['nom'].'" required></td></tr>
    	<tr><td>Pr&eacute;nom : </td><td><input type="text" name="Prenom" value="'.$donnees['prenom'].'" required></td></tr>
    	<tr><td>Civilit&eacute; : </td><td><input type="radio" name="civilite" value="'.$donnees['civilite'].'" id="M" required> <label for="M"> Monsieur
    						<input type="radio" name="civilite" value="'.$donnees['civilite'].'" id="Mme" required> <label for="Mme"> Madame
    						<input type="radio" name="civilite" value="'.$donnees['civilite'].'" id="Mlle" required> <label for="Mlle">Mademoiselle</td></tr>
    </table>

  5. #5
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Salut. Essaie ceci.
    Ca s'appelle une condition ternaire, cette partie ($donnees['civilite']=='Madame'?'checked':NULL) et ça se traduit par "Si la variable récupérée en base est égale à Madame alors écris 'checked' sinon, rien..."

    PS : on ne met plus Melle sur les formulaires, ce sont les règles officielles. C'est M ou Mme... pour des raisons évidentes d'égalité des genres.
    Fillon (qui n'a pas fait que des bêtises), avait passé cette loi quand il était premier ministre... en 2012, déjà 6 ans quand même !

    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
    <?php
    $sql = 'select * from utilisateur ;';
    $req = mysqli_query($co, $sql);
    echo '<form action="updateuser.php" method="post" id="users">';
    $i=1;
    while($donnees = mysqli_fetch_array($req))
    {	
      echo'
      <table border="0">
        <tr><td>Nom : </td><td><input type="text" name="Nom_'.$i.'" value="'.$donnees['nom'].'" required></td></tr>
        <tr><td>Prénom : </td><td><input type="text" name="Prenom_'.$i.'" value="'.$donnees['prenom'].'" required></td></tr>
        <tr><td>Civilité : </td>
          <td>
            <input type="radio" name="civilite_'.$i.'" value="Monsieur" '.($donnees['civilite']=='Monsieur'?'required':NULL).'" required>
            <input type="radio" name="civilite_'.$i.'" value="Madame" '.($donnees['civilite']=='Madame'?'required':NULL).'" required>
          </td>
        </tr>
      </table>';
      $i++;
    }
    echo '<input type="submit" name="valider" value="OK"></form>';
    ?>
    Par ailleurs, tu oubliais un gros truc : puisque tu veux pouvoir éditer tous tes utilisateurs d'un coup, tu es obligé de les numéroter dans le name (ajout de $i) si tu veux les récupérer proprement. Sur la page de traitement, écris juste ceci pour voir si tu récupères bien tout comme tu veux : ce que tu as récupéré via ta base modifié de tes éventuelles saisies dans ton formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Je plussoie Dendrite. Cette variable $i est effectivement essentielle pour empêcher que tous les boutons radios de toutes les lignes du tableau soient liés.
    C’est valable aussi pour les attributs id, et donc aussi les for des balises <label>. Il existe une syntaxe alternative des labels, parfois jugée moins propre mais qui permet de se passer des attributs for et id :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <label>
      Monsieur
      <input ... >
    </label>
    <label>
      Madame
      <input ... >
    </label>

    Note importante : à cause de l’existence de cette syntaxe, il est important de fermer les balises <label>. En fait, c’est une bonne idée de fermer toutes les balises, de manière générale.

    Un autre problème : la balise <table> dans la boucle while… Je propose de réécrire comme ceci :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo '<form action="updateuser.php" method="post" id="users">';
     
    echo '<table>';
    while ($donnees = mysqli_fetch_array($req)) {
        echo "<tr>
            ...
        </tr>";
    }
    echo '</table>';

    J’ai également supprimé la balise <center> et l’attribut border pour les remplacer par des déclarations de style :
    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #users table {
        margin: auto;
        border: none;
    }
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- inutile d'utiliser une variable $i, alors qu'on a déjà un identifiant unique pour chaque ligne : $donnees['id'] !
    2- séparer le code PHP du code HTML rend le script plus clair
    3- et aussi : bien structurer la table HTML

    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
    <?php
      $sql = "SELECT * FROM utilisateur ORDER BY nom ASC, prenom ASC;";
      $req = mysqli_query($co, $sql);
    ?>
    <form action="updateuser.php" method="post" id="users">
      <table border="0">
        <thead>
          <tr>
            <th>Nom</th>
          </tr>
          <tr>
            <th>Prénom</th>
          </tr>
          <tr>
            <th>Civilité</th>
          </tr>
        </thead>
        <tbody>
    <?php
      while($donnees = mysqli_fetch_array($req))
      {	
    ?>
          <tr>
            <td><input type="text" name="nom[<?php echo $donnees['id']; ?>]" value="'.$donnees['nom'].'" required="required" /></td>
          </tr>
          <tr>
            <td><input type="text" name="prenom[<?php echo $donnees['id']; ?>]" value="'.$donnees['prenom'].'" required="required" /></td>
          </tr>
          <tr>
            <td>
              <input type="radio" name="civilite[<?php echo $donnees['id']; ?>]" value="Monsieur"<?php ($donnees['civilite']=='Monsieur')? 'checked="checked"':''; ?>" required="required" />
              <input type="radio" name="civilite[<?php echo $donnees['id']; ?>]" value="Madame"<?php ($donnees['civilite']=='Madame')? 'checked="checked"':''; ?>" required="required" />
            </td>
          </tr>
    <?php
      }
    ?>
        </tbody>
      </table>
      <input type="submit" name="valider" value="OK" />
    </form>

    N.B. Il est préférable d'écrire name="nom[xxx]" (avec des crochets) plutôt que name="nom_xxx".

    1- Avec name="nom_xxx", il faudrait boucler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for( $i=1; $i< ?????; $i++ ) // on NE connais PAS le nombre total !
    {
       $recup_name[$i] = $_POST['nom_'.$i];
    }
    Pas bon.
    D'autant qu'on ne récupère pas l'id (index auto-incrémenté) de l'enregistrement !!

    2- Alors qu'avec name="nom[xxx]", la récupération se fait en une seule fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $recup_nom = $_POST['nom']; // ceci est un array contenant toutes les valeurs
    On récupère aussi facilement chaque ligne, avec son id.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach( $recup_nom as $index => $val) // pour chaque ligne
    {
       $id = $index; // $id est l'id (auto-incrément) de la ligne concernée
       $nom = $val; // équivalent à $_POST['nom'][$id];
       $prenom = $_POST['prenom'][$id];
       $civilite = $_POST['civilite'][$id];
       // Traitement de la ligne
       // .........
    }

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 118
    Points
    118
    Par défaut
    Merci pour vos retours et votre aide.
    Je vais tester demain et je vous tiens au courant au plus vite

    Bonne soirée

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 241
    Points : 118
    Points
    118
    Par défaut
    bonjour

    j'ai testé vos propositions mais j'étais toujours dans bloqué.
    j'ai contournée en affichant la donnée actuelle et en refaisant mon input radio "name" où on recoche pour faire une maj derrière.

    merci tout de même pour vos aides

Discussions similaires

  1. [newbie] radio button + input: conserver les données
    Par fredlocus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/10/2009, 10h46
  2. [MySQL] envoi des données de boutons radio dans table mysql
    Par alexbigot dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 07/06/2007, 13h51
  3. probleme construction base de donnes MySql...Help
    Par chakan dans le forum Requêtes
    Réponses: 7
    Dernier message: 21/07/2004, 11h27
  4. connection à base de donnée MYSQL
    Par zouzou_zaza dans le forum Bases de données
    Réponses: 11
    Dernier message: 04/07/2004, 12h31
  5. XML->Base de donnée Mysql
    Par lheureuxaurelie dans le forum XQUERY/SGBD
    Réponses: 4
    Dernier message: 10/03/2004, 23h47

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