Méthode de récupération de plusieurs valeurs en fonctions du

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 : Méthode de récupération de plusieurs valeurs en fonctions du

Re: Méthode de récupération de plusieurs valeurs en fonction

par dayou05 » 28 févr. 2015, 01:56

Merci d'avoir répondu !
Alors si je comprend bien mes inputs je met deux crochets [] comme suit pour faire un tableau donc, jusqu'ici tout va bien.
<tr class="headingTr" id="headingTr">
 <td><center>&nbsp;Index du capteur&nbsp;</center></td> 
<td><center>&nbsp;Nom du capteur&nbsp;</center></td> 
<td><center>&nbsp;Identifiant du capteur&nbsp;</center></td> 
<td><center>&nbsp;Type du capteur&nbsp;</center></td> 
<td><center>&nbsp;Table correspondant au capteur&nbsp;</center></td>
    <td></td>
  </tr>


 <tr id="sformadd">
<td><center><input type="text" name="index[]" id="text" size="15" value=""  maxlength="20"></center> </td> 
<td><input type="text" name="nom[]" size="15" id="text0" value="" class="remplit" maxlength="20"><br></td> 
<td><input type="text" name="id[]" size="15" id="text1"  value="" class="remplit" maxlength="20"> </td> 
<td><input type="text"  size="15" name="type[]" id="text2" value="" class="remplit" maxlength="20"><br></td> 
<td><input type="text" name="table[]" size="15" id="text3" value="" class="remplit" maxlength="20"> </td> 
</tr>
Le début de mon code PHP est donc bon si je me réfère à l’exemple de votre tuto ?
Ce que je ne comprend c'est l'emploies du foreach dans son éxemple :/ qui pourrait très bien s'appliquer au miens.
<?php foreach($BX_NAME as $a => $b){ ?>
	<tr>
	<p>
		<td>
			<?php echo $a+1; ?>
		</td>
		<td>
			<label>Name</label>
			<input type="text" readonly="readonly" name="BX_NAME[$a]" value="<?php echo $BX_NAME[$a]; ?>">
		</td>
		<td>
			<label for="BX_age">Age</label>
			<input type="text" readonly="readonly" class="small"  name="BX_age[]" value="<?php echo $BX_age[$a]; ?>">
		</td>
		<td>
			<label for="BX_gender">Gender</label>
			<input type="text" readonly="readonly" name="BX_gender[]" value="<?php echo $BX_gender[$a]; ?>">
		</td>
		<td>
			<label for="BX_birth">Berth Pre</label>
			<input type="text" readonly="readonly" name="BX_birth[]" value="<?php echo $BX_birth[$a]; ?>">
		</td>
	</p>
	</tr>
<?php } ?>
Par éxemple sa pourrait donner quoi ? Car j'en est essayer plusieurs mais sans succès ...
Merci !

Re: Méthode de récupération de plusieurs valeurs en fonction

par @rthur » 28 févr. 2015, 01:31

Bonjour,

En fait dans un formulaire tu ne doit pas avoir 2 champs qui ont le même name car sinon ça pose problème pour leur récupération, ce qui est ton cas en ajoutant à la volée des champs : nom, type, etc...

La solution est de rajouter des crochets à la fin du nom du champ afin que PHP récupère non pas une seule valeur mais un tableau des valeurs rentrées.


Un bon tuto en anglais sur le sujet dont tu pourras t'inspirer du code :
http://techstream.org/Web-Development/P ... g-with-PHP

Méthode de récupération de plusieurs valeurs en fonctions du

par dayou05 » 28 févr. 2015, 01:06

Bien le bonjours/bonsoir à tous !
Alors je m'explique, j'ai un tableau comme suit :
Sans titre.png

L'ors ce que je clique sur le "+" du deuxième tableau, une nouvelle ligne s'ajoute avec 5 inputs, que j'ai encadrés en rouge allant de la droite vers la gauche, je précise que cela s'effectue grâce à un code Jquery.
Le but étant donc de récupérer les valeurs de touts ces inputs et ensuite d'insérer les valeurs dans la base de données.

J'arrive à faire cela avec la toute première ligne qui est toujours présente par défaut.
Or si l'utilisateur décide de rajouter 4 ligne supplémentaires ( par éxemple) il fraudrais récupérer les données non seulement de la première ligne mais aussi des 4 autres, et s'il en ajoute 6, même opération etc...

Je n'est absolument aucune idées de comment faire ceci, je vous met mon bout de code avec le quelle je récupère les valeurs de la première ligne et les insères dans la BDD :
Je suis plutôt débutant en PHP et il est vrai qu’après 3 jours de recherche j'en vient a bout !
<?php
if( (!empty($_POST['nom'])) && (!empty($_POST['id'])) && (!empty($_POST['type'])) && (!empty($_POST['table']))  ){



// On commence par récupérer les champs 
if(isset($_POST['index'])) $index=$_POST['index'];
else    $index=""; 

if(isset($_POST['nom']))      $nom=$_POST['nom']; 
else      $nom="nom";

if(isset($_POST['id']))      $id=$_POST['id']; 
else     $id="id";

if(isset($_POST['type']))     $type=$_POST['type']; 
else   $type="type";

if(isset($_POST['table']))     $table=$_POST['table']; 
else     $table="table";


// connexion
$mysql_user="admin";
$mysql_password="admin";
$reqco = mysql_connect("localhost",$mysql_user,$mysql_password) or die('Erreur de connexion '.mysql_error());

//sélection de la BDD
$reqse = mysql_select_db("tp_arexx",$reqco) or die('Erreur de connexion '.mysql_error());
     
    // on écrit la requête sql 
     $sql="INSERT INTO `tp_arexx_capteurs` (`Arexx_index`, `Arexx_Id`, `Arexx_Type`, `Arexx_Table`, `Arexx_Name`)
      VALUES('$_POST[index]','$_POST[id]','$_POST[type]','$_POST[table]','$_POST[nom]')";
     
    // on insère les informations du formulaire dans la table 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
	//sélection de la BDD
$reqse = mysql_select_db("tp_arexx",$reqco);

 $sql_query = "CREATE TABLE `$_POST[table]` ( `Arexx_index` BIGINT(4) AUTO_INCREMENT NOT NULL, `marqueur_temps` VARCHAR(16) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL, `mesure` VARCHAR(20) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
 `rssi` VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL, `jour` DATE NOT NULL, `heure` TIME NOT NULL, PRIMARY KEY (`Arexx_index`))";   // Requête 
      $result_query=mysql_query($sql_query);
	  mysql_query($sql_query);     // Exécution de la requête 
      $Erreur = mysql_error(); 

 } 
	  else {
	  }
?>
Un très grand merci à vous tous d'avance !
Bonne soirée/journée.