Page 1 sur 2

problème de vasriable

Posté : 30 mai 2006, 13:56
par scorpking
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]

Posté : 30 mai 2006, 14:00
par zeus
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">';

Posté : 30 mai 2006, 14:10
par scorpking
ouai mai query est toujours egale a 0

Posté : 30 mai 2006, 14:18
par Ryle
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'];
:)

Posté : 30 mai 2006, 14:22
par scorpking
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

Posté : 30 mai 2006, 14:29
par Ryle
et en respectant la casse des variables superglobales ?
$order = $_POST['orderby'];

Posté : 30 mai 2006, 14:34
par scorpking
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

Posté : 30 mai 2006, 14:36
par guilt92
<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:

Posté : 30 mai 2006, 14:40
par scorpking
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

Posté : 30 mai 2006, 14:43
par guilt92
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 :)

Posté : 30 mai 2006, 14:45
par scorpking
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

Posté : 30 mai 2006, 15:41
par scorpking
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

Posté : 30 mai 2006, 15:49
par guilt92
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);

Posté : 30 mai 2006, 15:58
par scorpking
ben il s'agit de mon $query

Posté : 30 mai 2006, 16:02
par guilt92
Et bien strlen($query) devrait fonctionner dans ce cas...

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