récupérer les valeurs formulaire (array)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : récupérer les valeurs formulaire (array)

par Invité » 25 juin 2009, 17:01

merci sa fonctionne pour le moment
javai trouvé une autre méthode avec foreach juste avan ton post mais ta méthode semble plus apte a me satisfaire

bonne journée

par Ryle » 25 juin 2009, 16:16

Le fait de spécifier les crochets dans le nom du champ (name="champ[]") va permettre à php de générer un tableau de valeurs à partir des données envoyées.

Ainsi, $_POST['champ'] ne sera plus une chaine de caractères, mais un tableau, contenant dans l'ordre, chacune des valeurs saisies par l'utilisateur pour ces champs.

Tu dois donc modifier ton code afin de boucler sur les éléments du tableau et les traiter un par un. Dans ton cas, les éléments étant liés entre tes différents tableaux (le premier "age" correspond au premier "sex", le deuxième au deuxième, etc.) tu peux faire une simple boucle for() et intérroger chacun de tes tableaux :
if (!empty($_POST["id"])) {
  for ($i=0 ; $i < count(_POST["id"]) ; $i++ ) { // pour chaque "lignes"
    $id = addslashes($_POST["id"][$i]); // récupère l'id
    $age = addslashes($_POST["age"][$i]); // l'age
    $sex = addslashes($_POST["sex"][$i]); // le sexe
    ...
    // ... et génère une requête pour insérer les données
    $query2 = "INSERT INTO $table2(NomFichierSource,id,age,sex,etude,occupation,statut_francais,app_regionale,local)"; 
    $query2 .= "VALUES('$NomFichierSource','$id','$age','$sex','$etude','$occupation','$statut_francais','$app_regionale','$local')"; 
    $result2 = mysql_query($query2); 
  }
}

récupérer les valeurs formulaire (array)

par knebhi » 25 juin 2009, 12:51

Bonjour,

j'ai réalisé un formulaire où je peux ajouter des champs en cliquant sur un bouton via javascript.

j'ai une catégorie de champ qui représente le locuteur1 et qui regroupe l'age, le sexe, ect...

je peux ajouter automatiquement le nombre de locuteur que je souhaite en plus (locuteur2, locuteur3 , etc.)

mon problème se situe au niveau de la récupération des données.

je désire stocké ces données dans une table nommée 'locuteurs'

en fait pour chaque locuteurs je voudrai une nouvelle ligne dans ma bdd or actuellement je n'arrive à récupérer qu'un locuteur.


voici une partie de mon formulaire
form.html

Code : Tout sélectionner

<tbody id="loc"> <tr> <td align="center"><b><i>Informations sur les locuteurs</i></b></td> <td bgcolor="#006699"></td> </tr> <tr> <td><b><i>Locuteur 1</i></b></td> <td bgcolor="#006699"></td> </tr> <tr> <td>Identifiant :</td> <td><input type="text" size="50" name="id[]" onKeyUp="javascript:couleur(this);"></td> </tr> <tr> <td>Age :</td> <td><input type="text" size="50" name="age[]" onKeyUp="javascript:couleur(this);" onblur="verifAge(this)"></td> </tr> <tr> <td>Sexe :</td> <td><input type="radio" name="sex[]" value="M" />Masculin <input type="radio" name="sex[]" value="F" />Féminin</td> </tr> </tbody> <tr> <td><input value="Ajouter un locuteur" id="idBouton" type="button" onclick="AddRow();" /></td> </tr>
une partie du code php qui insert les données récupéré

insert.php
$NomFichierSource =addslashes($_POST["NomFichierSource"]);
 
 
$id=""; if(!empty($_POST["id"]))
$id=addslashes($_POST["id"]);
 
$age=""; if(!empty($_POST["age"]))
$age=addslashes($_POST["age"]);
 
$sex=""; if(!empty($_POST["sex"]))
$sex=addslashes($_POST["sex"]);
 
$etude=""; if(!empty($_POST["etude"]))
$etude=addslashes($_POST["etude"]);
 
$occupation=""; if(!empty($_POST["occupation"]))
$occupation=addslashes($_POST["occupation"]);
 
$statut_francais=""; if(!empty($_POST["statut_francais"]))
$statut_francais=addslashes($_POST["statut_francais"]);
 
$app_regionale=""; if(!empty($_POST["app_regionale"]))
$app_regionale=addslashes($_POST["app_regionale"]);
 
$local=""; if(!empty($_POST["local"]))
$local=addslashes($_POST["local"]);
 
if($NomFichierSource) {
 
 
$query2 = "INSERT INTO $table2(NomFichierSource,id,age,sex,etude,occupation,statut_francais,app_regionale,local)";
	$query2 .= "VALUES('$NomFichierSource','$id','$age','$sex','$etude','$occupation','$statut_francais','$app_regionale','$local')";
	$result2 = mysql_query($query2);
 }
 

enfin le code javascript qui crée automatique les nouveaux locuteurs

test.js

Code : Tout sélectionner

var num = 1; //AJOUT LOCUTEUR function AddRow(){ num++; var newRow = document.getElementById('loc').insertRow(-1); var newCell = newRow.insertCell(0); newCell.innerHTML = '<b><i>'+'Locuteur'+num+'</i></b>'; newCell = newRow.insertCell(1); newCell.innerHTML = ''; var newRow1 = document.getElementById('loc').insertRow(-1); var newCell1 = newRow1.insertCell(0); newCell1.innerHTML = 'Identifiant : '; newCell1 = newRow1.insertCell(1); newCell1.innerHTML = '<input type="text" size="50" name="id" onKeyUp="javascript:couleur(this);">'; var newRow2 = document.getElementById('loc').insertRow(-1); var newCell2 = newRow2.insertCell(0); newCell2.innerHTML = 'Age : '; newCell2 = newRow2.insertCell(1); newCell2.innerHTML = '<input type="text" size="50" name="age" onKeyUp="javascript:couleur(this);" onblur="verifAge(this)">'; var newRow3 = document.getElementById('loc').insertRow(-1); var newCell3 = newRow3.insertCell(0); newCell3.innerHTML = 'Sexe : '; newCell3 = newRow3.insertCell(1); newCell3.innerHTML = '<input type="radio" name="sex" value="M" />Masculin <input type="radio" name="sex" value="F" />Féminin'; }
je voudrai qu'a chaque locuteur créé une nouvelle ligne puisse se créer dans ma bdd.
j'ai bien spécifier dans le code html name="champ[]" mais je n'arrive pas à parcourir le tableau pour insérer les valeurs dans ma bdd


merci