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

  FORUM HardWare.fr
  Programmation
  PHP

  Passage d'une requête en paramètre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage d'une requête en paramètre

n°1535965
acorsa
Posté le 29-03-2007 à 17:02:48  profilanswer
 

Bonjour,
Je souhaite passer en argument une requête sql...je me demande si c'est possible car tout ce que je tente ne marche pas!
Je m'explique: j'ai une page php avec une liste des questions sur lesquelles on peut appliquer des filtres. Lorsque je clique sur une question, une pop-up s'ouvre avec des détails sur la questions. Je peux ensuite naviguer d'une question à l'autre avec des boutons next et previous.  
Mon problème c'est que pour les boutons next et previous je crée un tableau contenant les résultats d'une requête SQL et je n'arrive pas à envoyer à la page avec les boutons next et previous la requête qiu dépend des filtres appliqués à la première page.
Je ne sais pas si c'est clair..alors je vais ajouter du code:
Voici la requête qui me permet d'avoir un tableau contenant toutes les questions...je peux ensuite utiliser les boutons next et previous.

Code :
  1. $select = mysql_query("SELECT query_id FROM Queries where Project_name='$project_name'" );


 
Mais je voudrais que $select change en fonction de la requête de la première page:

Code :
  1. $query51=mysql_query("select distinct query_id,customer_name,Translator_name, Q.language_name,Replied, Query_type,Doc_name, Reference, Proposal, Query_text, Creation_date, Query_status from Projects P inner join Queries Q on (P.Project_name=Q.Project_name) where P.Password='$project_pwd' and Query_status=3" );


et voici la ligne qui fait appelle au pop up:

Code :
  1. <a href=\"popup.php?query_id=$query_id\" onclick=\"return !window.open(this.href,null,'width=610,height=690, status=no, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, resizable=yes');\"><font color=\"blue\">$query</font></a>


J'ai essayé ça:

Code :
  1. <a href=\"popup.php?query_id=$query_id&sql_query=$query51\" onclick=\"return !window.open(this.href,null,'width=610,height=690, status=no, directories=no, toolbar=no, location=no, menubar=no, scrollbars=yes, resizable=yes');\"><font color=\"blue\">$query</font></a>


Mais quand je récupère la valeur de $_GET['sql_query'], elle est vide!
J'espère que vous avez compris mon problème...
Merci d'avance

mood
Publicité
Posté le 29-03-2007 à 17:02:48  profilanswer
 

n°1535980
rufo
Pas me confondre avec Lycos!
Posté le 29-03-2007 à 17:21:53  profilanswer
 

$query51 est une ressource pour mysql (une sorte de pointeur sur un résultat d'une requête mysql). ça risque pas de marcher...

n°1536004
acorsa
Posté le 29-03-2007 à 17:41:11  profilanswer
 

D'accord merci...donc c'est impossible à réaliser?

n°1536016
rufo
Pas me confondre avec Lycos!
Posté le 29-03-2007 à 17:53:03  profilanswer
 

qu'est-ce que t'entends par "passage d'une requête en paramètre"?
- la requête SQL elle même -> dans ce cas, t'as qu'à passer en paramètre la chaîne de caractères contenant la requête sql
- le résultat de la requête sql -> faut stocker dans un tableau le résultat puis le sérialiser et le passer en paramètre
- l'ID de la ressource Mysql -> je ne crois aps que ça soit possible vu que la ressource devrait être détruite à la fin de l'exécution du script php. Je dis "devrait" car ce n'est peut-être pas le cas dans le cadre de connexions persistentes...

n°1536020
acorsa
Posté le 29-03-2007 à 17:58:31  profilanswer
 

En fait c'est le résultat de la requête sql mais ta réponse me parait compliquée..c'est quoi sérialiser?  


Message édité par acorsa le 29-03-2007 à 18:00:02
n°1536276
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 30-03-2007 à 10:29:45  profilanswer
 

c'est transformer en "texte" (ou, plus exactement en série de caractères) un élément : un objet d'une instanciation de classe, un tableau (array), ...
ça se fait avec la fonction serialize() de php (cf. http://fr.php.net/manual/fr/function.serialize.php) et ça se défait avec la fonction unserialize :) http://fr.php.net/manual/fr/function.unserialize.php
 
Fais gaffe aux injections MySQL.

n°1536515
acorsa
Posté le 30-03-2007 à 18:19:51  profilanswer
 

Bon j'ai pas eu le temps aujourd'hui ms dès lundi je teste ...Merci et bon week-end

n°1536547
leflos5
On est ou on est pas :)
Posté le 30-03-2007 à 19:48:00  profilanswer
 

Juste un petit commentaire, je trouve ça très risqué comme pratique...

n°1536776
nycius
Ich liebe dich !
Posté le 31-03-2007 à 21:45:09  profilanswer
 

leflos5 a écrit :

Juste un petit commentaire, je trouve ça très risqué comme pratique...


 
+12

n°1537099
acorsa
Posté le 02-04-2007 à 09:21:09  profilanswer
 

Pourquoi c'est risqué??

mood
Publicité
Posté le 02-04-2007 à 09:21:09  profilanswer
 

n°1537119
rufo
Pas me confondre avec Lycos!
Posté le 02-04-2007 à 10:11:50  profilanswer
 

ben parce qu'une url, ça se traffique!

n°1537219
acorsa
Posté le 02-04-2007 à 11:45:06  profilanswer
 

ok donc tu me conseilles quoi?

n°1537330
rufo
Pas me confondre avec Lycos!
Posté le 02-04-2007 à 14:42:29  profilanswer
 

que veux tu faire au final? En gros, pourquoi tu voulais passer le résultat d'une requête sql en paramètre?

n°1541230
acorsa
Posté le 11-04-2007 à 12:11:49  profilanswer
 

Bon désolée de ne pas avoir répondu plus tôt ms je suis passée sur d'autres problèmes.
Concernant celui-ci, c'est un peu compliqué à expliquer ms je vais essayer:
En fait j'ai une liste de valeur affichées ds un tableau. L'utilisateur peut cliquer sur l'une d'entre-elles, une pop up s'ouvre avec tous les détails concernant la valeur sur laquelle il a cliqué. J'ai ajouté à cela des boutons next et previous pour qu'il puisse parcourir ce tableau en voyant les détails de chaque valeur sans être obligé de fermer la pop up et cliquer qu la valeur suivante. Dans le code de la fenêtre pop up je fais une requête qui prend toutes les valeurs du tableau afin de pouvoir le parcourir (en utilisant les boutons next et previous).  
Mon problème est que l'utilisateur peut aussi filtrer le tableau et je voudrais récupérer le résultat de ce filtre pour ne parcourir que les valeurs filtrées. Tu comprends??
En espérant que oui...
Merci

n°1541263
rufo
Pas me confondre avec Lycos!
Posté le 11-04-2007 à 13:07:33  profilanswer
 

Je vois 2 solutions qui valent ce qu'elles valent :
1) t'utilises AJAX
2) tu stockes dans une variable de session avec un identifiant bien particulier la requête SQL (le code sql, pas le résultat) et tu transmets côté client dans ton code javascript/html l'identifiant de la requête afin de la rééxecuter. Et quand tu filtres, tu modifies le code sql de cette requête...

