|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 122 ![]() |
Je voudrais savoir s'il existe un résultat de ma requête pour faire différentes affichages en fonction de ça. J'utilise odbc_result pour tester cela mais le problème c'est que s'il y a bien des résultats, odbc_result_all() ne renvoie pas la premiere ligne.
Code :
et il affiche Le numéro de dossier : 20070001 numDossier 20070002 20070003 20070004 20070005 20070006 20070007 20070008 pourtant le odbc_result_all hors de la boucle affiche bien les dossiers à partir de 20070001. Ce que je ne comprend pas. |
||
|
|
00
|
|
|
#2 |
![]() ![]() Développeuse PHP/Java Inscription : avril 2007 Messages : 3 686 ![]() |
![]() Je ne maitrise pas du tout odbc, mais le même genre de problème se pose avec mysql Lorsque tu fais result_all, ça te renvoie tous les résultats qui n'ont pas encore été extraits. Or ton premier résultat est déjà extrait par un result juste avant. Donc il t'affiche tous les résultats à partir du 2e.
__________________
Modératrice PHP Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 122 ![]() |
Merci de cette information.
Quelle alternative alors pour avoir tout le résultat de la requête. Au fait je fais des extractions de données en fonction de plusieurs critères choisies par l'utilisateur. Et j'affiche les résultats dans un fichier csv. Je fais ce test pour que quand il n'y a pas de résultat, ça ne créer pas de fichier csv mais une autre page affichant qu'il n'y a pas de résultat correspondant aux critères. odbc_num_rows() ici renvoie -1 donc je ne peut pas l'utiliser. |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
Comme Celira, je ne maitrise pas odbc, mais bon en lisant la doc là il semble effectivement que odbc_num_rows() renvoie -1 avec certains drivers dans le cas d'un SELECT.
Donc tu as plusieurs possibilités plus ou moins casse pieds (tout dépend de la complexité d'affichage que tu veux en fait) 1/ tu utilises odbc_next_result() dans une boucle while et pour chaque ligne tu écris en sortie dans ton csv. 2/ tu bricoles : la première ligne, si y en a une tu la sors "a la main" dans ton fichier et tu utilises odb_result_all() pour sortir le reste 3/ Moins bien mais le plus simple bien sur (mais bon vraiment pas top, je la donne au cas où ca ne soit pas un projet important, du bricolage ou autre) : tu fais deux fois de suite la requete. |
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 122 ![]() |
j'ai plusieurs requêtes et j'affiche leur résultats cote à cote dans un fichier csv . Si je fais avec odbc_next_result() ça va vraiment me compliquer ma vie.
pour l'instant je vais voir comment faire autrement mais si quelqu'un a une idée, c'est le bienvenu. Merci |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
Je n'ai pas bien compris ce que tu appelles "cote a cote dans un fichier csv" ?
Peux tu donner un exemple de la sortie que tu voudrais et que tu n'arrives pas a obtenir avec un odbc_next_result() ? |
|
|
00
|
|
|
#7 | ||
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 122 ![]() |
j'explique un peut le projet alors,
L'utilisateur peut selectionner 1 à 11 critères, donc il y a énormément de combinaisons possibles. j'ai une requete pour chaque critère mais les requêtes deviennent très vite complexes si je fais des jointures en fonctions des critères choisies. Donc j'ai decider ne garder que les 11 requetes et de n'afficher que les résultats des ceux selectionnées. mon code Code :
C'est un peut difficile à expliquer mais par exemple pour la requete1, les noms de champs s'affichent de la colonne A à H et les tuples s'affichent de ligne en ligne. Puis à partir de la colonne I se trouve les résultats de la requete2. (oups, je ne vois est ce qu'on met les pieces jointes, j'allais mettre le fichier résultat) |
||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
J'ai a peu pres compris ce que tu attends en sortie. Maintenant je propose une idée et j'ai une question !
1/ question : Je ne vois pas en quoi le fait de faire odbc_result_all() te permet d'avoir cote a cote les résultats de chaque requete en fait. Maintenant je n'ai peut etre pas tout compris ! 2/ Rien ne t'empeche avec odbc_next_result() de te constuire un tableau a deux dimensions dans ton script php, que tu remplis exactement comme tu le ferais avec un csv. Pour la premiere requete tu crees et remplis le tableau avec les colonnes 0 à N-1 (N = nombre de colonnes de la requete), Pour la deuxieme requete tu fais de meme avec les colonnes N à N+M-1 (M = nombre de colonnes de la requete 2), etc. A la fin tu as un tableau qui correspond a ton fichier excel en mémoire et tu n'as plus qu'à le sortir dans un csv, en écrivant pour chaque ligne, chaque colonnes séparée par un ; |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 122 ![]() |
Pour la question, odbc_result_all() ne me sert à rien là
c'etait juste pour faire un test car je n'avais pas, pour chaque requete, la premiere ligne dans mon fichier csv. Pour la proposition, je vais voir ça de près. cela me semble une bonne solution mais je ne vois pas encore très bien comment faire. En tout cas je vais essayer avec ça. Mais ça risque d'être long car j'ai 11 critères et dans chaque cas (si 1choix, 2choix....11choix) il y a encore des combinaison. En tout cas merci |
|
|
00
|
|
|
#10 |
|
Nouveau Membre du Club
![]() Inscription : avril 2006 Messages : 122 ![]() |
Pour résoudre le problème, j'ai executé les requêtes après le test sur l'existence de dossier. (donc dans la boucle if (odbc_result())). Et ça marche comme il le faut.
j'ai abondonné le tableau à 2 dimensions même si c'est une bonne solution, car j'ai déjà fait toute les combinaisons possibles de mes affichages avant de m'appercevoir qu'il manquait la premiere ligne. Je devais alors tout changer. En tout cas, merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com