Incrémentation variables php
Fermé
Thomas
-
Modifié par Thomas le 22/03/2012 à 10:17
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 - 29 mars 2012 à 14:00
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 - 29 mars 2012 à 14:00
A voir également:
- Incrémentation variables php
- Easy php - Télécharger - Divers Web & Internet
- Php?id=1 - Forum PHP
- \R php ✓ - Forum PHP
- Nuage de points excel 4 variables - Forum Excel
- Br php ✓ - Forum PHP
6 réponses
Fallentree
Messages postés
2309
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
209
Modifié par Fallentree le 22/03/2012 à 10:29
Modifié par Fallentree le 22/03/2012 à 10:29
i="";
Tu compares peut etre des types incompatibles ???
En plus .isset($_POST["i_nom.$n"]))
essaie .. isset($_POST["i_nom.".$n]))
tu dois te retrouver dans le cas $i= "" et $n qui s incremente ....
Tu compares peut etre des types incompatibles ???
En plus .isset($_POST["i_nom.$n"]))
essaie .. isset($_POST["i_nom.".$n]))
tu dois te retrouver dans le cas $i= "" et $n qui s incremente ....
Mopra-L
Messages postés
146
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
23 mai 2012
6
22 mars 2012 à 10:28
22 mars 2012 à 10:28
Bonjour,
Tu devrais essayer de faire un echo de ta variable $n, avant de l'incrémenter, pour être sur qu'elle s'incrémente bien, justement.
Également, vu que ton but est de parcourir toutes les lignes, et dans l'ordre, privilégie plutôt la boucle "for" plutôt que while, pour être sur que tu ne tourne pas en rond.
Je ne me souviens plus de la syntaxe exact, mais ça doit être quelque chose du genre :
Tu devrais essayer de faire un echo de ta variable $n, avant de l'incrémenter, pour être sur qu'elle s'incrémente bien, justement.
Également, vu que ton but est de parcourir toutes les lignes, et dans l'ordre, privilégie plutôt la boucle "for" plutôt que while, pour être sur que tu ne tourne pas en rond.
Je ne me souviens plus de la syntaxe exact, mais ça doit être quelque chose du genre :
for ($n = 0; $n <= $i;$n++) { }
non je ne crois pas.
Je déclare $n comme une valeur integer au final et $i je le récupère du fichier html.
La voici dans ce fichier:
Et je l'extrait comme ça:
Mopra-L, j'ai fait tous les echos possible, ma variable $i sort avec la bonne valeur.
Si je mets la boucle while en commentaire je ressors toutes mes variables en les déclarant manuellement, tout est bon.
J'ai pas penser au for, merci de me réveiller lol, je vais essayer ça le plus rapidement possible
Je déclare $n comme une valeur integer au final et $i je le récupère du fichier html.
La voici dans ce fichier:
<script type="text/javascript"> function create_champ(i) { var i2 = i + 1; document.getElementById('input_'+i).innerHTML = '<div id="champs_'+i+'">Nom '+i+' :<input type="text" name="i_nom'+i+'"> Adresse '+i+' :<input type="text" name="i_adresse'+i+'"> Fonctionnement '+i+' :<input name="i_mode_fctmt'+i+'" type="text"/><input value="'+i+'" name="i" type="hidden"/></div></span>'; document.getElementById('input_'+i).innerHTML += (i <= 10000) ? '<span id="input_'+i2+'"><input class="input2" type="button" onClick="javascript:create_champ('+i2+')" value="Ajouter"></span>' : ''; } </script>
Et je l'extrait comme ça:
<div id="champs_1"> <div align="center"> Nom 1 : <input name="i_nom1" type="text"/> Adresse 1 : <input name="i_adresse1" type="text"/> Fonctionnement 1 : <input name="i_mode_fctmt1" type="text"/> <input name="i" type="hidden"/>
Mopra-L, j'ai fait tous les echos possible, ma variable $i sort avec la bonne valeur.
Si je mets la boucle while en commentaire je ressors toutes mes variables en les déclarant manuellement, tout est bon.
J'ai pas penser au for, merci de me réveiller lol, je vais essayer ça le plus rapidement possible
Fallentree
Messages postés
2309
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
209
22 mars 2012 à 10:38
22 mars 2012 à 10:38
A lieu de chercher toutes les modifs parcours tout les retour de ton _POST ...
foreach ($_POST AS $nom) {
foreach ($_POST AS $nom) {
en fait je ne vois pas trop comment utiliser le foreach dans ce cas là. J'ai, disons des bases très légères en php et je n'arrive pas encore à assimiler toute la puissance des itérations. Dans ce cas le foreach me permettrait de récupérer mes données contenu dans i_nom (i_nom1,i_nom2...) par exemple, mais après comment puis je les traiter pour les insérer dans ma commande sql pour ma bdd?
Fallentree
Messages postés
2309
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
209
29 mars 2012 à 14:00
29 mars 2012 à 14:00
essaie de faire un print_r($_POST).
la structure doit etre un tableau.
Pour bien faire ton foreach c est sur que il faudra le reorganiser
un explode peut etre puis un regroupement par uplet ...
la structure doit etre un tableau.
Pour bien faire ton foreach c est sur que il faudra le reorganiser
un explode peut etre puis un regroupement par uplet ...
Fallentree
Messages postés
2309
Date d'inscription
mercredi 25 février 2009
Statut
Membre
Dernière intervention
22 juillet 2019
209
Modifié par Fallentree le 22/03/2012 à 10:39
Modifié par Fallentree le 22/03/2012 à 10:39
en gros $i=1 au lieu de $i=""; ca ne me derangerait pas ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
22 mars 2012 à 23:00
22 mars 2012 à 23:00
<?php //tres mauvaise habitude de ne pas mettre systematiquement les {} dans les tests conditionnels if else if(isset($_POST["i"])) { $i=$_POST["i"]; }else { $i=""; } $n = 1; while ($n <= $i) { //un ; en trop sur cette ligne if ( isset($_POST["i_nom.$n"])){ //$i_nom.$n c'est pas bon pour une variable dynamique c'est: ${'i_nom'.$n} $i_nom.$n = $_POST["i_nom.$n"]; //attention en concatenant ainsi tu as par exemple avec n=5 $_POST["i_nom.5"] //si dans ton formulaire tu as i_nom5 il faut $_POST["i_nom".$n] //en résumé: ${'i_nom'.$n}= $_POST['i_nom'.$n]; //idem pour les autres }else{ $i_nom.$n = ""; } if ( isset($_POST["i_adresse.$n"])){ $i_adresse.$n = $_POST["i_adresse.$n"]; }else { $i_adresse.$n = ""; } if ( isset($_POST["i_mode_fctmt.$n"])){ $i_mode_fctmt.$n = $_POST["i_mode_fctmt.$n"]; }else { $i_mode_fctmt.$n = ""; } //si tu as une boucle infénie, je pense que sans les {} le n++ ne devait être pris en compte dans la boucle que dans le cas du dernier else $n++; }
Salut Alain.
Merci de tes conseils, il est vrai que je ne fais pas très attention avec mes boucles, j'ai appris comme cela en cours et j'ai gardé cette mauvaise habitude.
J'ai essayé ton code et j'ai toujours le même problème...
Ca boucle indéfiniment et ça me remet cycliquement qu'il ne connait pas les variables i_nom, i_adresse et i_mode_fctmt au niveau du else pour la valeur vide.
Là je commence à raboter le coin de la table à force de taper la tête dessus lol, je sens que je résultat n'est pas loin, mais ça commence à me secouer le cocotier cette affaire
Merci de tes conseils, il est vrai que je ne fais pas très attention avec mes boucles, j'ai appris comme cela en cours et j'ai gardé cette mauvaise habitude.
J'ai essayé ton code et j'ai toujours le même problème...
Ca boucle indéfiniment et ça me remet cycliquement qu'il ne connait pas les variables i_nom, i_adresse et i_mode_fctmt au niveau du else pour la valeur vide.
Là je commence à raboter le coin de la table à force de taper la tête dessus lol, je sens que je résultat n'est pas loin, mais ça commence à me secouer le cocotier cette affaire
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 23/03/2012 à 21:35
Modifié par Alain_42 le 23/03/2012 à 21:35
essayes comme ça, sinon avec le code du formulaire ce serait plus facile, sinon il y aune autre solution avec des array
<?php if(isset($_POST['i'])) { $i=$_POST['i']; }else { $i=0; //si tu compare $n dans ta boucle il vaut mieux que i par defaut soit un nombre } $n = 1; while ($n <= $i) { if ( isset($_POST['i_nom'.$n])){ ${'i_nom'.$n}= $_POST['i_nom'.$n]; }else{ ${'i_nom'.$n} = ""; } if ( isset($_POST["i_adresse.$n"])){ ${'i_adresse'.$n} = $_POST['i_adresse'.$n]; }else { ${'i_adresse'.$n}= ""; } if ( isset($_POST["i_mode_fctmt.$n"])){ ${'i_mode_fctmt'.$n} = $_POST['i_mode_fctmt'.$n]; }else { ${'i_mode_fctmt'.$n} = ""; } $n++; }