Passage d'une requête en paramètre - PHP - Programmation
Marsh Posté le 29-03-2007 à 17:21:53
$query51 est une ressource pour mysql (une sorte de pointeur sur un résultat d'une requête mysql). ça risque pas de marcher...
Marsh Posté le 29-03-2007 à 17:53:03
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...
Marsh Posté le 29-03-2007 à 17:58:31
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?
Marsh Posté le 30-03-2007 à 10:29:45
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.
Marsh Posté le 30-03-2007 à 18:19:51
Bon j'ai pas eu le temps aujourd'hui ms dès lundi je teste ...Merci et bon week-end
Marsh Posté le 30-03-2007 à 19:48:00
ReplyMarsh Posté le 31-03-2007 à 21:45:09
ReplyMarsh Posté le 02-04-2007 à 14:42:29
que veux tu faire au final? En gros, pourquoi tu voulais passer le résultat d'une requête sql en paramètre?
Marsh Posté le 11-04-2007 à 12:11:49
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
Marsh Posté le 11-04-2007 à 13:07:33
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...
Marsh Posté le 12-04-2007 à 16:49:07
Tu connais AJAX? Si oui, tu pourrais me donner un peu plus d'indication sur ce que je dois utiliser?
Merci d'avance
Marsh Posté le 12-04-2007 à 17:11:01
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.
Marsh Posté le 15-04-2007 à 19:01:21
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
bon courage
Marsh Posté le 16-04-2007 à 09:42:40
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 ...
Marsh Posté le 29-03-2007 à 17:02:48
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.
Mais je voudrais que $select change en fonction de la requête de la première page:
et voici la ligne qui fait appelle au pop up:
J'ai essayé ç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