Récupération de variables en boucle

Récupération de variables en boucle - PHP - Programmation

Marsh Posté le 11-05-2006 à 15:21:51    

Bonjour,
 
Je crée un formulaire qui a un nombre de champs variables (on choisi d'abord le nombre d'article à faire, et le formulaire est généré en fonction de ça). Le formulaire se génère sans souci. Voici son code : (où $nb est le nombre d'articles choisi, sur la page précédente).

Code :
  1. $nb=$_POST['nombre'];
  2. $i=0;
  3. while ($i<$nb) {
  4. echo "Article numero = <b>".$i."</b> : <br />
  5. Nom : <input type='text' name='sa_nom".$i." size='40'> <br /><br />
  6. Chapeau : <textarea name='sa_chapeau".$i."' cols='100' rows='5'></textarea> <br /><br />
  7. Nom du journaliste : <input type='text' name='sa_journaliste".$i." size='40'> <br /><br />
  8. Article : <textarea name='sa_article".$i."' cols='100' rows='20'></textarea> <br /><br />
  9. <hr>";
  10. $i++;
  11. }


 
Aucun souci quand je regarde le code source, il crée bien un "sa_nom0", "sa_nom1", etc etc...
 
Là où ça se gâte, c'est pour récupérer mes variables en boucle... :(
Voici le code que j'utilise :
 

Code :
  1. $i=0;
  2. while ($i!=$inc) {
  3. $sa_nom.$i = $_POST['sa_nom'.$i];
  4. $sa_chapeau.$i = $_POST['sa_chapeau'.$i];
  5. $sa_journaliste.$i = $_POST['sa_journaliste'.$i];
  6. $sa_article.$i = $_POST['sa_article'.$i];
  7. $i++;
  8. }


où je définis $inc comme étant le nombre d'articles (je le récupère à nouveau).
J'ai un peu essayé de retourner ça dans tous les sens (mais jamais dans le bon 'faut croire :( ), mais rien à faire, où bien il ne garde que la dernière valeur, ou bien il boucle sans s'arrêter... :(
 
Si quelqu'un sait m'aider... Merci ;)


Message édité par clemdups le 11-05-2006 à 15:23:44
Reply

Marsh Posté le 11-05-2006 à 15:21:51   

Reply

Marsh Posté le 11-05-2006 à 15:30:13    

essaye ${'sa_journaliste'.$i}


---------------

Reply

Marsh Posté le 11-05-2006 à 15:39:31    

flo850 a écrit :

essaye ${'sa_journaliste'.$i}


Merci de la réponse, mais hélas ça ne fonctionne pas.
Il me renvoie comme erreur qu'il ne trouve pas les variables... :(

Reply

Marsh Posté le 11-05-2006 à 15:41:24    

et pourquoi tu ne stockerai pas plutot tes données dans un tableau ( c'est prevu pour a la base ) :  
$tab[$i]['sa_nom]=$_POST['sa_nom'.$i];


---------------

Reply

Marsh Posté le 11-05-2006 à 15:44:30    

fais plutôt un tableau que de la concaténation de variable.
$sa_nom.$i devient $sa_nom[$i]
 
et fais plutôt ta boucle avec while($i < $inc) : on sait jamais, si t'as un bug et que $inc n'est pas un entier, la boucle sera infinie.

Reply

Marsh Posté le 11-05-2006 à 15:55:15    

Djebel1 a écrit :

fais plutôt un tableau que de la concaténation de variable.
$sa_nom.$i devient $sa_nom[$i]
 
et fais plutôt ta boucle avec while($i < $inc) : on sait jamais, si t'as un bug et que $inc n'est pas un entier, la boucle sera infinie.


 
Pour le "<" je l'ai fait, effectivement c'est pitete mieux :p
Concernant les tableaux, je vais m'y mettre dans ce cas (je suis pas très à l'aise avec, c'est le moment de le devenir :D ), merci de vos conseils.
 
Amicalement,

Reply

Marsh Posté le 11-05-2006 à 15:58:29    

les tableaux associatifs sont tres tres tres pratique
 
en ne les utilisant, tu passe a cote d'une des principales fonctionnalités de php  
 
apres, tu utilise  
foreach($tab as $cle => $valeur){
 
}
 
pour le parcourir


---------------

Reply

Marsh Posté le 11-05-2006 à 16:16:24    

ou par exemple
$x = 0;
while (isset($tab[$x])) {
    $x++;
}
si la clé est numérique

Reply

Marsh Posté le 11-05-2006 à 16:32:13    

Djebel1 a écrit :

ou par exemple
$x = 0;
while (isset($tab[$x])) {
    $x++;
}
si la clé est numérique


 
ceci ne fonctionne qu'avec des clé consécutives
l'avantage du php est de permettre d'utiliser n'importe quoi comme clé ( des nombre, mais aussi des chaînes de caractères )


---------------

Reply

Marsh Posté le 11-05-2006 à 17:01:21    

Merci à tous !  
Ce forum est une merveille pour les petites entraides comme ça :) .
 
... et je me rends compte que les tableaux c'est effectivement puissant ! :)

Reply

Marsh Posté le 11-05-2006 à 17:01:21   

Reply

Marsh Posté le 11-05-2006 à 17:30:42    

quand la question est posée intelligement, il y a generalement une reponse intelligente ;)


---------------

Reply

Marsh Posté le 11-05-2006 à 18:25:59    

Pour info tu n'as même pas besoin d'utiliser Php pour générer tes champs.
 
Au lieu de mettre ça :
 
<input type='text' name='sa_nom".$i." size='40'>
 
Tu peux mettre ça :
 
<input type="text" name="sa_nom[]" size="40">
 
Tu récupère de l'autre côté un taleau sa_nom avec toutes les données dedans :)


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 12-05-2006 à 10:04:53    

Dj YeLL a écrit :

Pour info tu n'as même pas besoin d'utiliser Php pour générer tes champs.
 
Au lieu de mettre ça :
 
<input type='text' name='sa_nom".$i." size='40'>
 
Tu peux mettre ça :
 
<input type="text" name="sa_nom[]" size="40">
 
Tu récupère de l'autre côté un taleau sa_nom avec toutes les données dedans :)


 
ah oui en effet :)
Mais j'avoue que je préfère ma solution par soucis de clareté, je ne suis pas programmeur, juste bidouilleur :p .
Mais merci de l'info ;).
 
L'idéal serait de choisir le nombre de champs en direct, mais là je crois qu'on est dans le domaine du javascript non :D ?

Reply

Marsh Posté le 12-05-2006 à 10:24:47    

oui  
 
et a mon avis , c'est loin d'etre l'ideal ;)


---------------

Reply

Marsh Posté le 12-05-2006 à 10:36:29    

Si ${'sa_journaliste'.$i} ne fonctionne pas... Pourquoi n'utilise pas une global ? ex:$GLOBALS['sa_journaliste'.$i] = ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed