Editer un formulaire

Résolu/Fermé
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - Modifié par labourette le 21/03/2014 à 00:46
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 - 16 avril 2014 à 10:21
Bonjour
J'ai un formulaire où mes données sont issues de plusieurs tables. je souhaite pouvoir modifier les infos et je bute sur quelque chose que je n'arrive pas comprendre.

J'ai cette requète qui fonctionne très bien...les données de cette table s'affiche bien.

  case 'edit':
   $resultats = $bdd->query("SELECT *
    FROM tb_gestion_adherent
    WHERE id_adherent='" . $PARAM['ID_ADHERENT'] . "'
    ORDER BY nom ASC");
   $nb = $resultats->setFetchMode(PDO::FETCH_OBJ);
   $donnees = $resultats->fetch();  
   if(preg_match('#(\d{4})-(\d{1,2})-(\d{1,2})#is', $donnees->date_naissance, $match)) $date = array(1=>$match[3],2=>$match[2],3=>$match[1]);


Mais lorsque je fait l'autre requète issue de mon autre table et là... le formulaire n'affiche plus rien.

J'ai fait un var_dump et ça me retourne boolean true.
Pouvez vous m'aider s'ils vous plait.
Avec tout mes remerciements.

PS juste pour info toutes mes données sont bien inséré dans ma BDD


   $resultats = $bdd->query("SELECT *
    FROM tb_gestion_admin
    WHERE id_gestion_admin='" . $PARAM['ID_GESTION_ADMIN'] . "' ");
   var_dump($nb);
   $nb = $resultats->setFetchMode(PDO::FETCH_OBJ);
   $donnees = $resultats->fetch();
break;

17 réponses

Azraka Messages postés 252 Date d'inscription mercredi 11 juin 2008 Statut Membre Dernière intervention 5 juin 2014 13
21 mars 2014 à 09:49
Bonjour,

Le var_dump($nb) se trouve avant l'affectation de $nb, qu'est-ce que ça donne en le plaçant après ?
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
Modifié par labourette le 22/03/2014 à 22:43
Bonjour,

Voilà mes 3 requètes, si je met juste la première requète qui correspond à la table "tb_gestion_adherent" tout fonctionne

Sinon cela me retourne "boolean true" en ayant changé de place le var_dum et j'ai fait des requète préparée. Mes données ne se réaffiche pas dans le formulaire par contre dans ma BDD les données on été rajouté.

Si vous pouvez essayé de m'aider en vous remerciant par avance

  case 'edit':
   $sql = "SELECT *
    FROM tb_gestion_adherent
    WHERE id_adherent='" . $PARAM['ID_ADHERENT'] . "'
    ORDER BY nom ASC";
   $requete = $bdd->prepare($sql);       
   $requete->execute();    
   $nb = $requete->setFetchMode(PDO::FETCH_OBJ);
   $donnees = $requete->fetch();  
   if(preg_match('#(\d{4})-(\d{1,2})-(\d{1,2})#is', $donnees->date_naissance, $match)) $date = array(1=>$match[3],2=>$match[2],3=>$match[1]);
   
   $sql = "SELECT *
    FROM tb_gestion_admin
    WHERE id_gestion_admin='" . $PARAM['ID_GESTION_ADMIN'] . "' ";
   $resultats = $bdd->prepare($sql);       
   $resultats->execute();    
   $nb = $resultats->setFetchMode(PDO::FETCH_OBJ);
   var_dump($nb);
   $donnees = $resultats->fetch(); 

   $sql = "SELECT *
    FROM tb_gestion_membre
    WHERE id_membre='" . $PARAM['ID_MEMBRE'] . "' ";
   $resultats = $bdd->prepare($sql);       
   $resultats->execute();    
   $nb = $resultats->setFetchMode(PDO::FETCH_OBJ);
   $donnees = $resultats->fetch();    
   
   break;
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
28 mars 2014 à 15:25
Bonjour
Encore besoin de vous je ne sais pas si mes explications sont explicites mais si quelqu'un d'entre vous pourrais essayer de m'aider cela me rendrais super content.
Je vous remercie de votre aide
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 28/03/2014 à 15:44
Salut,

$nb correspond au retour de la méthode setFetchMode() qui indique que le mode de récupération a bien été changé, ce n'est pas vraiment ce qui nous intéresse.

Fait plutôt un var_dump de tes variables $sql pour voir exactement quelles requêtes tu exécutes et test les directement dans PhpMyAdmin ou un autre client Mysql pour vérifier leurs résultats.

Enfin, les requêtes préparées ne sont pas vraiment utile dans ton code puisque tu écris les paramètres directement dans la requête, mais ce n'est pas la cause de ton problème puisque le résultat est le même.

Bonne journée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
28 mars 2014 à 22:35
Bonjour
Merci de ta réponse.
En fait ma réquète ci-dessous fonctionne
		case 'edit':
			$sql = "SELECT *
				FROM tb_adherent
				WHERE id_adherent='" . $PARAM['ID_ADHERENT'] . "'
				ORDER BY nom ASC";
			$requete = $bdd->prepare($sql);							
			$requete->execute();				
			$nb = $requete->setFetchMode(PDO::FETCH_OBJ);
			$donnees = $requete->fetch();					
			break;


mais le problème ça n'affiche pas les données des autres tables
Voici les requète INSERT que j'ai si tu peux me donner des conseils
Merci
		case 'ajouter':
				$sql = "INSERT INTO tb_adherent (civilite, nom, prenom, adresse_mail, date_naissance, telephone_fixe, telephone_mobile, adresse, lieu_dit, code_postal, ville, login, pass)
				VALUES (:civilite, :nom, :prenom, :adresse_mail, :date_naissance, :telephone_fixe, :telephone_mobile, :adresse, :lieu_dit, :code_postal, :ville, :login, :pass)";
			
			$requete = $bdd->prepare($sql);
			$requete->bindParam(':civilite',        		$PARAM['CIVILITE']);
			$requete->bindParam(':nom',             		$PARAM['NOM']);
			$requete->bindParam(':prenom',          		$PARAM['PRENOM']);
			$requete->bindParam(':adresse_mail',    		$PARAM['ADRESSE_MAIL']);
			$requete->bindParam(':date_naissance',  		$PARAM['DATE_NAISSANCE']);
			$requete->bindParam(':telephone_fixe',  		$PARAM['TELEPHONE_FIXE']);
			$requete->bindParam(':telephone_mobile',		$PARAM['TELEPHONE_MOBILE']);
			$requete->bindParam(':adresse',         		$PARAM['ADRESSE']);
			$requete->bindParam(':lieu_dit',        		$PARAM['LIEU_DIT']);
			$requete->bindParam(':code_postal',     		$PARAM['CODE_POSTAL']);			
			$requete->bindParam(':ville',           		$PARAM['VILLE']);
			$requete->bindParam(':login',           		$PARAM['LOGIN']);
			$requete->bindParam(':pass',            		$PARAM['PASS']);
			$requete->execute();

$adherent_insert = $bdd->lastInsertId();

	if (isset($_POST['categorie_statut'])){
		foreach($PARAM['CATEGORIE_STATUT'] as $categorie_statut){
		
				$sql = 'INSERT INTO tb_gestion_admin (rid_adherent, rid_categorie_statut)
				VALUES ("'.$adherent_insert.'", "'.$categorie_statut.'")';

			$requete = $bdd->prepare($sql);
			$requete->bindParam(':rid_adherent',			$adherent_insert);
			$requete->bindParam(':rid_categorie_statut',	$categorie_statut);			
			$requete->execute();
		}	
		
				$sql = "INSERT INTO tb_gestion_membre(rid_adherent, categorie_actif, categorie_non_actif, sortant, annee_admission, annee_demission)
				VALUES (:rid_adherent, :categorie_actif, :categorie_non_actif, :sortant, :annee_admission, :annee_demission)";
			
			$requete = $bdd->prepare($sql);
			$requete->bindParam(':rid_adherent',        	$adherent_insert);
			$requete->bindParam(':categorie_actif',     	$PARAM['CATEGORIE_ACTIF']);
			$requete->bindParam(':categorie_non_actif', 	$PARAM['CATEGORIE_NON_ACTIF']);
			$requete->bindParam(':sortant',    				$PARAM['SORTANT']);
			$requete->bindParam(':annee_admission',  		$PARAM['ANNEE_ADMISSION']);
			$requete->bindParam(':annee_demission',  		$PARAM['ANNEE_DEMISSION']);
			$requete->execute();
	}
			break;
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
29 mars 2014 à 23:08
Bonjour

Pouvez vous regarder mon problème afin de pouvoir récuperer les valeurs de mon formulaire pour pouvoir les modifier.
Comme je le dit plus haut je peux récupérer les données de la table "tb_adherent" mais pour les autres tables je ne sais pas comment je peux faire.
Je vous remercie beaucoup.
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
Modifié par labourette le 7/04/2014 à 13:59
Bonjour

Plusieurs jours sans trouver la solution à mon problème, je commence vraiment à désespérer et souhaite vraiment de l'aide de votre part en vous remerciant sincérement.
Je vous réexplique mon soucis plus clairement.
Voici mes 4 tables concernées

CREATE TABLE IF NOT EXISTS 'ma_base'.'tb_adherent' (
  'id_adherent' INT NOT NULL AUTO_INCREMENT,
  'civilite' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NULL,
  'nom' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NULL,
  'prenom' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NULL,
  'adresse_mail' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NULL,
  'date_naissance' DATE NULL,
  'telephone_fixe' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NULL,
  'telephone_mobile' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NULL,
  'adresse' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NULL,
  'lieu_dit' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NULL,
  'code_postal' VARCHAR(5) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NULL,
  'ville' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NULL,
  'login' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NULL,
  'pass' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NULL,
  PRIMARY KEY ('id_adherent'))
ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS 'ma_base'.'tb_categorie_actif' (
  'id_categorie_actif' INT NOT NULL AUTO_INCREMENT,
  'categorie_actif' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NOT NULL,
  PRIMARY KEY ('id_categorie_actif'))
ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS 'ma_base'.'tb_categorie_statut' (
  'id_categorie_statut' INT NOT NULL AUTO_INCREMENT,
  'categorie_statut' VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NOT NULL,
  PRIMARY KEY ('id_categorie_statut'))
ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS 'ma_base'.'tb_gestion_membre' (
  'id_gestion_membre' INT NOT NULL AUTO_INCREMENT,
  'rid_adherent' INT NOT NULL,
  'categorie_actif' VARCHAR(50) NULL,
  'sortant' BIT NULL,
  'annee_admission' VARCHAR(4) NULL,
  'annee_demission' VARCHAR(4) NULL,
  PRIMARY KEY ('id_gestion_membre', 'rid_adherent'),
  INDEX 'rid_adherent' ('rid_adherent' ASC),
  CONSTRAINT 'fk_tb_adherent'
    FOREIGN KEY ('rid_adherent')
    REFERENCES 'ma_base'.'tb_adherent' ('id_adherent')
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB;


J'ai un seul et unique formulaire pour insérer les données.
Voici les liens avec lesquels je modifie et supprime les données

    <td>
     <a href="./index.php?body=gestion_membre&type=compte&action=edit&id_adherent=<?php echo $donnees->id_adherent;?>&voir=fiche" onclick="ad_user()">
     <img src="image/voir.png" width="22px" height="22px" alt="Fiche détaillée du membre" title="Fiche détaillé du membre" style="margin:0px 15px 0px 0px; border:none" /></a>
    
     <a href="./index.php?body=gestion_membre&type=compte&action=edit&id_adherent=<?php echo $donnees->id_adherent;?>" onclick="ad_user()">
     <img src="image/modifier.png"  width="22px" height="22px" align="top" alt="Modifier le membre" title="Modifier le membre" style="margin:0px 15px 0px 0px; border:none" /></a>
      
     <a href="./index.php?body=gestion_membre&type=compte&action=supprimer&id_adherent=<?php echo $donnees->id_adherent;?>">
     <img src="image/supprimer.png" width="22px" height="22px" alt="Supprimer le membre" title="Supprimer le membre" style="margin:0px 15px 0px 0px; border:none" /></a>
    </td>


Mon problème est le suivant les données concernant la table tb_adherent tout se passe très bien editer, modifier et supprimer mais pour les autres tables rien ne s'affiche dans le formulaire lors de l'insertion de données par contre dans ma BDD les INSERT se font bien

Voici ma case edit

  case 'edit':
    $sql = ("SELECT *
      FROM tb_adherent
      WHERE id_adherent='" . $PARAM['ID_ADHERENT'] . "'
      ORDER BY nom ASC");
   $requete = $bdd->prepare($sql);
   $requete->execute();
   $reponse = $requete->setFetchMode(PDO::FETCH_ASSOC);
   $donnees = $requete->fetch();
   break;

Et pour finir voici mes checkbox et ma liste déroulante.
 $sql = "SELECT * FROM tb_categorie_statut";
 $requete1 = $bdd->prepare($sql);       
 $requete1->execute();
  while ($donnees = $requete1->fetch(PDO::FETCH_ASSOC))
  {
   echo"<tr>";
   // Affichage d'un des champs
   echo"<td width='25%'>".$donnees['categorie_statut']."</td>";
   echo"<td width='25%'><input type='checkbox' name='categorie_statut[]' value='".$donnees['id_categorie_statut']."'></td>";
  }
 $requete1->closeCursor();
####################################################################################################################################### 
   echo"<td width='25%'>";
   echo'<select style="width: auto" name="categorie_actif" class="content_input" disabled="">';
   echo"<option value=''>- - - Membre Actif - - -</option>";
 $sql = "SELECT * FROM tb_categorie_actif";
 $resultat2 = $bdd->prepare($sql);       
 $resultat2->execute();
 
  while ($donnees = $resultat2->fetch(PDO::FETCH_ASSOC))
  {
   echo"<option value=".$donnees["categorie_actif"].">".$donnees["categorie_actif"]."</option>\n";
  }
   echo"</select>";  
   echo"</td>";
 $resultat2->closeCursor();


J'espère avoir été le plus clair possible afin que vous puissiez m'aider merci infiniment.
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
9 avril 2014 à 07:03
Bonjour
Pour être plus simple je voudrais pouvoir garder les valeurs sélectionner dans une liste déroulante et pour les checkbox également.
J'espère de tout coeur que vous pourrez m'aider je ne peux plus avancé sur mon projet.
Un grand merci.
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
Modifié par labourette le 10/04/2014 à 14:17
Bonjour

J'ai essayé de faire cela mais bien sur ça ne fonctionne pas.
Pouvez vous essayer de me donner un coup de main s'il vous plait
Je vous remercie

<option value="	<?php echo $donnees['nom_instrument']; ?>"
<?php if (!empty($_POST['categorie_instrument'])) {if ($donnees['nom_instrument']==$donnees['categorie_instrument'])($donnees['nom_instrument']==$donnees['categorie_instrument'])
echo ('selected="selected"');} ?>>
<?php echo $donnees['nom_instrument'];?> </option>
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
10 avril 2014 à 14:53
Salut,

Pour garder la valeurs déjà sélectionnée dans la liste, il te faut obligatoirement deux informations :
- les éléments de la liste
- l'élément déjà sélectionnée

Une fois ces deux infos récupérées, tu peux construire ta liste comme ceci par exemple :

// les données de la liste
$donnees = array('data1', 'data2', 'data3', 'data4', 'data5');

// la donnée déjà selectionnée
$donneeSelected = 'data3';

// EXEMPLE 1
// construction de la balise select
echo '<select>';
echo '<option value="">Défaut</option>';
foreach ($donnees as $donnee) {
	// on initialise l'attribut selected à vide
	$attributSelected = '';

	// si la donnée qu'on affiche correspond à la donnée selectionnée, on défini l'attribut selected
	if ($donnee == $donneeSelected) {
		$attributSelected = ' selected';
	}

	// on affiche la balise option
	echo '<option value="' . $donnee . '"' . $attributSelected . '>' . $donnee . '</option>';
}
echo '</select>';

// EXEMPLE 2 : identique mais plus compacte
// construction de la balise select
echo '<select>';
echo '<option value="">Défaut</option>';
foreach ($donnees as $donnee) {
	echo '<option value="' . $donnee . '"' . ($donnee == $donneeSelected ? ' selected' : '') . '>' . $donnee . '</option>';
}
echo '</select>';



Bonne journée
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
10 avril 2014 à 15:31
Bonjour
Merci pour toutes ses infos, avec sa ça devrai le faire encore merci.
Cordialement.
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
11 avril 2014 à 22:48
Bonjour
S'il te plait tu peux me corriger ça ne fonctionne pas. Je t'envoi mon tableau et le script.
Merci
$PARAM = array
	(
		'ID_GESTION_REPERTOIRE'		=> isset($_REQUEST['id_gestion_repertoire']) ? $_REQUEST['id_gestion_repertoire'] : '',
		'NUMERO_REPERTOIRE'			=> isset($_POST['numero_repertoire']) ? trim($_POST['numero_repertoire']) : '',
		'TITRE_REPERTOIRE'			=> isset($_POST['titre_repertoire']) ? stripslashes(htmlspecialchars(ucfirst(trim($_POST['titre_repertoire'])))) : '',
		'CATEGORIE_INSTRUMENT'		=> isset($_POST['categorie_instrument']) ? $_POST['categorie_instrument'] : '',
		
		'ID_CATEGORIE_INSTRUMENT'	=> isset($_REQUEST['id_categorie_instrument']) ? $_REQUEST['id_categorie_instrument'] : '',
		'NOM_INSTRUMENT'			=> isset($_POST['nom_instrument']) ? $_POST['nom_instrument'] : ''		
	);

	$sql = ("SELECT * FROM tb_categorie_instrument") or die(print_r($bdd->errorInfo()));
	$requete2 = $bdd->prepare($sql);							
	$requete2->execute();
			echo'<td width="30%">';
			echo'<select style="width: auto" name="nom_instrument" id="nom_instrument "class="content_input" disabled="">';
			echo'<option value="">- - - Nom Instrument - - -</option>';
	
foreach($PARAM['NOM_INSTRUMENT'] as $nom_instrument){
	// on initialise l'attribut selected à vide
	$attributSelected = '';

	// si la donnée qu'on affiche correspond à la donnée selectionnée, on défini l'attribut selected
	if ($PARAM['NOM_INSTRUMENT'] == $nom_instrument) {
		$attributSelected = ' selected';
	}

	// on affiche la balise option
	echo '<option value="' . $donnees['nom_instrument'] . '"' . $attributSelected . '>' . $donnees['nom_instrument'] . '</option>';
}
echo '</select>';			
			echo"</td>";

	$requete2->closeCursor();

Je regarde encore si jamais j'arrive à trouver la bonne syntaxe.
Merci beaucoup
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
13 avril 2014 à 00:17
Bonjour
Très découragé je n'arrive pas à mettre en place ce sript, pouvez-vous me donner un coup de main pour enfin que je puisse bien assimilé les listes déroulantes dynamique.
Je vous ai mis mon tableau ci-dessus.
En vous remerciant.
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
13 avril 2014 à 00:39
Bonjour
Merci de votre aide j'ai fini par résoudre mon problème.
$donneeSelected = $donnees['categorie_instrument'];
   $sql = ("SELECT * FROM tb_categorie_instrument") or die(print_r($bdd->errorInfo()));
   $requete2 = $bdd->prepare($sql);                     
   $requete2->execute();
         echo'<td width="30%">';
echo'<select style="width: auto" name="categorie_instrument" id="categorie_instrument "class="content_input" disabled="">';
echo '<option value="">Défaut</option>';
foreach ($donnees as $donnee) {
	echo '<option value="' . $donnee . '"' . ($donnee == $donneeSelected ? ' selected' : '') . '>' . $donnee . '</option>';
}
echo '</select>';        
         echo"</td>";

   $requete2->closeCursor();
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
13 avril 2014 à 18:43
Bonjour
En fait je me suis réjoui trop vite.
Avec le script ci-dessus dans la liste déroulante ça m'affiche pas la liste de ma BDD cela me retourne les champs.
Mais si je rjoute une boucle while ça fonctionne bien à l'exeption que dans la liste ça affiche également le id_categorie_instrument.
Tu peux si tu as un peu de temps me corriger ma requète s'il te plait peut-être il y a plus simple.
Je te remercie

$donneeSelected = $donnees['categorie_instrument'];
	$sql = ("SELECT * FROM tb_categorie_instrument") or die(print_r($bdd->errorInfo()));
	$requete2 = $bdd->prepare($sql);                     
	$requete2->execute();
		echo'<td width="30%">';
		echo'<select style="width: auto" name="categorie_instrument" id="categorie_instrument "class="content_input" disabled="">';
		echo '<option value="">- - - Instrument - - -</option>';
			while ($donnees = $requete2->fetch(PDO::FETCH_ASSOC))
			{
				foreach ($donnees as $categorie_instrument)
					{
					echo '<option value="' . $categorie_instrument . '"' . ($categorie_instrument == $donneeSelected ? ' selected' : '') . '>' . $categorie_instrument . '</option>';
					}
			}
		echo '</select>';        
		echo"</td>";
$requete2->closeCursor();
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
15 avril 2014 à 10:38
Salut,

Je ne connait pas exactement la structure de ta bdd ni la manière dont tu souhaites afficher ta liste. En général pour les listes, on utilise un identifiant pour l'attrtibut value et un nom pour le contenu de la balise option.

Supposons que tu ais deux champs dans ta table nommé id_categorie et nom_categorie, tu peux essayer quelque chose comme ca :

$donneeSelected = $donnees['categorie_instrument'];
$sql = ("SELECT id_categorie, nom_categorie FROM tb_categorie_instrument") or die(print_r($bdd->errorInfo()));
$requete2 = $bdd->prepare($sql);
$requete2->execute();

echo'<td width="30%">';
echo'<select style="width: auto" name="categorie_instrument" id="categorie_instrument "class="content_input" disabled="">';
echo '<option value="">- - - Instrument - - -</option>';
while ($donnees = $requete2->fetch(PDO::FETCH_ASSOC))
{
    echo '<option value="' . $donnees['id_categorie'] . '"' . ($donnees['id_categorie'] == $donneeSelected ? ' selected' : '') . '>' . $donnees['nom_categorie'] . '</option>';
}
echo '</select>';        
echo"</td>";

$requete2->closeCursor();


Dans cet exemple, la variable $donneeSelected doit correspondre à un identifiant de liste. Tu n'es pas obligé de travailler avec des identifiants, tu peux utiliser uniquement les noms s'ils sont uniques.

Bonne journée
0
labourette Messages postés 657 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 24 juillet 2016 6
16 avril 2014 à 10:21
Bonjour
Merci de ton aide vraiment.
En fait comme tu me l'a dit ma liste à des noms unique j'ai tout simplement enlevé de ma BDD l'id et tout fonctionne à merveille.
Merci pour tout.
Cordialement
0