Comment modifier la valeur de plusieurs input en php?


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Comment modifier la valeur de plusieurs input en php?

Message le Mar Mar 17, 2009 14:19

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: Tout sélectionner
<?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: Tout sélectionner
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


antinomx
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 277
Inscription: 23 Aoû 2008

Re: Comment modifier la valeur de plusieurs input en php?

Message le Mar Mar 17, 2009 15:04

Salut,

J'ai rien pigé à ton problème... En quelques mots ya moyen ?


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: Comment modifier la valeur de plusieurs input en php?

Message le Mar Mar 17, 2009 15:19

j'ai pas tout compris.
La solution est peut être dans l'utilisation des tableaux :
Code: Tout sélectionner
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: Tout sélectionner
foreach($_POST['valeurs'] as $id =>$valeur) {
    ...
}


tryan
WRInaute passionné
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Comment modifier la valeur de plusieurs input en php?

Message le Mar Mar 17, 2009 15:33

Salut,
Dabord .. harffff ^^.
En gros, si je fais dans une boucle:
Code: Tout sélectionner
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: Tout sélectionner
<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: Tout sélectionner
echo '<input type="text"  name="'.$teste[id].'" size="20" value="'.$teste[date_de_creation_du_lien].'"/><br/>';

Qui me donne comme résultat:
Code: Tout sélectionner
<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: Tout sélectionner
$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
WRInaute accro
 
Messages: 4553
Inscription: 5 Déc 2004

Re: Comment modifier la valeur de plusieurs input en php?

Message le Mar Mar 17, 2009 15:58

Code: Tout sélectionner
         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é
WRInaute passionné
 
Messages: 2355
Inscription: 20 Fév 2005

Re: Comment modifier la valeur de plusieurs input en php?

Message le Mar Mar 17, 2009 16:30

forty : sans succès. J'ai le droit à une page blanche quand je fais :
Code: Tout sélectionner
echo ''.$teste[titre_du_lien].' : <input type="text"  name="valeurs['.$teste[id].']" size="20" value="'.$teste[date_de_creation_du_lien].'"/><br/>';

Puis :
Code: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
...
<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
WRInaute accro
 
Messages: 4553
Inscription: 5 Déc 2004

Re: Comment modifier la valeur de plusieurs input en php?

Message le Mer Mar 18, 2009 16:38

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

Code: Tout sélectionner
<?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>


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités