Faire un formulaire à partir de données mysql

Fermé
minimi Messages postés 2 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 18 janvier 2007 - 18 janv. 2007 à 18:10
Ssylvainsab Messages postés 2884 Date d'inscription samedi 29 juillet 2006 Statut Modérateur Dernière intervention 15 août 2020 - 18 janv. 2007 à 21:12
Bonjour,

Je débute en Php et là je bloque.
Je créé un outil via un site web. Une liste de textes avec leurs caractéristiques (thèmes, présentation, code juridique...) est stockée dans une BD Mysql.
Je souhaite que l'on puisse faire une requête à partir des thèmes. J'ai donc créé un fomulaire qui va chercher les thèmes dans la base Myslq :

$sql = mysql_query("SELECT * FROM droitchamps"); 
while ($requete = mysql_fetch_array($sql)) 
{$label = $requete['nom']; 
 $lien = $requete['nomlien']; 

echo "<label> <input type=\"checkbox\" name=\"$lien\" value=\"$lien\"> $label </label> <br>"; 
} 

Jusque là tout va bien...
Sauf que je n'arrive pas à récupérer les données...

J'imagine qu'il faut écrire dans la page d'envoi quelque chose comme:
echo $_POST['$lien']; 


Mais ca ne marche pas, rien ne s'affiche dans ma page.
si quelqu'un peut m'aider...
Merci d'avance

Minimini

3 réponses

Ssylvainsab Messages postés 2884 Date d'inscription samedi 29 juillet 2006 Statut Modérateur Dernière intervention 15 août 2020 825
18 janv. 2007 à 18:46
Salut.

Si tu génères un formulaire de cette facon, et qu'ensuite tu veux savoir le nom du champ, c'est à dire la valeur de $lien, tu peux faire ca (je pense même que c'est la seule solution) :
$sql=mysql_query('SELECT * FROM droitchamps')or die(mysql_error()); 
$i=0;
while($resultat=mysql_fetch_assoc($sql)) 
{
   $i++;
   $label=$resultat['nom'];
   $lien=$resultat['nomlien']; 
   echo '<label for="',$lien,'"><input type="checkbox" name="',$lien,'" value="',$lien,'">',$label,'</label><br>',
   '<input type="hidden" name="nom_champ',$i,'" value="',$lien,'">';
}

De cette facon tu crées un champ caché qui a pour valeur le nom des autres champs, et qui finit par un nombre incrémenté de 1 à chaque fois, en partant de 1.

Et sur la page de résultat, tu fais ca :
for($i=0;isset($_POST['nom_champ'.$i]);$i++)
{
   //dans cette boucle, les champs sont récupérés un à un.
   echo $_POST[$_POST['nom_champ'.$i]];
}

Je pense que ca marche.

a plus
0
minimi Messages postés 2 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 18 janvier 2007
18 janv. 2007 à 20:08
Bon ben je crois avoir à peu près compris ton code et j'ai bien réécris tout comme toi et il ne s'affiche rien dans ma page.
Je n'ai pas de message d'erreur mais bon je n'ai rien qui arrive...

Je suis un peu paumée.

Merci en tout cas

Minimini
0
Ssylvainsab Messages postés 2884 Date d'inscription samedi 29 juillet 2006 Statut Modérateur Dernière intervention 15 août 2020 825
18 janv. 2007 à 21:12
Je crois que je vois mon erreur.
Essaye de mettre $i=1 au lieu de 0 dans la boucle for, et dis-moi si ca marche.
0