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

Nefert@ri
Invité n'ayant pas de compte PHPfrance

24 févr. 2008, 18:04

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.

ViPHP
ViPHP | 928 Messages

24 févr. 2008, 18:14

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é.

Nefert@ri
Invité n'ayant pas de compte PHPfrance

24 févr. 2008, 19:13

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.

ViPHP
ViPHP | 928 Messages

24 févr. 2008, 19:23

Peux tu donner le code modifié de ta première page ?

Nefert@ri
Invité n'ayant pas de compte PHPfrance

24 févr. 2008, 19:29

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>

ViPHP
ViPHP | 928 Messages

24 févr. 2008, 19:34

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 ?

Nefert@ri
Invité n'ayant pas de compte PHPfrance

24 févr. 2008, 19:43

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

ViPHP
ViPHP | 928 Messages

24 févr. 2008, 19:58

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 ;)

Nefert@ri
Invité n'ayant pas de compte PHPfrance

24 févr. 2008, 20:06

Merci milles fois !! Ça marche ! Encore merci pour ton aide. C'était si bête de ma part... :D