PHP : Récupération de données pour des champs

Fermé
Gregg78 Messages postés 55 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 16 mars 2022 - 6 juil. 2010 à 11:46
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 - 6 juil. 2010 à 13:45
Bonjour à toutes et tous, ou plutôt bonsoir car il se fait tard !

Après 2 bonnes heures à chercher une solution sur différents forums je m'incline et sollicite votre aide :p

J'ai un formulaire tout beau tout propre pour insérer des données dans une base. Jusque là rien de très compliqué. Via l'admin créée je propose de modifier les entrées.

Or là, lorsque l'on clique sur Modifier, on arrive sur le même formulaire (et même page PHP que pour l'insertion) avec les infos pré-remplies. Reste plus qu'à modifier les champs voulus.

Sauf que j'arrive à faire apparaître les champs Input, Radio et Textarea mais pas les champs Select et Checkbox.

Quelqu'un a sûrement déjà rencontré ce cas :-)

Voici un exemple de mon code :

<?php
if (isset($_GET['modifier_invit'])) 
{
    $retour = mysql_query('SELECT * FROM invit WHERE id=' . $_GET['modifier_invit']);
    $donnees = mysql_fetch_array($retour);
    $numero = $donnees['numero'];
    $invitation = $donnees['invitation'];
    $album = $donnees['album'];
    $id_invit = $donnees['id']; 
}
else 
{	$numero = '';
	$invitation = '';
	$album= '';
} 
?>
<form action="liste.php" method="post" enctype="multipart/form-data">
<INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE=10240000 />
Numero  : <input type="text" name="numero" value="<?php echo $numero; ?>" />
<br />
<b>Album :</b> <br />
<select name="album" >
<option selected></option>
<?php
$retour2 = mysql_query('SELECT * FROM albums ORDER BY code');
while ($donnees2 = @mysql_fetch_array($retour2))
{
?>
<option value="<?php echo $donnees2['code']; ?>"><?php echo $donnees2['titre']; ?></option>  
<?php
}
?>
</select> 
<br />
<b>Invitation :</b> <input type="text" name="invitation" value="<?php echo $invitation; ?>" />

etc...


Maintenant il faut que le choix inscrit dans la BDD soit déjà sélectionné si on décide de modifier l'article. Car actuellement rien n'est pré-selectionné et donc si on modifie un champ et qu'on oublie de sélectionner à nouveau, le champ s'enregistre vide... J'espère ne pas être trop confus ;-)

Merci d'avance pour votre aide et votre temps !!!

Gregg
A voir également:

5 réponses

Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 11:54
ou plutôt bonsoir car il se fait tard

Tu es un peu décalé toi pour trouvé que bientôt midi c'est tard...

Pour ton problème Je te conseille d'enlever <option selected></option> et dans ta boucle, tu met
<option value="<?php echo $donnees2['code']; ?>"><?php echo $donnees2['titre']; ?> selected='selected'</option> 
après un test (si la valeur est celle enregistrée tu met selected.

Idem pour les checkbox mais avec checked='checked'
0
Gregg78 Messages postés 55 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 16 mars 2022 4
6 juil. 2010 à 12:02
Merci Breub 62,

en effet, je suis légèrement décalé ;-(

Merci pour ta réactivité mais je ne suis pas sur de te suivre. Es-tu sur d'avoir mis le selected au bon endroit ?
Quand tu me parles d'un test, tu l'imagines sous quelle forme car là je ne vois pas comment récupérer la valeur déjà enregistrée...
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 12:11
Voici ma façon de faire avec un bout de mon code :


echo "<select name='EtatIntervention'>";
while($dataEtatIntervention = mysql_fetch_assoc($resEtatIntervention))
{
	if($dataEtatIntervention['NumEtatIntervention'] == $_SESSION['EtatIntervention'])//menu déroulant en adéquation avec la sélection faite
	{
			echo " <option value='".$dataEtatIntervention['NumEtatIntervention'].$i."' selected='selected'>".$dataEtatIntervention['NomEtatIntervention']."</option>";
	}
	else
	{
	echo " <option value='".$dataEtatIntervention['NumEtatIntervention']."'>".$dataEtatIntervention['NomEtatIntervention']."</option>";
	}
}	
echo "</select>";

0
Gregg78 Messages postés 55 Date d'inscription samedi 20 décembre 2008 Statut Membre Dernière intervention 16 mars 2022 4
6 juil. 2010 à 12:42
Quel plaisir une telle réactivité...

Par contre moi ca marche pas trop, voilà ce que ca donne à ma sauce, vois-tu une coquille quelque part ?

J'ai bien la liste qui s'affiche, mais rien de pré-selectionné :

<?php
echo "<select name='rubrique'><option>&bull; Documentation</option>";
$retour2 = mysql_query('SELECT * FROM rubriques ORDER BY code');
while($donnees2 = mysql_fetch_array($retour2))
{
	if($donnees2['code'] == $_SESSION['rubrique'])//menu déroulant en adéquation avec la sélection faite
	{
			echo " <option value='".$donnees2['code'].$i."' selected='selected'>".$donnees2['nom']."</option>";
	}
	else
	{
	echo " <option value='".$donnees2['code']."'>".$donnees2['nom']."</option>";
	}
}	
echo "<option value='Certificat de conformité'>&bull; Certificat de conformité</option><option value='Autres'>&bull; Autres</option></select>";
?>
0

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

Posez votre question
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 13:44
Tu dois faire en sorte que $_SESSION['rubrique'] te retourne la valeur à sélectionner ainsi au moment de l'affichage de la liste, si la valeur à afficher est la même que celle qui doit être préselectionnée, tu la sélectionne.

Sinon il y a un $i qui se balade et que tu peux enlever car elle ne correspond qu'à un cas particulier chez moi.
0
Breub62 Messages postés 2989 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 17 avril 2014 369
6 juil. 2010 à 13:45
Autrement dit $_SESSION['rubrique'] est initialisé après la requête qui te permet de trouver l'enregistrement à modifier...
0