Faire un formulaire à partir de données mysql

minimi Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Ssylvainsab Messages postés 2884 Date d'inscription   Statut Modérateur Dernière intervention   -
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   Statut Modérateur Dernière intervention   825
 
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur Dernière intervention   825
 
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