[php] Checkbox et variable
Résolu
Aroeris
Messages postés
38
Date d'inscription
Statut
Membre
Dernière intervention
-
jjsteing Messages postés 1670 Date d'inscription Statut Contributeur Dernière intervention -
jjsteing Messages postés 1670 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Bon bah comme vous le voyez je travaille sur plusieurs problemes j'ai beau chercher mais j'arrive pas a resoudre, et comme vos conseils sont plutot efficaces, ben je reviens !
Cette fois, j'ai une checkbox qui correspond a une taille et un champs qui lui est associé. Si la checkbox est coché, l'utilisateur doit remplir le champs.
C'est en faite pour ajouter un produit a ma base de donné, il y en tout 10 tailles ( de 0 a 9).Voici mon code.
Code :
<table border=\"0\" cellpadding=\"4\" cellspacing=\"9\">
<tr>
<td>S</td>
<td><input type=\"checkbox\" name=\"taille[]\" value=\"S\"/> </td>
<td><input type=\"text\" name=\"qte[]\" /></td>
<td>T36</td>
<td><input type=\"checkbox\" name=\"taille[]\" value=\"T36\"/> </td>
<td><input type=\"text\" name=\"qte[]\" /></td>
</tr>
<tr>
<td>M</td>
<td><input type=\"checkbox\" name=\"taille[]\" value=\"M\" /> </td>
<td><input type=\"text\" name=\"qte[]\" /></td>
<td>T38</td>
<td><input type=\"checkbox\" name=\"taille[]\" value=\"T38\" /> </td>
<td><input type=\"text\" name=\"qte[]\" /></td>
</tr>
</table>
for($i=0;$i<=4;$i++)
{
if(isset($_POST['taille'][$i]))
{
$var=secbdd($_POST['qte'][$i]);
$tail="insert into posseder values('".$_POST['taille'][$i]."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
____________________________________________________________________________________
J'ai volontairement couper du code sinon c'etait trop consequent. Il y a donc ici 4 yailles differentes. Je pense que le probleme vient de la boucle, et du traitement des variables des checkbox. En gros il vient du plus important.
Les requetes sont executés a moitié, soit certaines cases cocher ne sont pas ajouter dans la BDD, soit il manque une donné, bref j'ai essayer plusieurs maniere, avec un tableau a deux dimensions, avec des variables dynamiques, mais je pense que le probleme vient de moi je dois mal faire tourner mon algorithme.
Si vous pouviez m'aider svp :)
Bon bah comme vous le voyez je travaille sur plusieurs problemes j'ai beau chercher mais j'arrive pas a resoudre, et comme vos conseils sont plutot efficaces, ben je reviens !
Cette fois, j'ai une checkbox qui correspond a une taille et un champs qui lui est associé. Si la checkbox est coché, l'utilisateur doit remplir le champs.
C'est en faite pour ajouter un produit a ma base de donné, il y en tout 10 tailles ( de 0 a 9).Voici mon code.
Code :
<table border=\"0\" cellpadding=\"4\" cellspacing=\"9\">
<tr>
<td>S</td>
<td><input type=\"checkbox\" name=\"taille[]\" value=\"S\"/> </td>
<td><input type=\"text\" name=\"qte[]\" /></td>
<td>T36</td>
<td><input type=\"checkbox\" name=\"taille[]\" value=\"T36\"/> </td>
<td><input type=\"text\" name=\"qte[]\" /></td>
</tr>
<tr>
<td>M</td>
<td><input type=\"checkbox\" name=\"taille[]\" value=\"M\" /> </td>
<td><input type=\"text\" name=\"qte[]\" /></td>
<td>T38</td>
<td><input type=\"checkbox\" name=\"taille[]\" value=\"T38\" /> </td>
<td><input type=\"text\" name=\"qte[]\" /></td>
</tr>
</table>
for($i=0;$i<=4;$i++)
{
if(isset($_POST['taille'][$i]))
{
$var=secbdd($_POST['qte'][$i]);
$tail="insert into posseder values('".$_POST['taille'][$i]."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
____________________________________________________________________________________
J'ai volontairement couper du code sinon c'etait trop consequent. Il y a donc ici 4 yailles differentes. Je pense que le probleme vient de la boucle, et du traitement des variables des checkbox. En gros il vient du plus important.
Les requetes sont executés a moitié, soit certaines cases cocher ne sont pas ajouter dans la BDD, soit il manque une donné, bref j'ai essayer plusieurs maniere, avec un tableau a deux dimensions, avec des variables dynamiques, mais je pense que le probleme vient de moi je dois mal faire tourner mon algorithme.
Si vous pouviez m'aider svp :)
A voir également:
- [php] Checkbox et variable
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Vba range avec variable ✓ - Forum VB / VBA
- Range avec une Variable ✓ - Forum VB / VBA
- Variable d'environnement temp ✓ - Forum Microsoft Office
13 réponses
bonjour,
// je mettrais ça ici pour vérifier ce que renvoit le POST
echo "<pre>";print_r($_POST);echo "</pre>";
for($i=0;$i<=4;$i++)
{
if(isset($_POST['taille'][$i]))
{
$var=secbdd($_POST['qte'][$i]);
$tail="insert into posseder values('".$_POST['taille'][$i]."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
// je mettrais ça ici pour vérifier ce que renvoit le POST
echo "<pre>";print_r($_POST);echo "</pre>";
for($i=0;$i<=4;$i++)
{
if(isset($_POST['taille'][$i]))
{
$var=secbdd($_POST['qte'][$i]);
$tail="insert into posseder values('".$_POST['taille'][$i]."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
Tres pratique cette petite ligne pour debugger !
Alors j'ai bien mon tableau de $taille[] qui contient les bonnes valeurs. Si je coche S et M dans cette exemple j'obtiens ceci : [taille] => Array
(
[0] => S
[1] => M
)
A priori le probléme vient du tableau $qte[] qui lui me retourne ceci :
[qte] => Array
(
[0] => 15
[1] =>
[2] => 30
[3] =>
)
C'est pour ça que certaines valeurs ne sont pas rentrés. Ou pas du tout.
Comment faire alors pour que le $taille[1] qui correspond a la taille M,recupere bien le bon nombre de quantité ?
Alors j'ai bien mon tableau de $taille[] qui contient les bonnes valeurs. Si je coche S et M dans cette exemple j'obtiens ceci : [taille] => Array
(
[0] => S
[1] => M
)
A priori le probléme vient du tableau $qte[] qui lui me retourne ceci :
[qte] => Array
(
[0] => 15
[1] =>
[2] => 30
[3] =>
)
C'est pour ça que certaines valeurs ne sont pas rentrés. Ou pas du tout.
Comment faire alors pour que le $taille[1] qui correspond a la taille M,recupere bien le bon nombre de quantité ?
Bonsoir,
pour récupérer une bonne valeur, il faut qu'elle ait été mise.
Vérifier si cette valeur est bien dans la table. car si on récupère rien c'est que soit la valeur n'est pas en table ou bien que la rprogramme n'utilise pas le bon nom du retour.
regardez les noms imprimés dans le print_r c'est celui qui est retourné dans le tableau.
pour récupérer une bonne valeur, il faut qu'elle ait été mise.
Vérifier si cette valeur est bien dans la table. car si on récupère rien c'est que soit la valeur n'est pas en table ou bien que la rprogramme n'utilise pas le bon nom du retour.
regardez les noms imprimés dans le print_r c'est celui qui est retourné dans le tableau.
En faite quand taille est a lindice 0, qte est aussi a l'indice 0 donc c bon, mais quand taille est a l'indice 1, l'indice 1 de qte est vide donc la requete ne marche pas. Et comme taille est fini, les autre valeurs de qte zont zappés.
En faite il faudrait que les indices de deux tableau soit les memes.
Mais je vois pas comment faire pour recuperer uniquement la valeur saisie de la textbox qui correspond a la bonne checkbox
En faite il faudrait que les indices de deux tableau soit les memes.
Mais je vois pas comment faire pour recuperer uniquement la valeur saisie de la textbox qui correspond a la bonne checkbox
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
je pense qu'il faut revoir le formulaire. lescheckbox ne servent à rien.
<table border=\"0\" cellpadding=\"4\" cellspacing=\"9\">
<tr>
<td>S</td>
<td><input type="text" name="qteS" value=0 /></td>
<td>T36</td>
<td><input type="text" name="qteT36" value=0 ></td>
</tr>
<tr>
<td>M</td>
<td><input type="texte" name="qteM" value=0 /></td>
<td>T38</td>
<td><input type="text" name="qteT38" value=0 /></td>
</tr>
</table>
si les quantités sont renseignées (!=0 c'est comme si la checkbox avait été cliquée)
ensuite regarde ce que tu reçois pour mettre à jour ta base (le name te dire ce que c'est).
je pense qu'il faut revoir le formulaire. lescheckbox ne servent à rien.
<table border=\"0\" cellpadding=\"4\" cellspacing=\"9\">
<tr>
<td>S</td>
<td><input type="text" name="qteS" value=0 /></td>
<td>T36</td>
<td><input type="text" name="qteT36" value=0 ></td>
</tr>
<tr>
<td>M</td>
<td><input type="texte" name="qteM" value=0 /></td>
<td>T38</td>
<td><input type="text" name="qteT38" value=0 /></td>
</tr>
</table>
si les quantités sont renseignées (!=0 c'est comme si la checkbox avait été cliquée)
ensuite regarde ce que tu reçois pour mettre à jour ta base (le name te dire ce que c'est).
Salut,
je pense que tu as raison pr les checkbox, je les ai donc viré, et est modifié le code php en ce ci :
for($i=0;$i<=9;$i++)
{
if(isset($_POST['qte'][$i]) && !empty($_POST['qte'][$i]))
{
$tail="insert into posseder values('".$_POST['taille'] [$i]."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
Seulement comme d'habitude c'est la premeire valeur qui est rentré dans la base de donnée et pas le reste : /.
La je comprends pas trop, j'ai verifier si les donnés etait par rapport a mon lmd et c'est bon.
Certaine cellule du tableau $taille sont vides, ce serait a cause de ça ?
je pense que tu as raison pr les checkbox, je les ai donc viré, et est modifié le code php en ce ci :
for($i=0;$i<=9;$i++)
{
if(isset($_POST['qte'][$i]) && !empty($_POST['qte'][$i]))
{
$tail="insert into posseder values('".$_POST['taille'] [$i]."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
Seulement comme d'habitude c'est la premeire valeur qui est rentré dans la base de donnée et pas le reste : /.
La je comprends pas trop, j'ai verifier si les donnés etait par rapport a mon lmd et c'est bon.
Certaine cellule du tableau $taille sont vides, ce serait a cause de ça ?
Bonsoir :)
oui, je pense que c'est à cause de ca... donc =>
for($i=0;$i<=9;$i++)
{
if(isset($_POST['qte'][$i]) && !empty($_POST['qte'][$i]))
{
$MaTaille=0;
if (isset ($_POST['taille'] [$i]){$MaTaille=$_POST['taille'] [$i];}
$tail="insert into posseder values('".$MaTaille."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
oui, je pense que c'est à cause de ca... donc =>
for($i=0;$i<=9;$i++)
{
if(isset($_POST['qte'][$i]) && !empty($_POST['qte'][$i]))
{
$MaTaille=0;
if (isset ($_POST['taille'] [$i]){$MaTaille=$_POST['taille'] [$i];}
$tail="insert into posseder values('".$MaTaille."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
Alors j'ai virer les checkbox.
Je me suis trompé c'est qte qui a des valeur vide.
Comme j'ai mis <td><input type=\"text\" name=\"qte[]\" value=\"0\"/></td>, le premier formulaire c'est $_POST['qte"][0]
Du coup j'ai fait ça :
$taille = array();
$taille[0]= "S";
$taille[1]= "T36";
$taille[2]= "M";
$taille[3]= "T38";
$taille[4]= "L";
$taille[5]= "T40";
$taille[6]= "XL";
$taille[7]= "T42";
$taille[8]= "XXL";
$taille[9]= "T44";
for($i=0;$i<=9;$i++)
{
$var=secbdd($_POST['qte'][$i]);
if(isset($_POST['qte'][$i]) && !$_POST['qte'][$i] !=0)
{
$tail="insert into posseder values('".$taille[$i]."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
Mais maintenant toutes les tailles sont rentrés dans la bdd sauf que les quantités reste a 0.
Je comprend plus rien ...
edit : qud je dis toutes les tailles c'est que j'ai les 10 tailles, le numero du produit, et la quantité 0. Meme si la valeur a été saisie.
edit : 2 en mettant le value dans la balise input, est affiché "0" par defaut dans la box.
Je me suis trompé c'est qte qui a des valeur vide.
Comme j'ai mis <td><input type=\"text\" name=\"qte[]\" value=\"0\"/></td>, le premier formulaire c'est $_POST['qte"][0]
Du coup j'ai fait ça :
$taille = array();
$taille[0]= "S";
$taille[1]= "T36";
$taille[2]= "M";
$taille[3]= "T38";
$taille[4]= "L";
$taille[5]= "T40";
$taille[6]= "XL";
$taille[7]= "T42";
$taille[8]= "XXL";
$taille[9]= "T44";
for($i=0;$i<=9;$i++)
{
$var=secbdd($_POST['qte'][$i]);
if(isset($_POST['qte'][$i]) && !$_POST['qte'][$i] !=0)
{
$tail="insert into posseder values('".$taille[$i]."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
Mais maintenant toutes les tailles sont rentrés dans la bdd sauf que les quantités reste a 0.
Je comprend plus rien ...
edit : qud je dis toutes les tailles c'est que j'ai les 10 tailles, le numero du produit, et la quantité 0. Meme si la valeur a été saisie.
edit : 2 en mettant le value dans la balise input, est affiché "0" par defaut dans la box.
la quantité c'est $var c'est ca ?? si oui... ben il manque un $var=$_POST['qte'][$i] quelque part...
Non il etait au dessus du if si tu regardes bien.
Mais je l'ai remis dans le if.
$taille = array();
$taille[0]= "S";
$taille[1]= "T36";
$taille[2]= "M";
$taille[3]= "T38";
$taille[4]= "L";
$taille[5]= "T40";
$taille[6]= "XL";
$taille[7]= "T42";
$taille[8]= "XXL";
$taille[9]= "T44";
for($i=0;$i<=9;$i++)
{
if(isset($_POST['qte'][$i]) && !$_POST['qte'][$i] !=0)
{
$var=secbdd($_POST['qte'][$i]);
$tail="insert into lulu_posseder values('".$taille[$i]."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
Secbdd c'est une fonction qui pr limiter les injections sql et tt. Ttes mes valeurs saisies passent par ça donc ça vient pas de là.
Seulement ya qqch que je comprend pas j'ai bien mis dans la condition que si c'est different de 0 ça execute la requête.Alors comment ça se fait que ça me rentre toutes les tailles avec en quantité 0 ?
Mais je l'ai remis dans le if.
$taille = array();
$taille[0]= "S";
$taille[1]= "T36";
$taille[2]= "M";
$taille[3]= "T38";
$taille[4]= "L";
$taille[5]= "T40";
$taille[6]= "XL";
$taille[7]= "T42";
$taille[8]= "XXL";
$taille[9]= "T44";
for($i=0;$i<=9;$i++)
{
if(isset($_POST['qte'][$i]) && !$_POST['qte'][$i] !=0)
{
$var=secbdd($_POST['qte'][$i]);
$tail="insert into lulu_posseder values('".$taille[$i]."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
Secbdd c'est une fonction qui pr limiter les injections sql et tt. Ttes mes valeurs saisies passent par ça donc ça vient pas de là.
Seulement ya qqch que je comprend pas j'ai bien mis dans la condition que si c'est different de 0 ça execute la requête.Alors comment ça se fait que ça me rentre toutes les tailles avec en quantité 0 ?
bonsoir,
si tu mettais le résultat de :
echo "<pre>";print_r($_POST);echo "</pre>";
on pourrait voir exactement ce que te renvoit le formulaire.
si tu mettais le résultat de :
echo "<pre>";print_r($_POST);echo "</pre>";
on pourrait voir exactement ce que te renvoit le formulaire.
C'est bon ça marche !
J'ai changer de place deux trois trucs dans la boucle:
for($i=0;$i<=9;$i++)
{
$var=secbdd($_POST['qte'][$i]);
if(isset($_POST['qte'][$i]) && $var !=0)
{
$tail="insert into lulu_posseder values('".$taille[$i]."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
Je vous en suis tres reconnaissant a vous deux de m'aider : ) J'apprecie vraiment sans votre aide je serai dans la mouise ! Merci encore ; )
J'ai changer de place deux trois trucs dans la boucle:
for($i=0;$i<=9;$i++)
{
$var=secbdd($_POST['qte'][$i]);
if(isset($_POST['qte'][$i]) && $var !=0)
{
$tail="insert into lulu_posseder values('".$taille[$i]."','".$nump."',".$var.")";
$req3=mysql_query($tail);
}
}
Je vous en suis tres reconnaissant a vous deux de m'aider : ) J'apprecie vraiment sans votre aide je serai dans la mouise ! Merci encore ; )