Envoie de tableau en php
Résoluen espérant que quelqu'un puisse répondre a cette question ...
j'ai un livre d'or a gérer et pour cela je souhaiterai pour la parti administrateur mettre des cases a coché , la je viens a mon problème des case a coché il m'en faut 2 pour chaque commentaire donc une boucle
echo"<form method='POST'>"
$validation=array ()
while ($donnees = mysql_fetch_array($reponse))
{
echo"<input type='checkbox' name='validation' ";//ici je crois que c'est n'importe quoi
}
echo"</form>"
merci de vos réponses d'avance
5 réponses
Gestion des cases à cocher pour les commentaires d'un livre d'or en PHP, visant à marquer plusieurs éléments via une boucle et des requêtes MySQL. Plusieurs réponses proposent d’utiliser un seul formulaire consolidant les actions de validation et de suppression, avec des identifiants uniques et des noms dynamiques pour chaque commentaire. D'autres suggèrent d'afficher les contenus tronqués et d'associer deux cases à cocher par commentaire, afin de déclencher des traitements spécifiques côté serveur lors de l'envoi. En cas de nombreuses entrées, la solution privilégiée est une seule requête côté serveur pour écrire les modifications, évitant 200 requêtes distinctes et améliorant les performances.
-
Salut !
echo '<form method='POST'>'; while ($donnees = mysql_fetch_array($reponse)) { echo '<p>'.substr($donnees['contenu'], 0, 90).'</p>'; echo '<input type="checkbox" name="valid_'.$donnees['id'].'"> Valider'; echo '<input type="checkbox" name="supp_'.$donnees['id'].'"> Supprimer'; } echo '</form>';
Quand tu supprime(valide), tu fait par exemple un explode dans une boucle foreach($_POST ..., tu récupère ainsi l'action a faire, et l'id du commentaire a traiter !
Mettez en résolu quand c'est résolu -.- ... -
<?php
while ($donnees = mysql_fetch_array($reponse))
{
echo "<form action=\"checkbox.php\">";
echo "<input type=\"hidden\" name=\"envoi\" value=\"yes\">"; // aiguilleur
echo "<input type=\"checkbox_" name=\"oui\" value=\"oui\"> Valider<br />";
echo " <input type=\"checkbox\" name=\"suppr\" value=\"suppr\"> Supprimer<br />";
echo "<input type=\"submit\">";
echo " </form>";
}
?>
<?php
$envoi = $_GET['envoi']; //aiguilleur
$valid = $_GET['oui']; //si valid
$suppr = $_GET['suppr']; //si suppr
if ($envoi == 'yes') {
if ($valid == oui)
{ ta requete pour confirmer la validite dans la base de donnée
+ echo "ok";
}
if($suppr == suppr)
{ ta requete delet
+ echo "ok";
}
}
?>
j'ai pas pu tester mais ça doit se rapprocher de ça-
1 - Faut ajouter des conditions sur la variable $_GET, si elle existe ou pas !!!
2 - T'as deux formulaires la ?!!! o.O'
Et dans une boucle en plus, donc si il y a 200 commentaires, il va créer 200 formulaires !
et Donc, on ne pourra pas supprimer plusieurs commentaires a la fois, ou valider plusieurs commentaires d'un coup !
PS : T'as oublier de préciser quel commentaire on va valider ou supprimer ? -
-
-
-
-
-
echo"<input type=\"checkbox\" name=\"validation\" />";
plutot non ?-
Salut,
Non je pense pas c'est le problème, pas besoin d'échapper les guillemets vu que les simples sont inclus dans des doubles.
Par contre une case à cocher sans valeur à transmettre ça servira pas à grand chose. Ajoutez l'attribut value et la valeur en dynamique sinon votre boucle n'as aucune utilité. Indiquer aussi à quoi correspond la case pourrait être utile aussi non?
//, la je viens a mon problème des case a coché il m'en faut 2 pour chaque commentaire
Si vous voulez 2 cases à cocher obligatoirement il vous faut vérifier en javascript avant l'envoi du formulaire, par contre ils ne devraient pas avoir le même name pour pouvoir les différencier ou alors une id différente.
Si vous n'avez qu'un choix de 2 valeur est ce utile de faire un fetch_array et une boucle? -
dsl je me suis mal exprimer il m'en faut deux un pour valider/dévalider le commentaire et un pour le supprimer .
et maintenant que tu le dis oui si j'ai rien mis, j'envoi rien
et il me faut une boucle car je demande a ma page d'afficher tout les commentaires présent sur ma base de donné et de cocher la case en fonction de ce que je veux faire.
je vais tester un truc si ça fonctionne je le publierai si nan ben je reviendrai a la charge avc un code qui ne marche pas merci Kafiristanica
-
-
<body> <div class='mep'height="450"> <?php if(isset($_POST['sup'])or isset($_POST['val']) or isset($_POST['deval'])) { print_r($_POST['sup']); if ($tst=mysql_connect("127.0.0.1", "root", "")) { echo "connection ok </br>"; if($num=(mysql_select_db("livredor"))) { echo "connexion bdd ok </br>"; if(!empty($_POST['sup'])) { foreach($_POST['sup'] as $sup) { if ($req=mysql_query ("DELETE FROM 'livreor' WHERE 'id' ='$sup'")) echo "<br/>requete effectuer<br/>commentaire numero ".$sup." correctement supprimer"; else echo "<br/>erreur requete"; } } if(!empty($_POST['val'])) { foreach($_POST['val']as $val) { $val=$_POST['val']; if ($req=mysql_query ("UPDATE 'livreor' SET valid='1' WHERE('livreor'.'id' ='$val')")) { echo "<br/>requet effectuer <br/> commentaire ".$val." publier"; } else echo "<br/> erreur requete " ; } } if(!empty($_POST['deval'])) { foreach($_POST['deval']as $val) { if ($req=mysql_query ("UPDATE 'livreor' SET valid='0' WHERE('livreor'.'id' ='$deval')")) { echo "<br/>requet effectuer <br/> commentaire ".$deval." publier"; } else echo "<br/> erreur requete " ; } } } else { echo "connexion bdd a échoué </br>"; } } else { echo "connexion échoué </br>"; } mysql_close(); } else { if ($tst3=mysql_connect("127.0.0.1", "root", "")) { if ($tst4=mysql_select_db("livredor")) { $nombreDeMessagesParPage = 8; $retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor'); $donnees = mysql_fetch_array($retour); $totalDesMessages = $donnees['nb_messages']; $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage); echo 'Page : '; for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="page_admin.php?page=' . $i . '">' . $i . '</a> '; } if (isset($_GET['page'])) { $page = $_GET['page']; } else { $page = 1; // On se met sur la page 1 (par défaut) } $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage; echo"<div class='admin'>"; if ($reponse = mysql_query('SELECT * FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage)) { echo"<form action='page_admin.php' method='post'>"; $val=array(); $deval=array(); $sup=array(); while ($donnees = mysql_fetch_array($reponse)) { $inc=$donnees['id']; echo "<p><strong>".$donnees['id']." " . $donnees['pseudo'] . "</strong> a écrit :<br />" . $donnees['message']."</br>" ; echo "supprimer : <input type=\"checkbox\" name=\"sup[]\" value= '$inc' />"; if ($donnees['valid']==1) { echo " <div style='color:green'>déja valider</div>"; echo "dévalider : <input type='checkbox' name='deval[]' value= '$inc' />"; } else { echo " <div style='color:red'><strong>en cour de validation</strong></div> "; echo "valider : <input type='checkbox' name='val[]' value= '$inc' />"; } echo"</p>"; } echo"<input type='submit' name='valider'>"; echo"</form>"; } else echo "requete impossible"; } else echo "connexion table echoué"; } else echo "connexion bdd echou"; mysql_close(); } ?> </div></div> </body>
bon j'ai mis tout le code de ma parti admin de mon livre d'or merci Kafiristanica et joos -
c'est propre, c'est rare ici bravo =)
Peut etre une condition au debut pour eviter plusieurs cases cochés non ?