Comment modifier la valeur de plusieurs input en php?

tryan

WRInaute passionné
Bonjour,

Je sèche sur la façon de procéder pour enregistrer en bd la valeur de plusieurs "input". En gros, je récupère la valeur d'un id qui correspond à une sous catégorie (ici sous_categorie_du_lien). Dans cette exemple, je veux modifier les valeurs du champ date_de_creation_du_lien correspondant à l'id transmit se trouvant dans le champ sous_categorie_du_lien.

---------Table LIEN_DU_SITE---------------------
id---sous_categorie_du_lien---titre_du_lien---date_de_creation_du_lien
-1--------1---------------------------titre 1-----------------------3------------
-2--------2---------------------------titre 2-----------------------0------------
-3--------1---------------------------titre 3-----------------------7------------
-4--------1---------------------------titre 4-----------------------5------------

Code:
<?php
//On récupère l'id qui correspond à sous_categorie_du_lien
$nom_id_transmit=$_GET["id"];

echo '<form action="classement.php" method="post"><fieldset><legend>Modification</legend>';

include("data_bd.php");

mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier data_bd.php.');

 $query = mysql_query("SELECT id, sous_categorie_du_lien , titre_du_lien, date_de_creation_du_lien FROM LIEN_DU_SITE WHERE sous_categorie_du_lien =$nom_id_transmit ORDER BY date_de_creation_du_lien ASC");

 while($teste = mysql_fetch_array($query))
 {
   echo ''.$teste[titre_du_lien].' : <input type="text"  name="'.$teste[id].'" size="20" value="'.$teste[date_de_creation_du_lien].'"/><br/>';
 }
 mysql_close();
 ?>
 <input name="Valider" value="Valider" type="submit">
</fieldset>
</form>
Jusque la, pas de soucis ... tout s'affiche comme je le souhaite.
La ou sa se gate, c'est pour récupérer les valeurs de chaque formulaire (input), soit la valeur name="***" et value="***" :?:
Forcément, je ne peux pas faire un simple $nom_du_formulaire = $_POST["??????"];
J'ai bien essayé en modifiant name="'.$teste[id].'" par name="delete[]" puis ensuite un:
Code:
foreach ($delete as $valeur){
echo ''.$valeur.'<br/>';
}
...mais sans "identifiant" pour associer $valeur à un id de ma table, je ne peux rien faire !
Un petit coup de main ne serait pas de refus svp
Merci
 

forty

WRInaute passionné
j'ai pas tout compris.
La solution est peut être dans l'utilisation des tableaux :
Code:
echo ''.$teste[titre_du_lien].' : <input type="text"  name="valeurs['.$teste[id].']" size="20" value="'.$teste[date_de_creation_du_lien].'"/><br/>';
tu parcours ensuite tes valeurs avec un :
Code:
foreach($_POST['valeurs'] as $id =>$valeur) {
    ...
}
 

tryan

WRInaute passionné
Salut,
Dabord .. harffff ^^.
En gros, si je fais dans une boucle:
Code:
echo '<input type="text"  name="delete[]" size="20" value="'.$teste[date_de_creation_du_lien].'"/><br/>';
Je me retrouve avec plusieurs fois le même name pour différents input.
En gros sa donne sa comme résultat:
Code:
<input type="text"  name="delete[]" size="20" value="1"/><br/>
<input type="text"  name="delete[]" size="20" value="2"/><br/>
<input type="text"  name="delete[]" size="20" value="3"/><br/>
Donc, d'un côté je peux récupérer les valeurs (value="1",value="2",value="3") mais d'un autre, je ne peux pas les associer à un id ou nom pour ensuite faire un UPDATE en bd.

Tu me suis??

De même, si je fais dans une boucle :
Code:
echo '<input type="text"  name="'.$teste[id].'" size="20" value="'.$teste[date_de_creation_du_lien].'"/><br/>';
Qui me donne comme résultat:
Code:
<input type="text"  name="1" size="20" value="1"/><br/>
<input type="text"  name="2" size="20" value="2"/><br/>
<input type="text"  name="3" size="20" value="3"/><br/>
Il m'est impossible de faire:
Code:
$nom_du_formulaire1 = $_POST["1"];
$nom_du_formulaire2 = $_POST["2"];
$nom_du_formulaire3 = $_POST["3"];
..puisque mes différents champs de formulaire sont générés dynamiquement ...

