Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
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 01/08/2007, 14h56   #1
Invité régulier
 
Inscription : juillet 2007
Messages : 23
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 23
Points : 5
Points : 5
Par défaut [PHP-JS] récupération de plusieurs champs texte ayant un nom "propre"

bonjour à tous,
alors essayons d'être concis et précis:
dans mon formulaire:

je créé plusieurs champs texte en javascript via un bouton "ajouter un champ", ses champs ont un nom qui leur est propre :

ch.setAttribute('name','mes_ch[]');

dans mon pgm:

je veux récupérer les textes entrés dans les champs :

$result = $_POST['mes_ch'];
foreach($result as $text)
{
if $text =..........
}

mais j'ai une erreur, il ne connait pas mes_ch...
et la je bloque depuis un moment et la patience n'est pas ma plus grande qualité...!
merci
Dodielapatate est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 15h06   #2
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
Citation:
Envoyé par Dodielapatate
ch.setAttribute('name','mes_ch[]');
T'es sûr que c'est ça ?

Citation:
Envoyé par Dodielapatate
mais j'ai une erreur, il ne connait pas mes_ch...
Tu peux être plus précis ? Y a un message d'erreur ? Il ne rentre pas dans la boucle ? etc.


Tu peux tester 2 trucs :
1. Poster ton formulaire en GET (si c'est possible) et nous indiquer l'URL que tu obtiens ? Tu dois avoir des ...&mes_ch[]=titi&mes_ch[]=toto&... pour que ton truc marche.
2. Faire un print_r($_POST) pour voir tout ce que contient la variable $_POST. Ca te permettra de voir s'il récupère des mes_ch.
__________________

Du détail, du détail, du détail !!!
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 15h11   #3
Invité régulier
 
Inscription : juillet 2007
Messages : 23
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 23
Points : 5
Points : 5
quand je fait un print_r($_POST['mes_ch']);
j'ai

Array ( [0] => aaa )
Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\pgm\donnees_demande.php on line 41

PS:je peux être plus précisE
Dodielapatate est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 15h47   #4
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,

Si tu crée plusieurs champ texte et que tu lis la source de ta page (clic droit - afficher la source), quels sont les noms de tes champs ?

A ta place je me debrouillerais pour que le nom du champ texte en javascript soit un truc du style champ_texte_1 champ_texte_2 champ_texte_3
Ensuite je stockes dans une variable en champ caché (hidden) le nombre de champ texte que j'ai.

Ensuite je fais une boucle du style de 0 a mon_nombre_de_champ ($mnc)
Code :
1
2
3
4
5
6
7
 
for ($x=0;$x<$_POST['mnc'];$x++) {
 
      if ($_POST['champ_texte_'.$x]) {
      echo 'Champ texte ' . $x . ' a renvoyé : ' . $_POST['champ_texte_'.$x];
      }
}

Il n'y a que les boites de selection avec l'attribue multiple et les boites d'options qui renvoient des tableaux...

@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 15h52   #5
Invité régulier
 
Inscription : juillet 2007
Messages : 23
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 23
Points : 5
Points : 5
alors j'ai trouvé ça et ça fonctionne :

Code :
1
2
foreach($_POST['mes_ch'] as $champ)
{$a = $a.$champ." ";}
je récupère mes champs les uns à la suite des autre, ce qu'il me faut.

mon nouveau soucis est de sauter cette étape si un champ supérieur (name="req" ici) est vide :

Code :
1
2
3
4
5
6
7
8
9
10
if ($_POST['req'] != "")
{
foreach($_POST['mes_ch'] as $champ)
	{$a = $a.$champ." ";}
}
else
{
foreach ($_POST['requete'] as $selecreq)
	{$b = $b.$selecreq." ";}
}
mais il cherche quand meme les données dans mes_ch et me met donc une erreur :
Invalid argument supplied for foreach()
Dodielapatate est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 15h55   #6
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Et ceci ne serait t-il pas meilleur ?

Code :
1
2
3
 
 
if ($_POST['req'])
Ce qui teste si la variable req existe, alors que ce que tu teste c'est si la variable req n'est pas egale a ""

Sinon ceci :
Code :
1
2
3
 
 
if ($_POST['req'] > 1)
Ce qui ici teste si req contient plus de 1 caracteres

@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 16h01   #7
Invité régulier
 
Inscription : juillet 2007
Messages : 23
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 23
Points : 5
Points : 5
en fait j'ai un champ texte permanant (req) puis je peux ajouter des champs texte (mes_ch), ensuite j'ai une liste de choix obtenu via une BD.
Je voudrai ignorer le foreach pour mes_ch si aucun champs n'a été ajouté dans mon formulaire.
Dodielapatate est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 16h06   #8
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
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 686
Points : 5 451
Points : 5 451
Je vais peut-être poser une question débile, mais pourquoi ne pas tester si $_POST['mes-ch'] existe ?

Code :
1
2
3
4
5
if (!empty($_POST['mes_ch'])
{
  foreach($_POST['mes_ch'] as $champ)
   {$a = $a.$champ." ";}
}
__________________
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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2007, 16h28   #9
Invité régulier
 
Inscription : juillet 2007
Messages : 23
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 23
Points : 5
Points : 5
ce n'est pas bête du tout vu que ça m'a débloqué!!!
donc voici le pgm, pour personne ne galère comme je viens de la faire!!!

dans le formulaire :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
<input name="req" type="text" size="51" maxlength="50">
<script type="text/javascript">
var c,c2;
function plus(){
c=document.getElementById('req1');
c2=c.getElementsByTagName('input');
var ch=document.createElement('input');
ch.setAttribute('type','text');
ch.setAttribute('name','mes_ch[]');
c.appendChild(ch);
document.getElementById('sup').style.display='inline';
}
</script>
<div id="req1" style="margin-left;width:200px"></div>
<input type="button" value="ajouter une requête" onclick="plus()">
?>
dans le pgm :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
<?php
$a = "";
$b = "";
$c = "";
$concatreq = "";
//si que choix parmis la liste proposée
if ($_POST['req'] == "")
{
foreach ($_POST['requete'] as $selecreq)
	{$concatreq = $concatreq.$selecreq." ";}
}
//si écriture d'une requête
else
{	
//récupération de la 1ère requête écrite ($a)
$a = $_POST['req'];
//si ajout de champs
if (!empty($_POST['mes_ch']))
{
//récupération des recuête ajoutées ($b)
foreach($_POST['mes_ch'] as $champ)
{$b = $b.$champ." ";}
}
//si choix dans la liste proposée ($c)
if ($_POST['requete'] != "")
{
foreach ($_POST['requete'] as $selecreq)
{$c = $c.$selecreq." ";}
}
$concatreq = $a." ".$b." ".$c." ";
}
echo $concatreq;
?>
merci à tous!!!
Dodielapatate 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 04h06.


 
 
 
 
Partenaires

Hébergement Web