n°1542124
acorsa
Posté le 12-04-2007 à 16:49:07  profilanswer
 

Tu connais AJAX? Si oui, tu pourrais me donner un peu plus d'indication sur ce que je dois utiliser?
Merci d'avance

n°1542143
TotalRecal​l
Posté le 12-04-2007 à 17:11:01  profilanswer
 

de maniere générale, c'est plutôt dégueu de transmettre une requete ou son résultat, serializé ou pas. C'est un coup à se retrouver avec des url imbitables, des bugs aléatoires, et des failles de sécurité monstrueuses.

 

Apprendre Ajax juste pour ça, c'est un peu le canon pour aplatir le moustique. Mais ça résoudrait le problème, et ça serait confortable pour l'utilisateur (cf ce qu'est Ajax si tu ne connais pas le principe).

 

Ou enfin si tu le peux, utilise plutôt les sessions comme on t'a proposé. C'est bcp plus clean, facile à mettre en oeuvre, et on peut anticiper ce que ça donnera, y a pas un milliard de sources de foirage possibles contrairement à ta premiere idée.


Message édité par TotalRecall le 12-04-2007 à 17:11:34

---------------
Topic .Net - C# @ Prog
n°1542146
acorsa
Posté le 12-04-2007 à 17:11:54  profilanswer
 

bon ok merci beaucoup

n°1543064
naeh
Posté le 15-04-2007 à 19:01:21  profilanswer
 

moi je vois une solution mais je ne sais ce que ça vaut :
 
- au moment du filtrage, stock (dans un tableau) les ID des lignes qui restent apres le filtrage (donc sans le filtrage t'as tout)
- tu sérialize (oubligé ?) se tableau et tu le stock dans une variable de session
- tes boutons next/previous vont faire ta requete mais en se basant sur les ID stockés dans ce tableau (en gros ils le parcourent)
 
donc après filtrage par exemple t'as ce tableau : $tab = ('1', '5', '78', '98', '150')
 
ce sont les ID des lignes dans ta table mysql, apres il suffit de les sélectionner et les parcourir avec tes boutons.
 
PS. on peut au lieu d'utiliser les sessions composer une chaine avec ces ID et les passer directement en URL en les séparant par ! par exeple apres pour les recup tu explode ta chaine, t'aura un truc genre fichier.php?lachaine=1!5!78!98!150 (si apres filtrage il reste beaucoup c'est limite comme solution parce que la taille d'une URL n'est pas infinie il me semble.
 
tu remarque que ce que je te propose comme solution est basé sur le fait que tes lignes aient toutes un identifiant dans la BD, si c'est pas le cas, t'es mal :D
 
bon courage :)

n°1543191
rufo
Pas me confondre avec Lycos!
Posté le 16-04-2007 à 09:42:40  profilanswer
 

s'il ne stocke pas la requête SQL, il risque d'avoir des pbs pour trier ou annuler un filtrage et revenir au résultat précédent... En +, si la requête ramène beaucoup d'enregsitrement, ça va prendre pas mal de place de tout stocker :/...


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

  Passage d'une requête en paramètre

 

Sujets relatifs
[PHP] Votre avis sur ma requetePassage par référence
[PHP] Requete et SQLMulti Requete Ajax
Cherche Script php associé à une requete cronrequete sql et variable
emettre un son ? apres une requetesql server 200 requete
Requete : spécifier longueur du texteVB6 : Trie de colonne avec requete SQL
Plus de sujets relatifs à : Passage d'une requête en paramètre


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