[RESOLU] Alimentation d'un select avec une valeur de la BBD

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Alimentation d'un select avec une valeur de la BBD

Re: Alimentation d'un select avec une valeur de la BBD

par JAG11 » 22 mars 2021, 10:48

Merci à tous, je post un autre sujet car j'ai un problème sur un formulaire de mise à jour.

Re: Alimentation d'un select avec une valeur de la BBD

par JAG11 » 22 mars 2021, 10:47

Pour mon select je pense avoir régler mon problème comme cecii pour la mise à jour.
C'est à dire qu'à l’ouverture du formulaire, j'affiche ma valeur existante avec

Code : Tout sélectionner

<?= $result['Type_Long'] ?>
et je peux peux la modifier après avoir mis

Code : Tout sélectionner

value="<?= $result['Id_Type_Assos'] ?>"
code complet du select en mise à jour de valeur.

Code : Tout sélectionner

<select required name="Id_Type_Assos">; <option value="<?= $result['Id_Type_Assos'] ?>"> <?= $result['Type_Long'] ?> </option> <?php // On inclut la connexion à la base try { include("../connect.php"); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $resultat = $db->query('SELECT Id_Type_Assos, Type_Long FROM t_type_assos where Id_Type_Assos =1 or Id_Type_Assos =5'); while ($donnees = $resultat->fetch()) { echo '<option value="' . $donnees['Id_Type_Assos'] . '">' . $donnees['Type_Long'] . '</option>'; }; $resultat->execute(); $resultat->closeCursor(); require_once('../close.php'); ?> </select>

Re: Alimentation d'un select avec une valeur de la BBD

par two3d » 20 mars 2021, 11:37

Que dit le débug ?

Re: Alimentation d'un select avec une valeur de la BBD

par Figuedi » 20 mars 2021, 10:57

pas tout lu pas tout vu et super débutant mais ça je l'ai fait comme ça

    
$query = "SELECT DISTINCT type FROM pieces WHERE type LIKE '".$rech."' ORDER BY type DESC";
    try {
        $pdo_select = $pdo->prepare($query);
        $pdo_select->execute();
        $NbreData = $pdo_select->rowCount();    // nombre d'enregistrements (lignes)
        $rowAll = $pdo_select->fetchAll();      // tout dans le meme tableau
} catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); } 
?>
</head>
  <body>
    <form>
        <select id="rech" name="rech" size="1" required onChange="rechercher()">
            <?php 
				for ($i=0;$i<$NbreData;$i++){
                echo '<option id="type" value="'.$rowAll[$i]["type"].'">'.$rowAll[$i]["type"].'</option>';
            }
            ?>
        </select>

Re: Alimentation d'un select avec une valeur de la BBD

par JAG11 » 20 mars 2021, 10:10

merci

Re: Alimentation d'un select avec une valeur de la BBD

par two3d » 20 mars 2021, 01:05

Merci, fais un débug sur tes données, voir ce que contient $resultat, $donnees,etc..

Utilise var_dump ou print_r sur ces variables et assure toi qu'elles contiennent des données.

Affiche les erreurs PHP à l'écran.

Re: Alimentation d'un select avec une valeur de la BBD

par JAG11 » 19 mars 2021, 17:19

Super ton site mais j'avoue que je ne trouve pas la solution

Re: Alimentation d'un select avec une valeur de la BBD

par two3d » 19 mars 2021, 16:49

Le required c'est pour le parent (soit select, non option).

Quand c'est "required", le formulaire ne pourra pas être soumis si le champs n'est pas rempli/sélectionné.

Pour ré afficher les champs d'un formulaire, j'ai partagé des fonctions qui se chargent du travail, sur mon site: https://www.c2script.com/scripts/reaffi ... p-s38.html

Re: Alimentation d'un select avec une valeur de la BBD

par JAG11 » 19 mars 2021, 16:48

En effet, je n'avais pas résolu mon problème pour la modification. C'est bon pour la création et mettre une valeur par défaut mais la modification je ne trouve pas. Et pour ta solution sur mon code PHP, je ne trouve pas
il faut sélectionner par défaut la valeur déjà sauvée en base, en mettant le selected dans la bonne option.
Mon code:

Code : Tout sélectionner

<select name="Id_Assos_Mere">; <option value="<?= $result['Nom_Long'] ?>" selected></option> <?php // On inclut la connexion à la base try { include("../connect.php"); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $resultat = $db->query('SELECT Id_Assos_Mere, Nom_Long FROM t_assos_mere ORDER BY Nom_Long ASC'); while ($donnees = $resultat->fetch()) { echo '<option value="' . $donnees['Id_Assos_Mere'] . '">' . $donnees['Nom_Long'] . '</option>'; }; $resultat->execute(); $resultat->closeCursor(); require_once('../close.php'); ?> </select>

