problème de vasriable

Eléphanteau du PHP | 37 Messages

30 mai 2006, 13:56

bon je suis pas débutant mais je post ici car c'est pas un truc compliqué
voila j'ai ce code
<?php
$order = $_post['order by'];
$query1 = 'select
s.study_key "study_key"
,s.study_num "study_num"
,s.protocol_num "protocol_num"
,s.other_num "OtherID"
,st.study_type "study_type"
,\'?\' "ProductLicense"
,decode(s.unblind_ok,1,\'Yes\',\'No\') "EligibleUnblinding"
,decode(s.encoding,1,\'Yes\',\'No\') "StudySpecificAutoEnc"
,s.study_desc "study_desc"
,ac.cond_name "InvestigatorAlert"
,s.blind_name "blind_name"
,d1.name "Drugs"
,d2.name "Indications"
,d3.name "EventTerms"
,decode(s.event_no_manual,1,\'Yes\',\'No\') "PreventManual"
,decode(s.event_closure,1,\'Yes\',\'No\') "RequireEvent"
from lm_studies s
,lm_study_types st
,cfg_adv_cond ac
,cfg_dictionaries d1
,cfg_dictionaries d2
,cfg_dictionaries d3
where s.study_type_id = st.study_type_id
and s.alert_ac_id = ac.ac_id (+)
and s.deleted is null
and st.deleted is null
and ac.deleted is null
and d1.deleted is null
and d2.deleted is null
and d3.deleted is null
and s.drug_dict= d1.dict_id (+)
and d1.usage (+) = 1
and s.event_dict = d2.dict_id (+)
and d2.usage (+) = 3
and s.indications_dict = d3.dict_id (+)
and d3.usage (+) = 2
order by';
$query=$query + $order;
echo '
<html>
<body>';
echo $query;
echo '<p> Use this querie? <form="post" action="essai2.php4">
<input type="" value =$query name ="query">
<input type=submit value="ok" name="querie">
</form>
</body>
</HTML>';
j'aimerai verifier la variable $query en la concaténant avec les choix fais sur une page précédente puis l'envoyer sur une page ou elle sera utilisée mais au lieu de m'afficher la querie ça m'affiche 0 et le submit ne marche pas :? alor qu'il fonctionne sur la page précédante[/b]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

30 mai 2006, 14:00

Simplement parce que le value doit être entouré de ", que le type doit être renseigné et qu'il faut définir un formulaire autour des inputs ;)
<input type="hidden" value="$query" name="query"> 
Et comme tu concatène tes variable, ca ne marche pas si tu n'extrait pas la variable de ta chaine
echo '<input type="hidden" value="'.$query.' name="query">';
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 37 Messages

30 mai 2006, 14:10

ouai mai query est toujours egale a 0

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mai 2006, 14:18

Et pis aussi parce que pour concatener on utilise un point "." et pas un plus
$query=$query . $order; 
//ou
$query.= $order; 
Et que l'on fait référence aux variables superglobale en respectant leur casse et que l'on évite de mettre des espaces dans les noms des champs :
$order = $_POST['order_by'];
:)

Eléphanteau du PHP | 37 Messages

30 mai 2006, 14:22

j'ai résolu un erreur pour le query personne ne m'a dit que j'avai marqué $query au lieu de $query1 pour concaterner

Code : Tout sélectionner

<html> <body> <form method="post" action="prep.php4"> <select name = "orderby"> <OPTION value="s.study_key">study_key</option> <option value="s.study_num">study_num</option> <option value="s.protocol_num">protocol_num</option> <option value="s.other_num">OtherID</option> <option value="s.study_desc">study_desc</option> <option value="ac.cond_name">InvestigatorAlert</option> <option value="s.blind_name">blind_name</option> </select> <input type="submit" value="order by" name="send"> </form> </body> </HTML>
ça c'est ma page de départ en html elle ne renvoi rien
<?php
$order = $_post['orderby'];
$query1 = 'select
 s.study_key "study_key"
,s.study_num "study_num"
,s.protocol_num "protocol_num"
,s.other_num "OtherID"
,st.study_type "study_type"
,\'?\' "ProductLicense"
,decode(s.unblind_ok,1,\'Yes\',\'No\') "EligibleUnblinding"
,decode(s.encoding,1,\'Yes\',\'No\') "StudySpecificAutoEnc"
,s.study_desc "study_desc"
,ac.cond_name "InvestigatorAlert"
,s.blind_name "blind_name"
,d1.name "Drugs"
,d2.name "Indications"
,d3.name "EventTerms"
,decode(s.event_no_manual,1,\'Yes\',\'No\') "PreventManual"
,decode(s.event_closure,1,\'Yes\',\'No\') "RequireEvent"
from lm_studies s
,lm_study_types st
,cfg_adv_cond ac
,cfg_dictionaries d1
,cfg_dictionaries d2
,cfg_dictionaries d3
where s.study_type_id = st.study_type_id
and s.alert_ac_id = ac.ac_id (+)
and s.deleted is null
and st.deleted is null
and ac.deleted is null
and d1.deleted is null
and d2.deleted is null
and d3.deleted is null
and s.drug_dict= d1.dict_id (+)
and d1.usage (+) = 1
and s.event_dict = d2.dict_id (+)
and d2.usage (+) = 3
and s.indications_dict = d3.dict_id (+)
and d3.usage (+) = 2
order by';
$query=$query1.$order;
echo '
<html>
	<body>';
	echo $order;
	echo '<p>';
	echo $query;
	echo '<p> Use this querie? <form method="post" action="essai2.php4">
			<input type="text" value ='.$query.' name ="query">
		<input type=submit value="ok" name="send">
		</form>
	</body>
</HTML>';
voila mon nouveau code php
mon echo $order n'affiche rien

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 mai 2006, 14:29

et en respectant la casse des variables superglobales ?
$order = $_POST['orderby'];

Eléphanteau du PHP | 37 Messages

30 mai 2006, 14:34

et de un maintenant comment je peut passer $query en variable sans passer par un type text? car il ne me renvoi que le select sans le reste?
j'aimerai en faite que la value soit invisible

Mammouth du PHP | 1353 Messages

30 mai 2006, 14:36

<input type="hidden" value ='.$query.' name ="query"> 
Le type="hidden" te permet de faire passer de manière invisible une variable, comme une zone de texte cachée (hidden) :wink:

Eléphanteau du PHP | 37 Messages

30 mai 2006, 14:40

nerci pour le hidden j'en avais jamais entendu parler
mais j'ai sur ma derniere page un reaffichage de ma query et il m'affiche seulement le mot select donc query ne passe pas entièrementalor qu'elle est bien affichée sur ma page précédente

Mammouth du PHP | 1353 Messages

30 mai 2006, 14:43

echo '<p> Use this querie? <form method="post" action="essai2.php4"> 
            <input type="text" value ="'.$query.'" name ="query"> 
        <input type=submit value="ok" name="send"> 
        </form> 
    </body> 
</HTML>'; 
Il faut bien mettre value="'.$query.'" pour que $query soit entre " " sinon il va couper la chaine au niveau de l'espace. Fais voir le code mais a priori ca doit etre une question de " " mal mis :)

Eléphanteau du PHP | 37 Messages

30 mai 2006, 14:45

celle là je l'ai vu en refaisant des teste j'a aussi suprimé les retour chariot
<?php
$order = $_POST['orderby'];
$query1 = 'select , s.study_key "study_key" ,s.study_num "study_num" ,s.protocol_num "protocol_num" ,s.other_num "OtherID" ,st.study_type "study_type" ,\'?\' "ProductLicense" ,decode(s.unblind_ok,1,\'Yes\',\'No\') "EligibleUnblinding" ,decode(s.encoding,1,\'Yes\',\'No\') "StudySpecificAutoEnc" ,s.study_desc "study_desc" ,ac.cond_name "InvestigatorAlert" ,s.blind_name "blind_name" ,d1.name "Drugs" ,d2.name "Indications" ,d3.name "EventTerms" ,decode(s.event_no_manual,1,\'Yes\',\'No\') "PreventManual" ,decode(s.event_closure,1,\'Yes\',\'No\') "RequireEvent"  from lm_studies s ,lm_study_types st ,cfg_adv_cond ac ,cfg_dictionaries d1 ,cfg_dictionaries d2 ,cfg_dictionaries d3 where s.study_type_id = st.study_type_id and s.alert_ac_id = ac.ac_id (+)and s.deleted is null and st.deleted is null and ac.deleted is null and d1.deleted is null and d2.deleted is null and d3.deleted is null and s.drug_dict= d1.dict_id (+) and d1.usage (+) = 1 and s.event_dict = d2.dict_id (+) and d2.usage (+) = 3 and s.indications_dict = d3.dict_id (+) and d3.usage (+) = 2 order by '; 
$query=$query1.$order;
echo '
<html>
	<body>';
	echo $order;
	echo '<p>';
	echo $query;
	echo '<p> Use this querie? <form method="post" action="essai2.php4">
			<input type="hidden" value ="'.$query.'" name ="query">
		<input type=submit value="ok" name="send">
		</form>
	</body>
</HTML>';
mai maintenant il m'affiche select , s.study_key sur mon autre page

edit j'a vu
c'est le " de ma requete qui est interprété est ce que le \ est interprété en html je sais qu'il l'est en php sinon il ne me reste qu'a attaqué ma chaine a coup de \ ou a faire une petite concaténation en remplassant tous le " par \" c'est bien ça

Eléphanteau du PHP | 37 Messages

30 mai 2006, 15:41

juste par curiosité quelqu'un pourai me dire quelle est la fonction qui retourne la longueure d'une variable pour que je puisse l'utiliser dans un for?

je l'ai égarée et google ne regarde que les variable flash

Mammouth du PHP | 1353 Messages

30 mai 2006, 15:49

la longueure d'une variable
Cela dépend du type de la variable... Dans le cas d'une chaine de caractère il s'agit de strlen($chaine);

Eléphanteau du PHP | 37 Messages

30 mai 2006, 15:58

ben il s'agit de mon $query

Mammouth du PHP | 1353 Messages

30 mai 2006, 16:02

Et bien strlen($query) devrait fonctionner dans ce cas...

Cela te renverra le nombre de caractère de la requete.