Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/11/2011, 22h22   #1
Invité de passage
 
Homme
Inscription : décembre 2006
Messages : 37
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2006
Messages : 37
Points : 2
Points : 2
Par défaut Récupérer valeurs de plusieurs SELECT généré

Bonsoir,

Je tourne en rond...

J'ai une page d'administration avec un tableau (xHTML) qui affiche plusieurs lignes que je génére via une boucle (while), voici le code d'une ligne :

Code :
1
2
3
4
5
6
7
<input type="hidden" id="nom[<?php print($i); ?>]" name="nom[<?php print($i); ?>]" value="<?php print($id_nom); ?>" />
<select id="niveau[<?php print($i); ?>]" name="niveau[<?php print($i); ?>]">
<option value="0"<?php if($niveau == 0){ print(' selected="selected"'); }?>>Pas de niveau</option>
<option value="1"<?php if($niveau == 1){ print(' selected="selected"'); }?>>Niveau 1</option>
<option value="2"<?php if($niveau == 2){ print(' selected="selected"'); }?>>Niveau 2</option>
<option value="3"<?php if($niveau == 3){ print(' selected="selected"'); }?>>Niveau 3</option>
</select>
La variable $i est incrémenté à chaque fin de boucle.

Ensuite, j'arrive à récupérer via un "foreach" mes variables "nom" mais je n'arrive pas à y faire correspondre la variable "niveau" qui lui correspond.

Je suis sûr que c'est simple, mais je tourne en rond... la fatigue surement...

Merci d'avance
RobertP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 00h00   #2
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 329
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 329
Points : 1 657
Points : 1 657
on peut voir le code du foreach ?
__________________
Zend Certified Engineer PHP 5.3

« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 08h25   #3
Invité de passage
 
Homme
Inscription : décembre 2006
Messages : 37
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2006
Messages : 37
Points : 2
Points : 2
J'ai juste fait un foreach $nom as $val qui me sort correctement les noms mais ensuite je n'arrive pas à sortir les niveaux associés... donc je n'ai pas de code pour ça... merci
RobertP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 08h37   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 793
Points : 35 793
C'est à dire ?
Tu veux qu'on devine à ta place ce que vaut $niveau ?
Essaye avec rand(0,4);
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 09h31   #5
Membre habitué
 
Avatar de rinuom99
 
Étudiant
Inscription : août 2007
Messages : 238
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 238
Points : 125
Points : 125
Envoyer un message via MSN à rinuom99
quel est le rapport entre le nom et le niveau ?

si se trouvent sur des tables différents une simple jointure fera l'affaire
__________________
Si tu peux voir détruit l'ouvrage de ta vie.
Et sans dire un seul mot te mettre à rebâtir,
Tu seras un Homme, mon fils.
rinuom99 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 12h32   #6
Invité de passage
 
Homme
Inscription : décembre 2006
Messages : 37
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2006
Messages : 37
Points : 2
Points : 2
J'ai dû mal expliquer mon problème, sur une première page j'affiche un tableau avec des lignes... chaque ligne contient un champ hidden "nom" et un select "niveau".

Mon problème est lors de l'envoi de ce formulaire à une autre page (qui doit traiter ces informations), j'arrive à récupérer tous les champs "nom" en faisant une boucle foreach mais je n'arrive pas à récupérer l'occurence du select "niveau".

Quelle boucle pouvez vous me conseilller ?

Merci par avance
RobertP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 13h22   #7
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

quand j'essaie ton code avec ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
   if ( ! empty($_POST)) {
      print_r($_POST);
   }
   $i = 25;
   $id_nom = 45896;
   $niveau = 2;
?>
 
<form action="shortTest.php" method="post">
   <input type="hidden" id="nom[<?php echo($i); ?>]" name="nom[<?php echo($i); ?>]" value="<?php echo($id_nom); ?>" />
   <select id="niveau[<?php echo($i); ?>]" name="niveau[<?php echo($i); ?>]">
      <option value="0"<?php if($niveau == 0){ echo(' selected="selected"'); }?>>Pas de niveau</option>
      <option value="1"<?php if($niveau == 1){ echo(' selected="selected"'); }?>>Niveau 1</option>
      <option value="2"<?php if($niveau == 2){ echo(' selected="selected"'); }?>>Niveau 2</option>
      <option value="3"<?php if($niveau == 3){ echo(' selected="selected"'); }?>>Niveau 3</option>
   </select>
   <input type="submit" value="Soumettre" />
</form>
Je récupère en POST ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Array
(
    [nom] => Array
        (
            [25] => 45896
        )
 
    [niveau] => Array
        (
            [25] => 2
        )
)
Donc le selected remonte bien vers le serveur.
Donc pas de problème à priori sauf peut-être ailleurs dans ton code...
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2011, 13h54   #8
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 663
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 663
Points : 5 388
Points : 5 388
Je te conseille de faire comme rawsrc : un print_r($_POST); sur la page de destination du formulaire, histoire de vérifier ce que tu as réellement à l'arrivée.

Et sinon pour la récupération, en supposant que tu boucles sur les noms et que tu veuilles le niveau pour chaque nom, tu peux utiliser la clé du tableau $_POST['nom'] pour retrouver le niveau :
Code :
1
2
3
4
5
6
7
foreach ($_POST['nom'] as $i => $nom_i) {
    $niveau_i = "";
    if (isset($_POST['niveau'][$i]) {
        $niveau_i = $_POST['niveau'][$i];
    }
    echo 'Nom : '.$nom_i.', Niveau : '.$niveau_i'.<br/>';
}
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2011, 21h37   #9
Invité de passage
 
Homme
Inscription : décembre 2006
Messages : 37
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2006
Messages : 37
Points : 2
Points : 2
Bonsoir,

Merci pour vos réponses, j'ai fait ceci et ça fonctionne :

Code :
1
2
3
4
5
6
	$niveau= $_POST['niveau'];
	$nom = $_POST['nom'];
	for ($i = 1; $i < count($_POST); $i++) {
		print "Nom : ".$nom[$i];
		print "Acces :".$niveau[$i];
	}
RobertP est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h14.


 
 
 
 
Partenaires

Hébergement Web