Tu me suis toujours ??
 

zeb

WRInaute accro
Code:
			foreach (array_keys(get_defined_vars()) as $key => $value){
				if(is_array(${$value}) && $value=='_POST'){
					foreach(${$value} as $keytab => $valuetab){
					}
				}
			}
essaie de faire un echo de $keytab et $valuetab dans ce code tu devrais voir toutes tes POST s'afficher avec leur valeur.
 

tryan

WRInaute passionné
forty : sans succès. J'ai le droit à une page blanche quand je fais :
Code:
echo ''.$teste[titre_du_lien].' : <input type="text"  name="valeurs['.$teste[id].']" size="20" value="'.$teste[date_de_creation_du_lien].'"/><br/>';
Puis :
Code:
foreach($_POST['valeurs'] as $id =>$valeur) {
    ...
}
En faisant un echo sur $id ou sur $valeur ou sur $_POST['valeurs'], il n'y a rien.

zeb : Je ne comprend absolument pas ton code ^^ni comment "l'implanter" correctement. J'ai donc fais :
Code:
echo ''.$teste[titre_du_lien].' : <input type="text"  name="valeurs['.$teste[id].']" size="20" value="'.$teste[date_de_creation_du_lien].'"/><br/>';
Suivit de :
Code:
foreach (array_keys(get_defined_vars()) as $key => $value){
            if(is_array(${$value}) && $value=='_POST'){
               foreach(${$value} as $keytab => $valuetab){
			   echo $keytab; 
			   echo $valuetab;
               }
            }
         }
Et il me ressort :
valeurArrayValiderValider
Je précise que dans mon teste, mon "input" contenue dans ma boucle me sort 6 résultats (ce qui est ok).

Pour ne pas vous induire en erreur sur mes explications, le résultat de ma boucle donne cela:
Pour ma boucle:
Code:
echo '<input type="text" name="valeur['.$teste[id].']" value="'.$teste[date_de_creation_du_lien].'" id="'.$teste[id].'"/>'.$teste[titre_du_lien].'<br/>';
Résultat :
Code:
...
<input type="text" name="valeur[1]" value="0" id="1"/>blabla<br/>
<input type="text" name="valeur[3]" value="0" id="3"/>blabla<br/>
<input type="text" name="valeur[4]" value="0" id="4"/>blabla<br/>
<input type="text" name="valeur[5]" value="0" id="5"/>blabla<br/>
<input type="text" name="valeur[58]" value="0" id="58"/>blabla<br/>
<input type="text" name="valeur[60]" value="0" id="60"/>blabla<br/>
...
Merci de vos réponses :mrgreen:
 

zeb

WRInaute accro
essaie ça sur une page de test ça va t'aider :

Code:
<?php
	if(isset($_POST['Bouton_Valider'])){
		foreach (array_keys(get_defined_vars()) as $key => $value){
	       if(is_array(${$value}) && $value=='_POST'){
	          foreach(${$value} as $keytab => $valuetab){
	       		echo $keytab." -> ".$valuetab."<br/>\n";
	          }
	       }
	    }
	}
?>
<form action="" method="post">
<fieldset>
<legend>Modification</legend>
<input type="text" name="input_1" value="0" id="1"/> bla bla<br/>
<input type="text" name="input_3" value="10" id="3"/> bla bla<br/>
<input type="text" name="input_4" value="20" id="4"/> bla bla<br/>
<input type="text" name="input_5" value="30" id="5"/> bla bla<br/>
<input type="text" name="input_6" value="40" id="6"/> bla bla<br/>
<input type="text" name="input_7" value="50" id="7"/> bla bla<br/>
<input name="Bouton_Valider" value="Valider" type="submit">
</fieldset>
</form>
 

Discussions similaires

Haut