récupérer des valeur de type "radio" sur une autre page

debutant
Invité n'ayant pas de compte PHPfrance

04 juil. 2012, 15:26

Bonjour,

J'ai un souci pour récupérer des valeurs de types "radio" dans une autre page afin de pouvoir les modifier.

Voici mon fichier "liste.php" listant tous mes formulaire dans un tableau
// On récupère tout le contenu de la table formulaire
$reponse = $bdd->query('SELECT * FROM formulaire');

// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
					
							<tr>
								<td><?php echo stripslashes($donnees['nom']);?></td>
								<td><?php echo $donnees['prenom']; ?></td>
								<td><?php echo $donnees['matricule']; ?></td>
								<td><?php echo $donnees['trombinoscope']; ?></td>
								<td><?php echo $donnees['intranet']; ?></td>
								<td><?php echo $donnees['journaux']; ?></td>
                                <td><?php echo $donnees['expositions_internes']; ?></td>
								<td><?php echo $donnees['brochures_commerciales']; ?></td>
								<td><?php echo $donnees['brochures_publicitaires']; ?></td>
								<td><?php echo $donnees['internet']; ?></td>
								<td><?php echo $donnees['video']; ?></td>
								
                                <td>
   
									<a href="edit.php?id=<?php echo $donnees['id']?>" class="btn small primary">Modifier</a>
								</td>
								<td>
									<a href="remove.php?id=<?php echo $donnees['id']?>" class="btn small danger">Supprimer</a>
								</td>
							</tr>
							<?php
}
Et lorsqu'on appuie sur le bouton "Modifier" nous nous redirigeons vers le fichier "edit.php"
Afin de récupérer mes valeurs j'ai fait ceci :

// recupere l'id du formulaire en question
<?php
							if(isset($_GET['id'])) {
									
					$formulaire=$_GET['id'];
					$reponse = $bdd->prepare('SELECT * FROM formulaire WHERE formulaire.id=:formulaire');
					$reponse->execute(array(
						'formulaire' => $formulaire
					));
					while($donnees=$reponse->fetch()) {
						
					?>
					
                 
										<form method="post" action="edit.php?id=<?php echo $formulaire ?>" enctype="multipart/form-data">
						<div class="clearfix">
							<label>Nom</label>
							<div class="input">
								<input type="text" name="nom" value="<?php echo stripslashes($donnees['nom']) ?>" />
							</div>
                         </div>
                         
                         <div class="clearfix">
                            <label>Prénom</label>
							<div class="input">
								<input type="text" name="prenom" value="<?php echo stripslashes($donnees['prenom']) ?>" />
							</div>
                         </div>
                         
                         <div class="clearfix">
                            <label>Matricule</label>
							<div class="input">
								<input type="text" name="matricule" value="<?php echo stripslashes($donnees['matricule']) ?>" />
							</div>
                         </div>
                         
                        
                         
                         <div class="clearfix">
                            <label>Trombinoscope</label>
							<div class="input">
                             <label>
                            Oui
								<input type="radio" name="trombinoscope" value="<?php echo $donnees['trombinoscope']; ?>" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                            Non 
								<input type="radio" name="trombinoscope" value="<?php echo $donnees['trombinoscope']; ?>" />
                            </label>
							</div>
                         </div>
Malheureusement, le type="radio" name="trombinoscope" de renvoie aucune valeur, en revanche cela fonctionne très bien pour les type "text" ...
Je ne sais pas quoi faire...
D'avance je vous remercie.

Petit nouveau ! | 7 Messages

04 juil. 2012, 16:26

Les <input type="radio"/> retourne la valeur de l'option sélectionnée.

En partant du principe que $donnees['trombinoscope'] contient 1 ou 0, il faudrait faire quelque chose comme ça:
<label id="ok">Oui </label>
<input type="radio" name="trombinoscope" for="ok" value="<?php echo $donnees['trombinoscope']; ?>" <?php echo $donnees['trombinoscope']==1 ? 'selected':'' ?> />

<label id="nok">Non </label>
<input type="radio" name="trombinoscope" value="<?php echo $donnees['trombinoscope']; ?>" <?php echo $donnees['trombinoscope']==0 ? 'selected':'' ?> />

Invité
Invité n'ayant pas de compte PHPfrance

04 juil. 2012, 16:45

Merci, pour la réponse. J'ai bien modifié mon code suite à votre conseil mais malheureusement cela ne fonctionne pas.
Cependant, ce problème doit s'expliquer du fait que je n'ai pas paramétré dans ma base de données mes champs en forme "booléen" mais en 'Varchar" avec une taille de 3 pouvant indiquer si la réponse est oui ou non. De ce fait "trombinoscope ne contient pas 1 ou 0...
J'ai alors modifié :
<label id="ok">Oui </label>
<input type="radio" name="trombinoscope" for="ok" value="<?php echo $donnees['trombinoscope']; ?>" <?php echo $donnees['trombinoscope']==oui ? 'selected':'' ?> />

<label id="nok">Non </label>
<input type="radio" name="trombinoscope" value="<?php echo $donnees['trombinoscope']; ?>" <?php echo $donnees['trombinoscope']==non ? 'selected':'' ?> />
Malheureusement ça ne fonctionne toujours pas.

Petit nouveau ! | 7 Messages

04 juil. 2012, 17:06

Les variables testées sont des chaines, donc...
<?php echo $donnees['trombinoscope']=='oui' ? 'selected':'' ?>
...il ne faut pas oublier les guillemets.

Invité
Invité n'ayant pas de compte PHPfrance

04 juil. 2012, 17:31

Ca me parait très bien mais malheureusement, ça ne fonctionne pas ...

J'ai aussi essayé de faire avec un if comme ceci :
...value="<?php if($donnees['trombinoscope']=='oui' ) {echo "cheked=\"cheked\"";}  ?> />
Mais ça ne fonctionne toujours pas ...

Petit nouveau ! | 7 Messages

04 juil. 2012, 18:19

1/ L'option sensée être sélectionnée, l'est-elle bien avec le code fourni ?

2/ Le problème est-il toujours présent en utilisant le HTML "en dur" ? (L'option "Oui" sera toujours sélectionné pour le test)
<label id="ok">Oui </label>
<input type="radio" name="trombinoscope" for="ok" value="oui" selected />

<label id="nok">Non </label>
<input type="radio" name="trombinoscope" value="non" />
3/ Si ça ne passe pas avec le test 2/, c'est qu'il y a aussi un problème dans la validation du formulaire.

Invité
Invité n'ayant pas de compte PHPfrance

04 juil. 2012, 18:36

J'ai essayé en mettant votre test et rien ne se passe. Je dois avoir un pb au niveau du formulaire mais je ne vois vmt pas lequel, car ce même formulaire a très bien fonctionner pour ajouter des éléments ds ma base de données.
En tout cas merci de m'avoir aidé

ViPHP
ViPHP | 2577 Messages

04 juil. 2012, 18:49

Copie le source de ton formulaire dans le validateur w3c (http://validator.w3.org/#validate_by_input)

Invité
Invité n'ayant pas de compte PHPfrance

04 juil. 2012, 21:47

C'est bon j'ai enfin réussi !
Le problème n'était pas du au formulaire mais juste au contenu à l'intérieur du input type "radio".
Je mets la solution si ça peut aider des personnes...
<input type="radio" name="trombinoscope" <?php if($donnees['trombinoscope']=='oui') {echo "checked"; }?>  />
<input type="radio" name="trombinoscope"  <?php if($donnees['trombinoscope']=='non') {echo "checked"; }?> />
Et encore merci de m'avoir aidé.