Téléchargement
illégal
Posez votre question Signaler

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

Gregg78 38Messages postés 20 décembre 2008Date d'inscription 8 novembre 2011Dernière intervention - Dernière réponse le 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
Lire la suite 

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

6 réponses
Réponse
+0
moins plus
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'
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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>";

Ajouter un commentaire
Réponse
+0
moins plus
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>";
?>
Ajouter un commentaire
Réponse
+0
moins plus
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.
Breub62- 6 juil. 2010 à 13:45
Autrement dit $_SESSION['rubrique'] est initialisé après la requête qui te permet de trouver l'enregistrement à modifier...
Ajouter un commentaire
Ce document intitulé « PHP : Récupération de données pour des champs » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?