Salut !
Simple curiosité , je voudrais savoir quel principe utilise-t-on en PHP
pour supprimer par exemple plusieurs éléments recceuillis par un checkbox , comme dans phpMyAdmin ...
Merci d'avance ! :D
Version imprimable
Salut !
Simple curiosité , je voudrais savoir quel principe utilise-t-on en PHP
pour supprimer par exemple plusieurs éléments recceuillis par un checkbox , comme dans phpMyAdmin ...
Merci d'avance ! :D
Les groupes de checkboxes fonctionnent de la même façon que les select multiple. (:faq: Comment extraire les valeurs d'un SELECT multiple ?)
On définit les checkboxes comme formant un groupe de façon à récupérer toutes les valeurs dans un tableau, en gardant à l'esprit que le script PHP ne récupère que les checkboxes cochées.
Donc côté html :
et côté php à la récupération :Code:
1
2
3
4 <input type="checkbox" name="machin[]" value="1"/> machin 1 <input type="checkbox" name="machin[]" value="2" checked="checked"/> machin 2 <input type="checkbox" name="machin[]" value="3" checked="checked"/> machin 3 <input type="checkbox" name="machin[]" value="4"/> machin 4
Code:
1
2
3
4 $machins = $_POST['machin']; foreach ($machins as $machin) { echo 'machin : '.$machin; }
Je cherche à récupérer les différentes valeurs cochées sans résultat.
J'ai fait exactement le même code et j'obtiens toujours la même erreur.
Qu'est-ce qui ne fonctionne plus ? Moi je comprends plus rien.Citation:
Warning: Invalid argument supplied for foreach() in /home/www/vhosts/example.com/httpdocs/contact.php on line 18
Comment veux-tu qu'on te le dise sans montrer ton code ? :no:
La solution proposée par Celira est correcte, si tu obtiens des erreurs, c'est que tu n'as pas fait comme elle te l'a montré, sauf qu'il nous est impossible de savoir ce que tu fais...
Celira t'a donné le principe mais il faut l'adapter au minimum. Notamment avant d'utiliser des variables il faut vérifier leur existence, genre :
Ton code d'erreur indiquait que tu passais un argument invalide au foreach. Et pour cause dans le code initial $_POST['machin'] n'est pas défini par défaut. Tu aurais vu cela plus vite en faisant afficher les erreurs de notice (ce qui aurait affiché 'undefined index...')Code:
1
2
3
4 $machins = isset($_POST['machin']) ? $_POST['machin'] : array(); foreach ($machins as $machin) { echo 'machin : '.$machin; }
Le problème semble être à ce niveau.
Car $_POST['machin'] il me le reconnait bien en tant que array. En revanche $machins lui n'est pas un array.Code:$machins = $_POST['machin'];
Donc je ne sais pas ce qui se passe dans l'affectation de la variable $machins mais elle ne prends pas la valeurs de $_POST['machin'] en fait ou du moins pas en tant que array.
Du coup dans mon code j'utilise directement $_POST['machin'] et toutes les erreurs ont disparues mais ça fait pas beau dans le code.
Je vais plutôt ouvrir un nouveau topic pour l'assignation d'un array en tant que array.
Je sais pas ce que tu fabrique mais tu as un problème. Quand on fait $a=$b alors $b sera égal à $a. Le pb que tu rencontre se situe donc ailleurs. As-tu essayé de mettre en place le code que je t'ai montré plus haut ?
Dans une page séparée, testes le code suivant :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <?php $machins = isset($_POST['machin']) ? $_POST['machin'] : array(); foreach ($machins as $machin) { echo 'machin : '.$machin; echo '<br>'; } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Document sans titre</title> </head> <body> <form method = "post" action = "#"> <input type="checkbox" name="machin[]" value="1"/> machin 1<br> <input type="checkbox" name="machin[]" value="2" /> machin 2<br> <input type="checkbox" name="machin[]" value="3" /> machin 3<br> <input type="checkbox" name="machin[]" value="4"/> machin 4<br> <input type="submit" value="envoyer" /> </form> </body> </html>