A voir également:
- PHP SQL et checkbox
- Easy php - Télécharger - Divers Web & Internet
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
- Logiciel sql - Télécharger - Bases de données
- Php natif - Forum PHP
- Sql server recovery - Télécharger - Gestion de données
5 réponses
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
17 oct. 2007 à 14:46
17 oct. 2007 à 14:46
Tout d'abord je veux bien te croire que toi et le code ca fait deux ;) puisque voici une petite erreur d'algorithmie :
Ici, l'erreur se produit sur la ligne en gras comme tu l'as soulignée. Pourquoi ? Parce que la variable PHP '$i' n'existe pas dans ce bout de code. En effet, tu déclare $i dans ta boucle for, elle même incluse dans la première partie de ta condition IF, donc tu utise une variable qui n'est pas déclarée au bon endroit, et donc inconnue tu aura une erreur.
Je te conseille donc d'apporter cette modification :
Après, ce que je comprends de ton script c'est que tu veux pouvoir mettre à '1' ou '0' dans ta base de données en fonction de ce qui est coché ou non. Le problème c'est que lorsque tu envoi un formulaire avec un tableau comme ca qui représente tes checkbox, il me semble que ca ne t'envoi dans la tableau uniquement les checkbox qui ont été cochées.
Il va dont falloir mettre en place un syteme de détection pour savoir quel checkbox a été cochée ou non. Ainsi si l'utililsateur ne coche que la première et dernière (sur les trois) options, ton tableau dans le script PHP n'aura que deux valeurs : 0 et 2.
Je ne suis pas sur de ce que j'avance là car ca fait un moment que je n'ai pas fais ca, mais il me semble que ca fonctionne comme ca...
if(isset($_POST['choixform'])) { $choixform=$_POST['choixform']; for($i=0;$i<$total;$i++) { $choixform[$i] = "1"; } } else { $choixform[$i] ="0"; }
Ici, l'erreur se produit sur la ligne en gras comme tu l'as soulignée. Pourquoi ? Parce que la variable PHP '$i' n'existe pas dans ce bout de code. En effet, tu déclare $i dans ta boucle for, elle même incluse dans la première partie de ta condition IF, donc tu utise une variable qui n'est pas déclarée au bon endroit, et donc inconnue tu aura une erreur.
Je te conseille donc d'apporter cette modification :
if(isset($_POST['choixform'])) { $choixform=$_POST['choixform']; for($i=0;$i<$total;$i++) { $choixform[$i] = "1"; } } else { // --- Pas de tableau passé en paramètre -> erreur. echo "<script language='javascript'>alert('Erreur de formulaire')</script>"; // --- On arrête la script ici exit; }
Après, ce que je comprends de ton script c'est que tu veux pouvoir mettre à '1' ou '0' dans ta base de données en fonction de ce qui est coché ou non. Le problème c'est que lorsque tu envoi un formulaire avec un tableau comme ca qui représente tes checkbox, il me semble que ca ne t'envoi dans la tableau uniquement les checkbox qui ont été cochées.
Il va dont falloir mettre en place un syteme de détection pour savoir quel checkbox a été cochée ou non. Ainsi si l'utililsateur ne coche que la première et dernière (sur les trois) options, ton tableau dans le script PHP n'aura que deux valeurs : 0 et 2.
Je ne suis pas sur de ce que j'avance là car ca fait un moment que je n'ai pas fais ca, mais il me semble que ca fonctionne comme ca...
La suite de mes aventures...
j'ai bien compris l'erreur par rapport à la variable non déclarée. Je l'ai donc déclarée à nouveau dans le Else, en essayant de faire ressortir les infos cochées et non cochées avec le empty ou NULL. Les infos cochées ressortent bien mais rien pour les cases non cochées... grrrrrrrr!!!
Je comprends que les cases non cochées non pas de valeur car j'ai toujours des erreurs "Undefined index:" sur les cases non cochées. Mais alors comment leur attribuer une valeur ?
j'ai bien compris l'erreur par rapport à la variable non déclarée. Je l'ai donc déclarée à nouveau dans le Else, en essayant de faire ressortir les infos cochées et non cochées avec le empty ou NULL. Les infos cochées ressortent bien mais rien pour les cases non cochées... grrrrrrrr!!!
Je comprends que les cases non cochées non pas de valeur car j'ai toujours des erreurs "Undefined index:" sur les cases non cochées. Mais alors comment leur attribuer une valeur ?
if($_POST["choixform"]) { echo "Vous avez choisi <b>-"; for ($i=0;$i<count($_POST["choixform"]);$i++) { echo $_POST["choixform"][$i]." - "; } } if (empty($_POST['choixform'])) //ou if ($_POST['choixform'] == NULL) { echo "Vous n'avez pas choisi <b>-"; for ($i=0;$i<count($_POST["choixform"]);$i++) { echo $_POST["choixform"][$i]." - "; } }
En fait avant de faire quoi que ce soit, je me demande tout simplement si c'est logique de traiter le résultat des checkboxs de cette manière.
Lorsque les cases loisirs sont cochées ou non, je parcoure ma liste, je regarde si une valeur à été envoyée :
si oui, je renvoie 1
si non, je renvoie 0
et je récupère dans l'ordre les valeurs 1 ou 0 dans ma table loisirs.
ça vous parait logique ?
Avez vous une autre méthode pour enregistrer les résultats des checkbox?
Lorsque les cases loisirs sont cochées ou non, je parcoure ma liste, je regarde si une valeur à été envoyée :
si oui, je renvoie 1
si non, je renvoie 0
et je récupère dans l'ordre les valeurs 1 ou 0 dans ma table loisirs.
ça vous parait logique ?
Avez vous une autre méthode pour enregistrer les résultats des checkbox?
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
17 oct. 2007 à 13:35
17 oct. 2007 à 13:35
J'ai pas trop cerné ton problème si ce n'est que tu veux pouvoir détecter les check box cochées de celles non cochées afin de mettre à jour ta base de données.
J'ai déjà fait des choses similaires et ce n'est pas bien difficile ni long à mettre en place. Le mieux serait donc que tu mette ici même ton code (les parties concernées) afin que l'on puisse le corriger en fonction de tes besoins.
J'ai déjà fait des choses similaires et ce n'est pas bien difficile ni long à mettre en place. Le mieux serait donc que tu mette ici même ton code (les parties concernées) afin que l'on puisse le corriger en fonction de tes besoins.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Déjà un grand merci pour t'intéresser à mon problème. Le truc que c'est le code est moi, on est pas copain. J'ai beau faire des efforts...
Enfin bref... allons à l'essentiel voici mon code html :
Et un de mes essais de php pour traiter les infos reçues :
Avec ça j'ai déjà plusieurs erreurs dont "Undefined index" qui correspond aux cases non cochées et une sur "mysql_fetch_array()".
Voila où j'en suis. Je sais que pour ceux qui connaissent un peu le php ça doit être simple mais j'ai déjà passé un certain nombres d'heure là dessus et je tourne complètement en rond. J'aimerai au moins savoir si je vais dans la bonne direction parce que je veux y arriver et JE VAIS Y ARRIVER !!! :-)
Enfin bref... allons à l'essentiel voici mon code html :
<input type="checkbox" name="choixform[]" value="0"/> Ski<br /> <input type="checkbox" name="choixform[]" value="1"/>Rando<br /> <input type="checkbox" name="choixform[]" value="2"/> Escalade<br />
Et un de mes essais de php pour traiter les infos reçues :
if(isset($_POST['choixform'])) { $choixform=$_POST['choixform']; for($i=0;$i<$total;$i++) { $choixform[$i] = "1"; } } else { $choixform[$i] ="0"; }
$rqform="INSERT INTO formation (ID, ski, rando, escalade) VALUES ('','$choixform[1]', '$choixform[2]', '$choixform[3]')"; $resultform=mysql_query($rqform) or die ("Erreur : requête impossible");*/ //$tabform=mysql_fetch_array($choixform); }
Avec ça j'ai déjà plusieurs erreurs dont "Undefined index" qui correspond aux cases non cochées et une sur "mysql_fetch_array()".
Voila où j'en suis. Je sais que pour ceux qui connaissent un peu le php ça doit être simple mais j'ai déjà passé un certain nombres d'heure là dessus et je tourne complètement en rond. J'aimerai au moins savoir si je vais dans la bonne direction parce que je veux y arriver et JE VAIS Y ARRIVER !!! :-)