PHP/HTML Recupérer le nom d'un input

Résolu
Ikkath Messages postés 30 Statut Membre -  
[o.o]REplay Messages postés 385 Statut Membre -
Bonjour, je cherche a récupérer le nom de plusieurs input générés par un while, j'ai pensé
à un truc du genre, mais soit la syntaxe est mauvaise, soit c'est emme pas possible :

$i=0;
while($data2 = mysql_fetch_assoc($req2))
{
echo '<dd>'.$data2['entrée'].'<b>Change : </b>'; ?>
<input type="text" name="entrée $i" maxlength="250"> <?php
$i++;
}


Comme vous le voyez, je ne sais pas cb de input vt etre générés ... et j'ai besoin de savoir leur
nom pour traiter ensuitee les données entrées par l'utilisateur ..

Ou si vous voyez un autre moyen ..

Merci pour votre aide !

6 réponses

[o.o]REplay Messages postés 385 Statut Membre 28
 
Ah ok.
Pourquoi ne pas envoyer les données dans un tableau alors?
Il suffira d'utiliser count à la réception.
Je sais que ça marche en $_GET, jamais essayé en POST, mais ça devrait être la même chose, non?
1
Alkaaran Messages postés 291 Statut Membre 37
 
Pour la méthode de [o.o]REplay :
while($data2 = mysql_fetch_assoc($req2)) 
{ 
echo '<dd>'.$data2['entrée'].'<b>Change : </b>'; 
echo '<input type="text" name="entree[]" maxlength="250">';
} 
0
[o.o]REplay Messages postés 385 Statut Membre 28 > Alkaaran Messages postés 291 Statut Membre
 
(=
0
Alkaaran Messages postés 291 Statut Membre 37
 
Mais comment je peux faire pour recuperer ce nom dans un echo par exemple ?

A pas compris...
0
Ikkath Messages postés 30 Statut Membre
 
Si je fais comme ca,

Dans mon fichier de traitement, si j'écris par exemple :

echo $_POST['entrée_0'] ;

ca me met :

Notice: Undefined index: entrée_0 in D:\Program Files\EasyPHP 2.0b1\www\test\updating.php on line 12

voila mon pb ...

merci de votre aide en tout cas ..
0
Alkaaran Messages postés 291 Statut Membre 37
 
Cela veut dire que la variable entrée_0 n'existe pas ou n'a pas été envoyée par le formulaire, vérifie que tu n'a pas fait de faute de frappe...

Astuce : ne met jamais d'accents dans les noms de variables
Astuce : pour voir quelle(s) variable(s) a(ont) été envoyée(s) par un formulaire, insere print_r( $_POST ) ; dans ton code
0
Ikkath Messages postés 30 Statut Membre
 
Re - Bonjour !

Alkaraan, j'ai suivi ton conseil et inseré un print_r( $_POST ) ; dans mon code et j'obtiens ca :


Notice: Undefined index: entree_0 in D:\Program Files\EasyPHP 2.0b1\www\test\updating.php on line 13
Array ( [nom] => [domaine] => [onglet] => [remarques] => [entree_'_$i_'] => [nvelle_entrée'] => [sortie_'_$j_'] => [nvelle_sortie'] => )

On dirait qu'il ne considère pas $i comme une variable ... comment faire pour changer ca ?
0
Alkaaran Messages postés 291 Statut Membre 37
 
Le probleme est dans ta page de formulaire...

Regarde si tu as bien suivi la syntaxe :
$i=0; 
while($data2 = mysql_fetch_assoc($req2)) 
{ 
echo '<dd>'.$data2['entrée'].'<b>Change : </b>'; 
echo '<input type="text" name="entree_'.$i.'" maxlength="250">';
$i++;
} 
0
Ikkath Messages postés 30 Statut Membre
 
J'ai bien verifié la syntaxe est bonne ...

On dirait que le resultat de l'input "entree_'.$i.'" est écrasé à chaque boucle du while, en fait seul le resultat du dernier input "entree_'.$i.'" est récupéré .

Si je remplis tout mes champs "entree_'.$i.'" générés dans le formulaire, j'obtiens :

Notice: Undefined index: entree_$i in D:\Program Files\EasyPHP 2.0b1\www\test\updating.php on line 13
Array ( [nom] => [domaine] => [onglet] => [remarques] => [entree_'_$i_'] => bonjour [nvelle_entrée'] => [sortie_'_$j_'] => [nvelle_sortie'] => )


Alors que j'ai mis 'bonjour' dans le dernier input "entree_'.$i.'" ... c'est bien le $i qui ne semble pas considéré comme une variable ...
0
[o.o]REplay Messages postés 385 Statut Membre 28 > Ikkath Messages postés 30 Statut Membre
 
Essaie d'utiliser les variables dynamiques:) $$variables. ca devrait résoudre ton problème.
-> http://www.manuelphp.com/php/language.variables.variable.php
0
Alkaaran Messages postés 291 Statut Membre 37 > [o.o]REplay Messages postés 385 Statut Membre
 
J'y ai aussi pensé, mais ce n'est même pas le problème ici... C'est dans son formulaire qu'il y a une couille, et pes dans la récupération :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alkaaran Messages postés 291 Statut Membre 37
 
C'est quand même bizarre ce problème... mais on va essayer de le contourner...
$i=0; 
while($data2 = mysql_fetch_assoc($req2)) 
{ 
$name = 'entree_'.$i ;
echo '<dd>'.$data2['entrée'].'<b>Change : </b>'; 
echo '<input type="text" name="'.$name.'" maxlength="250">';
$i++;
} 
0
Ikkath Messages postés 30 Statut Membre
 
C'est bon, j'ai trouvé la solution : C'était en effet un probleme de syntaxe dans le formulaire :


<input type="text" name=<?php echo "entree_'.$i.'" ?> maxlength="250"></p><?php


En effet, sans les balise php, $i n'est pas considéré comme une variable !

Merci de votre, aide, je met le topic en résolu !
0
[o.o]REplay Messages postés 385 Statut Membre 28 > Ikkath Messages postés 30 Statut Membre
 
omg -.- j'avais pas fais gaf aux balises...
0
macgawel Messages postés 676 Statut Membre 89
 
Bonjour.

1. N'utiliser que des caractères alphanumériques pour nommer les input.
=> "entree_$i"

2.
echo '<dd>'.$data2['entrée'].'<b>Change : </b>'; ?>
<input type="text" name="entrée $i" maxlength="250"> <?php 

Tu fermes ta balise php.
Du coup, le $i du nom n'est pas interprété...

=>
echo '<dd>'.$data2['entrée'].'<b>Change : </b>'; 
echo '<input type="text" name="entree_'.$i.'" maxlength="250">';
$i++;
-1
Ikkath Messages postés 30 Statut Membre
 
OK, ce ne serait donc qu'un probleme de syntaxe ...

Mais comment je peux faire pour recuperer ce nom dans un echo par exemple ?

Merci !
0
Ikkath Messages postés 30 Statut Membre > Ikkath Messages postés 30 Statut Membre
 
un peu d'aide s'il vous plait ...
0
PhP Messages postés 1774 Statut Membre 606 > Ikkath Messages postés 30 Statut Membre
 
Bsr

Mais macgawel t'a déjà donné la réponse !

Tu fermais ta balise php trop top.

Je ne fais que lire ca réponse et ca donne

$i=0; 
while($data2 = mysql_fetch_assoc($req2)) 
{ 
echo '<dd>'.$data2['entrée'].'<b>Change : </b>'; 
echo '<input type="text" name="entree_'.$i.'" maxlength="250">';
$i++;
} 


0