Re: [RESOLU] Alimentation d'un select avec une valeur de la BBD

par or 1 » 19 mars 2021, 15:51

si c'est pour une modification, que l'association avait déjà une sélection pour ce champ, forcer une autre valeur déjà présélectionnée, oblige l'utilisateur à resélectionner la bonne valeur dans la liste avant chaque soumission du formulaire. ce n'est pas ergonomique du tout. il faut sélectionner par défaut la valeur déjà sauvée en base, en mettant le selected dans la bonne option.

Re: Alimentation d'un select avec une valeur de la BBD

par JAG11 » 19 mars 2021, 15:44

En fait j'ai trouvé à priori c'est comme cela

Code : Tout sélectionner

<select name="Id_Assos_Mere">; <option value="1" selected required>Néant</option>

Re: Alimentation d'un select avec une valeur de la BBD

par JAG11 » 19 mars 2021, 15:40

Merci pour l'orientation
J'ai écris ceci, mais par défaut je n'ai rien qui s'affiche.

Code : Tout sélectionner

<div class="col-md-9"> <select name="Id_Assos_Mere">; <option value="1" selected required></option> <?php // On inclut la connexion à la base try { include("../connect.php"); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $resultat = $db->query('SELECT Id_Assos_Mere, Nom_Long FROM t_assos_mere ORDER BY Nom_Long ASC'); while ($donnees = $resultat->fetch()) { echo '<option value="' . $donnees['Id_Assos_Mere'] . '">' . $donnees['Nom_Long'] . '</option>'; }; $resultat->execute(); $resultat->closeCursor(); require_once('../close.php'); ?> </select> </div>

Re: Alimentation d'un select avec une valeur de la BBD

par two3d » 19 mars 2021, 11:25

Je pense qu'un bon coup de lecture de la doc ne fera pas de mal: https://developer.mozilla.org/fr/docs/W ... ent/Option

Alimentation d'un select avec une valeur de la BBD

par JAG11 » 19 mars 2021, 09:50

Bonjour
je fais un formulaire de mise à jour et j'affiche donc les données de ma BDD récupérer par une requête.
Mon problème se situe au niveau du select, je veux que l'on puisse changer la valeur mais la valeur stockée ne s'affiche pas à l'affichage du formulaire,

Code : Tout sélectionner

<option value="<?= $result['Id_Type_Assos'] ?>">
mais s’affiche si je fais F5. J'ai essayé un REFRESH de la page mais ça ne peut pas marcher à cause des includes.

Code : Tout sélectionner

//passage de la variable $_GET pour l'afficher des données à modifier if (isset($_GET['Id_Assos']) && !empty($_GET['Id_Assos'])) { $sql = "SELECT * FROM t_associations INNER JOIN t_type_assos ON t_associations.Id_Type_Assos = t_type_assos.Id_Type_Assos INNER JOIN t_assos_mere ON t_associations.Id_Assos_Mere = t_assos_mere.Id_Assos_Mere WHERE `Id_Assos`=:Id_Assos;"; $query = $db->prepare($sql); $query->bindValue(':Id_Assos', $_GET['Id_Assos'], PDO::PARAM_INT); $query->execute(); $result = $query->fetch(); } ?> <link rel="stylesheet" href="../css/formulaireLarge.css" type="text/css" /> <section> <div class="container-fluid table-responsive"> <h3 class="TitreH1">Modification des informations d'une association</h3> <form enctype="multipart/form-data" method="post"> <div class="form-group row"> <label style="background-color:darkseagreen" for="Id_Type_Assos" class="col-md-3 col-form-label">Modifiez le type d'association:</label> <div class="col-md-3"> <select required name="Id_Type_Assos">; <option value="<?= $result['Id_Type_Assos'] ?>"> </option> <?php // On inclut la connexion à la base try { include("../connect.php"); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $resultat = $db->query('SELECT Id_Type_Assos, Type_Long FROM t_type_assos where Id_Type_Assos <> 6 ORDER BY Type_Long ASC'); while ($donnees = $resultat->fetch()) { echo '<option value="' . $donnees['Id_Type_Assos'] . '">' . $donnees['Type_Long'] . '</option>'; }; $resultat->execute(); $resultat->closeCursor(); require_once('../close.php'); ?> </select> </div>