PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 17-05-2010 16:28:42

nopnop
Membre
Inscription : 17-05-2010
Messages : 5

Checkbox avec tableau :(

Bonjour à tous, voici mon pb

- je recupere les valeur d'une table SQL et les mets sous forme de tableau. (jusqu'ici tout va bien)
- J'essai de mettre une checkbox en face de chaque ligne, afin de permettre à un utilisateur de selectionner une ligne, et copié l'ID de cette ligne dans une autre table, via une methode post .

voici mon premier formulaire (menu.php)


<form method='POST' action='menu2.php'>
<?php
$db = mysql_connect('localhost', 'root', '')
or die('<font color=red>Désolé mais vous ne pouvez voir les infos de la data-base</font>');
mysql_select_db('resto',$db);
$query="Select * from articles ORDER BY type " ;
$result = mysql_query( $query )or exit ('Erreur SQL !'.$query.'<br>'.mysql_error());
while($data = mysql_fetch_array($result))
{
echo"<tr><td>".$data['id']."</td>";
echo"<td>".$data['type']."</td>";
echo"<td>".$data['articles']."</td>";
echo"<td><input type='checkbox' name='choix[]' value='".$data['id']."'></td>";
echo"</tr>";
}

?>
</table>
<p>
<input type="submit" value="Envoyer" name="Envoyer">
</form>
 

voici mon second formulaire (menu2.php)


$id=$_POST['choix'];


$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  

    mysql_select_db('resto',$db)  or die('Erreur de selection '.mysql_error());
   

foreach ($tadid as $id)
{
     $query=sprintf("INSERT INTO platsdujour(id, id_site) VALUES('','$id')"
     mysql_query($query);
}


   // on affiche le résultat pour le visiteur
    echo 'Vos infos on été ajoutées.';

?>

 

or il me copie dans la table 'platsdujour' "ARRAY"

qu'en penses vous ?

Hors ligne

#2 17-05-2010 18:04:50

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Checkbox avec tableau :(

Je pense que tout est explicitement dans le code. Regardes donc le nom de ta checkbox et tu comprendras comment fonctionnent les groupements de checkbox. ^_-

Hors ligne

#3 18-05-2010 08:25:56

nopnop
Membre
Inscription : 17-05-2010
Messages : 5

Re : Checkbox avec tableau :(

tu parles de name='choix[]' ?

j'avoue ne pas trouver mon erreur sad

Hors ligne

#4 18-05-2010 08:38:37

Sergnal
Membre
Inscription : 17-06-2009
Messages : 38

Re : Checkbox avec tableau :(

Bonjour,

Effectivement c'est bien ce "choix[]" le problème. Le "[]" indique un tableau (array), donc soit tu le retires simplement (mais en ce cas transformer ta checkbox en bouton radio serait peut-être une bonne idée), soit tu le laisses (si par exemple tu veux que l'on puisse sélectionner plusieurs lignes à la fois) mais il faut rajouter un traitement php de $_POST['choix'] pour récupérer chaque valeur du tableau.

Hors ligne

#5 18-05-2010 09:17:07

nopnop
Membre
Inscription : 17-05-2010
Messages : 5

Re : Checkbox avec tableau :(

C'est tout a fait ça, j'aimerais pouvoir selectionner plusieurs lignes a la fois.

Hors ligne

#6 18-05-2010 09:30:00

Sergnal
Membre
Inscription : 17-06-2009
Messages : 38

Re : Checkbox avec tableau :(

Et bien c'est déjà le cas : tu sélectionne plusieurs lignes, toutes les valeurs sont stockés sous la forme d'un array (les tableaux php) et envoyées dans le $_POST. Simplement au lieu d'envoyer les infos directement comme tu dois le faire il faut les récupérer dans le script php.

Voilà qui devrais te mettre sur la voie : http://www.phpdebutant.org/article11.php

Hors ligne

#7 18-05-2010 13:45:53

nopnop
Membre
Inscription : 17-05-2010
Messages : 5

Re : Checkbox avec tableau :(

voila ce que j'ai fait pour le moment :


<?php
$id=$_POST['choix'];


 if(isset($_POST['choix']))
  {
  foreach($_POST['choix'] as $index => $val)
    {
    //affichage des elements du tableau
               echo $val ;
    }
  }


?>
 

qu'en pensez vous ?

Dernière modification par nopnop (18-05-2010 14:03:47)

Hors ligne

#8 18-05-2010 15:22:31

Sergnal
Membre
Inscription : 17-06-2009
Messages : 38

Re : Checkbox avec tableau :(

En fait ton premier code était bon, il y avait juste une ptite erreur au niveau des variables $id et $tadid que tu devrais maintenant pouvoir trouver.

Mais c'est une bonne idée d'utiliser isset, pour que le code qui est juste au-dessus fonctionne il n'y a qu'à retirer ce qui sert à rien et rajouter la connexion à la bdd et l'envoi de requête.

Hors ligne

#9 19-05-2010 10:07:13

nopnop
Membre
Inscription : 17-05-2010
Messages : 5

Re : Checkbox avec tableau :(

Voici donc ce que j'ai fait :


$id=$_POST['choix'];


 if(isset($_POST['choix']))
  {
  foreach($_POST['choix'] as $index => $val)
    {
    //affichage des elements du tableau
    $sql = "INSERT INTO platsdujour(id, jour, mois, annee, id_site) VALUES('','$jour','$mois','$annee','$val')";

               mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
          echo 'Vos infos on été ajoutées.';
    }
  }

 

par contre je ne vois toujours pas l'erreur dans mon premier post sad

Hors ligne

#10 19-05-2010 10:36:01

Sergnal
Membre
Inscription : 17-06-2009
Messages : 38

Re : Checkbox avec tableau :(

Pour ton premier post c'était simplement

$tadid=$_POST['choix'];

Pour celui que tu viens de mettre et bien... qu'est-ce que tu veux que je te dise ? Si c'est "est-ce que c'est un code correct" je dirais que je ne vois pas d'erreur apparente sur ce bout de code, juste que

$id=$_POST['choix'];

ne sert plus à rien, que

foreach($_POST['choix'] as $index => $val)

serait plus simple ainsi

foreach($_POST['choix'] as $val)

et que tu peux rendre ta requete SQL plus correcte comme ça (je suppose que ton id est en autoincrement) :

INSERT INTO platsdujour(jour, mois, annee, id_site) VALUES('$jour','$mois','$annee','$val')

Après si c'est "pourquoi ça ne marche pas" et bien je ne vois pas où tu as défini tes variables $jour,$mois,$annee et je ne vois pas non plus ta connection à la bdd (mysql_connect et mysql_select_db). Mais si c'est ça je te conseille d'aller lire quelques tutos supplémentaires sur php, les variables et les interactions avec la base de donnée (si c'est pas ça je m'en excuse par avance).

Hors ligne

Pied de page des forums