Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1403 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Aide sur les variables($) variables(adj)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide sur les variables($) variables(adj)

n°1222887
protoss_tt​h
May the Code be with you
Posté le 14-10-2005 à 11:06:33  profilanswer
 

Salut,
 
 
[b]Pb:Afin de nettoyer mon code, j'essayes désespérement de réaliser des variables variables.
Utilisation: C'est pour un formulaire qui contient plusieurs champs de même nature que je veux sauvegarder dans une Base.
NB: j'arrive à le faire en tapant pour chaque <input type=text name=reponse_a>,reponse_b,c,d...etc. ma requête SQL mais je voudrais générer les noms des INPUT afin de tout mettre dans une boucle en 15 lignes de code au lieu de tout marquer puisque tout se ressemble
 
Voilà mon code:

Code :
  1. //genère les noms des variables a,b,c,d...à partir du code ASCII
  2. //ici pour simplifier, seulement une variable
  3. for($i=97;$i<98;$i++)
  4.     {
  5.     //pour simplifier: admettons que mon  <INPUT type=text name=reponse_a>, renvoie ce texte:
  6.     $reponse_a="test";
  7.     //le code ASCII pour la lettre 'a'
  8.     $a="&#$i";
  9.     //je crée ma variable $b en fonction de $a
  10.    $b='$reponse_'.$a.'';
  11.    
  12.     //Requête SQL
  13.     //Sauvegarde dans la base                                                                                                                                                                                                     
  14.    $sauver_reponse="INSERT INTO a000_questions (ID,ID_THEME,ID_AGEGROUP,ID_SEMESTER,ID_MAIN_QUESTION,ORDER_NUM,WORDING,POINTS,ID_QUESTION_TYPE,PROP_NUM,ASK_NUM,MALUS_POINTS,AUTHOR,NOTES,DATE) VALUES ('','','','','','','$b','','','','','','','','')";
  15.    
  16.     //affichage de la requête (pour regarder ce qu'il se passe)
  17.     $out.="$sauver_reponse <BR> ";
  18.     //exécution de la requête
  19.    $result = mysql_query($sauver_reponse) or die(mysql_error());
  20.     }
  21. echo $out;


 
à l'affichage de la requête on pense que tout va bien:
(ID,ID_THEME,ID_AGEGROUP,ID_SEMESTER,ID_MAIN_QUESTION,ORDER_NUM,WORDING,POINTS,ID_QUESTION_TYPE,PROP_NUM,ASK_NUM,MALUS_POINTS,AUTHOR,NOTES,DATE) VALUES ('','','','','','','$reponse_a','','','','','','','','')
 
seulement dans la base de donnée le code enregistre: "reponse_&#97" au lieu de "test"
 
Question: Comment faire pour enregistrer la valeur du champ au lieu du nom de la variable?
L'aide de php précise l'utilisation d'accolades mais les combinaisons que j'ai essayé ne donnent rien, les noms de variables disparaissent même!
De l'aide SVP.


Message édité par protoss_tth le 14-10-2005 à 11:14:28
mood
Publicité
Posté le 14-10-2005 à 11:06:33  profilanswer
 

n°1222899
flo850
moi je
Posté le 14-10-2005 à 11:11:55  profilanswer
 

