Page 1 sur 1

Récupérer une donnée d'un formulaire

Posté : 24 févr. 2008, 18:04
par Nefert@ri
Bonjour !
C'est peut-être stupide comme question, mais il se trouve que je bloque complètement |*(). Pour faire simple, voici mon problème. J'ai une page, "a_imprimer.php", chargée d'afficher le contenu d'une table mysql, avec à côté de chaque entrée une case à cocher. Si on veut imprimer une entrée, on coche la case correspondante et on clique sur le bouton "imprimer". La deuxième page, "impression.php", se charge de mettre en forme les entrées cochées précédemment pour l'impression et de les imprimer. Mais je n'arrive pas à récupérer la valeur des cases à cocher. Voici le code simplifié des deux pages :

a_imprimer.php

Code : Tout sélectionner

<form method="post" action="impression.php"> <?php mysql_connect("localhost", "nom_utilisateur", "mp"); mysql_select_db("base_de_donnees"); $reponse=mysql_query("SELECT id, titre, imprimé FROM table") or die (mysql_error()); while($donnees=mysql_fetch_array($reponse)) { if ($donnees['imprimé']=="oui") {echo "<span class=\"ancien\">";} else {echo "<span class=\"normal\">";} echo $donnees['id']; ?> <?php echo $donnees['titre'];?> <input type="checkbox" name="<?php$donnees['id']?>"/></span><br /> <?php } ?> <input type="submit" value="imprimer"/> </form>
Et impression.php

Code : Tout sélectionner

<?php mysql_connect("localhost", "nom_utilisateur", "mp"); mysql_select_db("base_de_donnees"); $reponse=mysql_query("SELECT id, titre, date, description, lien FROM table") or die (mysql_error()); while($donnees=mysql_fetch_array($reponse)) { $imprimer=$_POST[$donnees['id']]; if ($_POST["$imprimer"] == on) { echo "L\'événement ".$donnees['titre']." a bien été imprimé.";} } ?>
Le résultat donne une page blanche...

Merci d'avance pour votre aide.

Posté : 24 févr. 2008, 18:14
par Genova
Bonjour,
pour tes cases à cocher je te conseil de donner un name avec cette syntaxe :

Code : Tout sélectionner

<input type="checkbox" name="impression[]" value="ID_DE_TA_DONNEE" />
Ca va te créer un tableau $_POST['impression'] qui contiendra en valeurs les ID que tu as coché.

Posté : 24 févr. 2008, 19:13
par Nefert@ri
J'ai suivi tes conseils. Malheureusement, lorsque l'on coche une case, l'id de l'entrée n'est pas stockée dans le tableau. Il y a juste une case vide supplémentaire dans le tableau. J'ai surement fait une erreur dans la deuxième page. Voici donc le code :

Code : Tout sélectionner

<?php mysql_connect("localhost", "nom_utilisateur", "mp"); mysql_select_db("base_de_donnees"); $reponse=mysql_query("SELECT id, titre, date, description, lien FROM table") or die (mysql_error()); while($donnees=mysql_fetch_array($reponse)) { if (in_array($donnees['id'], $_POST['impression'])) { echo "Vous avez choisi d'imprimer ".$donnees['titre'].""; } else { echo "Vous avez choisi de ne pas imprimer ".$donnees['titre'].""; } } ?>
Je ne sais pas ce qu'il y de faux. Cela affiche toujours "Vous avez choisi de ne pas imprimer ***". Quand je fais un print_r, le tableau est vide...

Merci.

Posté : 24 févr. 2008, 19:23
par Genova
Peux tu donner le code modifié de ta première page ?

Posté : 24 févr. 2008, 19:29
par Nefert@ri
Oui, bien sûr. Le voici :

Code : Tout sélectionner

<form method="post" action="impression.php"> <?php mysql_connect("localhost", "nom_utilisateur", "mp"); mysql_select_db("base_de_donnees"); $reponse=mysql_query("SELECT id, titre, imprimé FROM table") or die (mysql_error()); while($donnees=mysql_fetch_array($reponse)) { if ($donnees['imprimé']=="oui") {echo "<span class=\"ancien\">";} else {echo "<span class=\"normal\">";} echo $donnees['id']; ?> <?php echo $donnees['titre'];?> <input type="checkbox" name="impression[]" value="<?php$donnees['id']?>"/></span><br /> <?php } ?> <input type="submit" value="imprimer"/> </form>

Posté : 24 févr. 2008, 19:34
par Genova
Lorsque tu coches des cases, et que tu mets un print_r($_POST) en haut de la page impression.php, ça ne t'affiche rien ?

Posté : 24 févr. 2008, 19:43
par Nefert@ri
Si cela m'affiche :
Array
(
[0] =>
[1] =>
[2] =>
)
Dans ce cas-là, j'avais coché trois cases. Si je n'en coche qu'une, par exemple, il n'y a que la ligne [0] => qui s'affiche... :-k

Posté : 24 févr. 2008, 19:58
par Genova
Là tu peux voir que ton tableau est vide, ce qui signifie que tes attributes value de ta checkbox sont probablement vides. Si tu regardes la source HTML de ton formulaire (via ton navigateur), tu pourras voir que tu as des value="", alors qu'ils devraient contenir ton ID.

Le problème vient de
value="<?php$donnees['id']?>"
ce qui n'affiche rien, normal il faut faire
value="<?php echo $donnees['id'] ?>"
Ca devrait résoudre ton problème ;)

Posté : 24 févr. 2008, 20:06
par Nefert@ri
Merci milles fois !! Ça marche ! Encore merci pour ton aide. C'était si bête de ma part... :D