par
sasquatch » 13 avr. 2006, 17:41
bonjour à tous, je suis nouveau ici,...
J'aimerais pouvoir afficher les résultats d'une requête en deux colonnes.
La première colonne affiche la première moitié des résultats et la suivante, la seconde motié.
J'y arrive mais en deux requêtes alors qu'une seule devrait suffire je pense mais je ne vois pas comment y arriver (je débute, c'est mon premier script)...
Voilà ma méthode actuelle:
1) je fait ma requete_1 dans laquelle je demande de sélectionner le nom et l'id des éléments qui se trouvent dans ma table
2) je fait un num_row sur cette requête_1 pour savoir le nombre d'éléments existants.
3) Je vérifie si ce nombre est pair sinon, je l'incrémente de 1
4) Je divise le nombre obtenu par deux, dès lors je connais le nombre maximum d'éléments par colonnes (appelons ce nombre maximum "$nbr_lignes").
5) Je REfait une requête_2 pour obtenir l'id et le nom des éléments de ma table avec une LIMIT inférieure qui vaut $nbr_lignes, de la sorte, je ne liste que les éléments de la seconde colonne.
6) J'affiche le tout ligne par ligne, tant que l'id des éléments ne dépasse pas $nbr_lignes: le resultat de la requête 1 dans la première colonne et le résultat de la requête2 dans la seconde colonne.
Ca fonctionne, j'obtiens bien pour 7 éléments:
1 xunxxxxx | 5 xcinqxxx
2 xdeuxxxx | 6 xsixxxxx
3 xtroisxxx | 7 xseptxxx
4 xquatrex |
Mais je trouve que l'étape N°5 est de trop puisque les éléments qui s'y trouvent existent déjà dans la première requête.
J'ai bien pensé à faire de la sorte avec une seule requête:
1 | (1+$Nbr_lignes)
2 | (2+$Nbr_lignes)
3 | (3+$Nbr_lignes)
4 | (4+$Nbr_lignes)
Mais si cela marche avec les id's (puisqu'il est simple de traiter en php une somme de deux chiffres), il faut que j'affiche le nom des éléments aussi et là cela implique pour la seconde colonne que la somme faite=l'id correspondant à chaque nom à afficher.
Et je ne vois pas comment faire cette correspondance sans refaire une requête SQL.
Avez-vous une méthode à une seule requête à me conseiller pour obtenir ce dernier cas de figure?
En fait, disons que je ne vois pas, en règle générale, comment pouvoir a posteriori manipuler des resultats dont je dispose.
J'ai des pommes vertes et rouges dans mon panier et quand je ne veux que des vertes, je jette toutes celles que j'ai déjà, sans distinction, pour remplir à nouveau mon panier d'autres exclusivement de cette couleur.
C'est l'inverse de ce que j'appellerais "optimiser".
J'espère que vos réponses eventuelles vont m'aiguiller
merci pour votre aide.
bonjour à tous, je suis nouveau ici,...
J'aimerais pouvoir afficher les résultats d'une requête en deux colonnes.
La première colonne affiche la première moitié des résultats et la suivante, la seconde motié.
J'y arrive mais en deux requêtes alors qu'une seule devrait suffire je pense mais je ne vois pas comment y arriver (je débute, c'est mon premier script)...
Voilà ma méthode actuelle:
1) je fait ma requete_1 dans laquelle je demande de sélectionner le nom et l'id des éléments qui se trouvent dans ma table
2) je fait un num_row sur cette requête_1 pour savoir le nombre d'éléments existants.
3) Je vérifie si ce nombre est pair sinon, je l'incrémente de 1
4) Je divise le nombre obtenu par deux, dès lors je connais le nombre maximum d'éléments par colonnes (appelons ce nombre maximum "$nbr_lignes").
5) Je REfait une requête_2 pour obtenir l'id et le nom des éléments de ma table avec une LIMIT inférieure qui vaut $nbr_lignes, de la sorte, je ne liste que les éléments de la seconde colonne.
6) J'affiche le tout ligne par ligne, tant que l'id des éléments ne dépasse pas $nbr_lignes: le resultat de la requête 1 dans la première colonne et le résultat de la requête2 dans la seconde colonne.
Ca fonctionne, j'obtiens bien pour 7 éléments:
1 xunxxxxx | 5 xcinqxxx
2 xdeuxxxx | 6 xsixxxxx
3 xtroisxxx | 7 xseptxxx
4 xquatrex |
Mais je trouve que l'étape N°5 est de trop puisque les éléments qui s'y trouvent existent déjà dans la première requête.
J'ai bien pensé à faire de la sorte avec une seule requête:
1 | (1+$Nbr_lignes)
2 | (2+$Nbr_lignes)
3 | (3+$Nbr_lignes)
4 | (4+$Nbr_lignes)
Mais si cela marche avec les id's (puisqu'il est simple de traiter en php une somme de deux chiffres), il faut que j'affiche le nom des éléments aussi et là cela implique pour la seconde colonne que la somme faite=l'id correspondant à chaque nom à afficher.
Et je ne vois pas comment faire cette correspondance sans refaire une requête SQL.
Avez-vous une méthode à une seule requête à me conseiller pour obtenir ce dernier cas de figure?
En fait, disons que je ne vois pas, en règle générale, comment pouvoir a posteriori manipuler des resultats dont je dispose.
J'ai des pommes vertes et rouges dans mon panier et quand je ne veux que des vertes, je jette toutes celles que j'ai déjà, sans distinction, pour remplir à nouveau mon panier d'autres exclusivement de cette couleur.
C'est l'inverse de ce que j'appellerais "optimiser".
J'espère que vos réponses eventuelles vont m'aiguiller
merci pour votre aide.