le contenu de la variable $b est $reponse_a  
donc la valeur de $reponse_a est dans $$b  ( honnetement, je trouve ca moche, mais c'est legal )  
 
tu peux aussi faire $b = ${"reponse_".$a} auquel cas $b = test


---------------

n°1222935
shakpana
des fois, j'me demande ...
Posté le 14-10-2005 à 11:23:51  profilanswer
 

donc si j'ai bien compris tu veux connaitre la valeur de la variable (comme d'hab) mais aussi le nom de la variable (i.e. le nom de l'input du formulaire) ?
Comme php peux générer automatiquement un tableau en fonction des paramètres postés
pourquoi tu fais pas un truc du genre :

Code :
  1. <input type="hidden" name="reponses[0][name]" value="reponse0">
  2. <input type="text" name="reponses[0][value]">
  3. <input type="hidden" name="reponses[1][name]" value="reponse1">
  4. <input type="text" name="reponses[1][value]">

auquel cas tu auras un tableau  

Code :
  1. print_r($_POST['reponses']);
  2. /*
  3. Array (
  4.   [0] => Array (
  5.       [name] => reponse0
  6.       [value] => foo
  7.   )
  8.   [1] => Array (
  9.       [name] => reponse1
  10.       [value] => bar
  11.   )
  12. )
  13. */


 
edit : mouais, ou plus simple

Code :
  1. <input type="text" name="reponses[reponse1]">


auquel cas tu auras un tableau  

Code :
  1. Array (
  2.   [reponse1] => foo
  3. )


Message édité par shakpana le 14-10-2005 à 11:29:04
n°1222992
protoss_tt​h
May the Code be with you
Posté le 14-10-2005 à 11:53:48  profilanswer
 

flo850: oui c'est dans cette direction que je recherche la solution.
seulement $b ne me livre rien...
j'ai essayé aussi en remplaçant également $a="&#$i;"; par  $a=${"&#".$i.";"};
rien ne s'affiche ni à l'ecran ni dans la base.
 
shakpana: je connais le nom de la variable puisque je la crée, sa valeur également puisque je la tape dans le champ. Je veux l'enregistrer dans la base de données au moyen d'une boucle qui me génèrera les noms de variables sans taper pour chaque réponse mes requêtes SQL.
la modification de la déclaration de mes champs pour avoir un array serait peut-être une solution mais je voudrais faire ca avec proprement avec des variables.

n°1223003
flo850
moi je
Posté le 14-10-2005 à 11:57:40  profilanswer
 

tu as fait afficher $$b  ? ( ie le contenu de la variable representée par $b ) ?
 
edit : et la solution de shakpana me semble plus propre et plus lisible


Message édité par flo850 le 14-10-2005 à 11:58:22

---------------

n°1223022
protoss_tt​h
May the Code be with you
Posté le 14-10-2005 à 12:14:08  profilanswer
 

oui, avec $$b il m'affiche "$" et avec $b rien du tout

n°1223043
protoss_tt​h
May the Code be with you
Posté le 14-10-2005 à 12:43:29  profilanswer
 

Ouais bon quitte à travailler avec des Array autant le faire avec $http_post_vars['reponse_a'] je vais voir ce que ca donne
EDIT:
voilà j'ai changé l'approche et j'essaye d'une autre façon:

Code :
  1. <?php
  2. $out .="<FORM action=\"" .$_SERVER['PHP_SELF']. "\" method=\"POST\" enctype=\"text/html\" >
  3.                                             <TABLE border=\"1\">
  4.                                                 <TR><TD>a.</TD><TD valign=\"top\"><!-- reponse_a --> <input type=\"text\" name=\"reponse_a\" size=\"20\" value=\"" .$_POST['reponse_a']. "\"/></TD></TR>
  5.                                                 <INPUT TYPE=\"Submit\" Name=\"sauver\" value=\"sauver\"/>
  6.                                             </TABLE>
  7.     </FORM>";
  8. //en cliquant sur le bouton
  9. if(isset($_REQUEST["sauver"]))
  10. {
  11. for($fin='a'; $fin<'b'; $fin++)
  12. {
  13. //affiche ce qui est enregistré dans le champ 'reponse_'.$fin, en l'occurence le champ "reponse_a"
  14. echo "-- <BR>";
  15. echo $http_vars['reponse_'.$fin];
  16. echo "-- <BR>";
  17. //requete SQL
  18. $reponse_sauver="INSERT INTO a000_questions (ID,ID_THEME,ID_AGEGROUP,ID_SEMESTER,ID_MAIN_QUESTION,ORDER_NUM,WORDING,POINTS,ID_QUESTION_TYPE,PROP_NUM,ASK_NUM,MALUS_POINTS,AUTHOR,NOTES,DATE) VALUES ('','','','','','','".$http_post_vars['reponse_'.$fin]."','','','','','','','','')";
  19. $out.="$reponse_sauver <BR> ";
  20. $result = mysql_query($reponse_sauver) or die(mysql_error());
  21. }
  22. }
  23. echo $out;
  24. ?>


 
Déjà ca m'aiderais énormemément si quelqu'un arrivait à faire marcher cette ligne afin d'afficher la valeur du champ à l'ecran:

Code :
  1. for($fin='a'; $fin<'b'; $fin++)
  2. {
  3. echo $http_vars['reponse_'.$fin];
  4. }


 
Tous posts bienvenus. merci.

Message cité 2 fois
Message édité par protoss_tth le 14-10-2005 à 14:08:28
n°1223149
shakpana
des fois, j'me demande ...
Posté le 14-10-2005 à 14:24:14  profilanswer
 

protoss_tth a écrit :

la modification de la déclaration de mes champs pour avoir un array serait peut-être une solution mais je voudrais faire ca avec proprement avec des variables.


mouais, enfin en quoi n'est-ce pas propre ???
après tout, c'est ton code ...

protoss_tth a écrit :


Ouais bon quitte à travailler avec des Array autant le faire avec $http_post_vars['reponse_a'] je vais voir ce que ca donne


[:pingouino]

n°1223174
flo850
moi je
Posté le 14-10-2005 à 14:47:36  profilanswer
 

protoss_tth a écrit :


Déjà ca m'aiderais énormemément si quelqu'un arrivait à faire marcher cette ligne afin d'afficher la valeur du champ à l'ecran:

Code :
  1. for($fin='a'; $fin<'b'; $fin++)
  2. {
  3. echo $http_vars['reponse_'.$fin];
  4. }




 
 
foreach($_POST as $cle => $valeur ){
    if(strpos($cle,"eponse_" ) == 1)
         echo "$cle => $valeur<br>";
}
 
et c'est pas tres joli


---------------

n°1224398
protoss_tt​h
May the Code be with you
Posté le 17-10-2005 à 12:45:15  profilanswer
 

Citation :

[:pingouino]


les champs d'un formulaire sont stockés dans un array lorsqu'ils sont envoyés, et accessibles au moyen de $http_post_vars['nom du champ'], il est donc inutile de définir un array pour chaque nom de champs...
 
le probleme c'est que je n'arrive pas à executer cette commande en générant les noms de champs (rappel:qui ne diffèrent que par la dernière lettre a,b,c,d...etc..).
 
Cela m'aurait permis d'enregistrer tous les champs dans la base de données en 5 lignes au moyen d'une seule boucle contenant ma requête SQL, qui se serait "auto-générée". Mais bon, si ça veut pas... c'est pas dramatique.
 
En tous cas merci à vous deux pour vos propositions.


Message édité par protoss_tth le 17-10-2005 à 12:47:51
mood
Publicité
Posté le 17-10-2005 à 12:45:15  profilanswer
 

n°1224434
sielfried
Posté le 17-10-2005 à 13:21:39  profilanswer
 

Déjà c'est plus $HTTP_POST_VARS mais $_POST.
 
Et c'est quoi ce $http_vars là ? [:mlc]

n°1225691
DjMerguez
Posté le 18-10-2005 à 19:38:31  profilanswer
 

protoss_tth a écrit :

Déjà ca m'aiderais énormemément si quelqu'un arrivait à faire marcher cette ligne afin d'afficher la valeur du champ à l'ecran:

Code :
  1. for($fin='a'; $fin<'b'; $fin++)
  2. {
  3. echo $http_vars['reponse_'.$fin];
  4. }


 
Tous posts bienvenus. merci.


 
Tu peux utiliser les fonctions ord et chr :
 

Code :
  1. for($code_ascii = ord('a'); $code_ascii < ord('z'); $code_ascii++) {
  2.   echo $_POST['reponse_' . chr($code_ascii)];
  3. }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Aide sur les variables($) variables(adj)

 

Sujets relatifs
[AIDE PHP] manque une ou 2 commandes sur mon script...[VISUAL] ajouter une aide dans le dynamic help
récupérer dans mon code des variables depuis le config.ac[AIDE] phpnuke
>>>besoin d'aide pour un site photo<<<aide boutique en ligne
Besoin d'aide avec les Variables d'Environnement en VBScript( AIDE ) Problème de variables
[MySQL] Besoin d'aide sur les types de Variables[XSLT] aide précise SVP! variables etc...
Plus de sujets relatifs à : Aide sur les variables($) variables(adj)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR