trier après une requète (résolu) - PHP - Programmation
Marsh Posté le 05-12-2007 à 01:56:01
Code :
|
te trira les résultat par prénom
(c'est un exemple a adapter a tes besoins)
regarde ici http://www.phpdebutant.org/article66.php c'est super bien expliquer
Code :
|
devrais devenir
Code :
|
enfin la ça trie par ville..
Marsh Posté le 05-12-2007 à 10:54:28
Un petit conseil qui coute rien: essayes au maximum de séparer le code php de la sortie html
Parce que là c'est imbitable à la lecture et ça aide pas à faire un truc clair et efficace
Marsh Posté le 05-12-2007 à 13:13:35
séparer le code, oui je le fais, mais pour débugger, je l'ai mis dans cet ordre ( j'avais fait un include )
Merci pour vos réponses !
Mais ce n'est pas un problème de requète ( je pense ) mais un problème de tri php,
je ne veux pas obenir ça : liste dans le désordre
ville 1 - salle 1 adresse
ville 1 - salle 2 adresse
ville 2 - salle 3 adresse
ville 1 - salle 4 adresse
ville 2 - salle 5 adresse
mais ça : je trie par ville puis je fais une requète en récupérant $ville de la 1ere requète
ville 1
salle 1 adresse
salle 2 adresse
salle 4 adresse
ville 2
salle 3 adresse
salle 5 adresse
mon imbrication de boucle ne marche pas telle quelle.
Code :
|
ca bloque au deuxième while...
aaarrrgh
c'est pourtant simple....
Marsh Posté le 05-12-2007 à 14:00:56
bah oui mais y a quoi dans $semaine1_spectacle ?
un do...while avec des données en db, c'est louche.
et pourquoi tu calcules $row_sorte_lieu = mysql_fetch_assoc($sorte_lieu); deux fois ?
Et pourquoi salle et ville sont dans la même table ?
Et pourquoi y a du DB avec de la logique avec de la présentation ?
Marsh Posté le 05-12-2007 à 14:54:12
Je viens de rééditer le code dans mon message précédent mais je le réédite pour plus de clarté :s
--> j'ai enlevé semaine1_spectacle ( une erreur de copié-collé )
--> j'ai enlevé le 2e calcul de : $row_sorte_lieu = mysql_fetch_assoc($sorte_lieu), renommé $row_salle
C'est louche ?
Je crois que ça viens de dreamweaver, et pour mes autres requètes, ça marche ( je suis pas codeur, pourvu que ça marche )
de toute façon j'ai l'impression qu'il y a autant de façon de coder que de codeur, alors.
parce qu'avec les les villages, il n'y a qu'une salle par ville, je vais pas faire une table par ville, non ?
heuu, faut bien les présenter les données à un moment, non ?
j'ai enlevé les div.
Il est à jeter mon code ou pas ?
HHHEEEELP !
Code :
|
message d'erreur :
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/ensarthe/domains/7ensarthe.fr/public_html/Untitled-2.php on line 22
Marsh Posté le 05-12-2007 à 15:05:50
heyoka1 > L'utilisation d'un "do while" veut dire que t'es sur que t'auras toujours au moins une donnée à traiter dans la boucle. Es tu sur d'avoir une salle à proposer même si on saisie un nom bidon qui ne correspond à rien?
Si dreamweaver fait ce genre de supposition c'est bien par ce que c'est l'un des pires éditeurs pour faire du php. En fait, même si chaque développeur fait à sa manière quand on regarde des problèmes assez vaste autant il y a des structures de bases qui restent communes à 99% des développeurs pour des situations qu'on rencontre 30 fois par jour. La récupération des données depuis une base de donnée en fait partie.
La structure correcte est :
Citation : while ($row = mysql_fetch_assoc($result)) { |
Tu peux noter au passage que ça élimine également le mysql_fetch_assoc que tu avais avant le do.
PS : Juste pour savoir, t'es certain que tu ne tomberas jamais sur des villages ou des villes qui ont plusieurs salles comunales ou des regroupements de villages qui se partagent une salle donné? Même si tu ne fais pas une table par ville, il serait préférable de faire une table pour les villes, une pour les salles et une qui fait la liaison entre les deux.
Marsh Posté le 05-12-2007 à 16:16:43
Merci pour ton aide
Pour l'instant il n'y a pas de saisie utilisateur, donc pas d'erreur.
Je ne crée de ville que si il y a une salle, c'est la salle qui est importante et la ville est celle où elle est implantée.
Je travaille donc sur une mauvaise formule depuis le départ... Je vais donc rectifier
Je peux créer une table en plus, mais ça devient vite galère pour injecter des données avec des id_ a chercher, j'aimerai mieux pas. Cette table est déjà liée avec les évenements.
je viens de faire un essai, mais j'ai toujours cette p... d'erreur
Code :
|
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/ensarthe/domains/7ensarthe.fr/public_html/Untitled-2.php on line 13
Bon j'ai la tête comme une pastèque, j'ai tout retourné dans tous les sens...
Marsh Posté le 05-12-2007 à 16:25:39
heyoka1 a écrit : Merci pour ton aide
|
L'opérateur '.=' fait une concaténation entre le contenu de la variable et une autre chaine de caractère (avec un changement de type de variable si besoin) et met le résultat (une chaine) dans la variable qui devient donc une variable de type texte.
Plus loin tu utilises cette variable comme s'il s'agissait d'un résultat de requête. Normal qu'il te dise que c'est pas le cas.
Marsh Posté le 05-12-2007 à 16:55:43
Oui , c'était un essai, mais même sans ce point ça m... quand même....
je reprend une aspirine...
Marsh Posté le 05-12-2007 à 18:29:25
merci d'avoir suivi quelques conseils.
Maintenant, le plus important est de revoir ta structure DB. Parce que pour faire ce que tu fais actuellement, autant tout mettre dans un fichier texte.
Tu dois créer minimum deux tables.
Table Villes :
id : int, autoincrement,primary key
ville : varchar 255
Table Salles : (perso j'aurais bossé avec les cinémas, puis les salles, puis les films, puis les séances mais bon, bref)
id : int, autoincrement,primary key
id_ville : int
salle : varchar 255 (je suppose que c'est un nom que tu veux mettre la)
Avec ça, on va commencer à travailler correctement.
Marsh Posté le 05-12-2007 à 19:34:02
Merci à Omega2 ! C'est parce que j'avais déclaré une variable déjà utilisée que ça foirait...
Justement, au début je travaillais sur 2 tables, salles et villes.
Mais je voudrais vraiment me servir de ce cas pour pouvoir trier les données d'une même table
parce qu'après, j'aimerai aussi trier les évenements par salle, y mettre les dates, etc...
Alors j'arrive a lister les villes, mais à l'intérieur, j'arrive pas à lister les salles.
Marsh Posté le 06-12-2007 à 06:16:24
Je comprends toujours pas pourquoi tu fais 2 requêtes pour ramener ce résultat là
Marsh Posté le 06-12-2007 à 11:07:35
ben je fais une requète pour avoir le DISTINCT ville
et je fais la deuxième pour avoir les salles = ville DISTINCT de la 1ere requète
Marsh Posté le 06-12-2007 à 16:14:11
D'où le fait que tu as un modèle moisi:
-si tu fais un seul écart de frappe c'est 2 villes différentes
-t'es obligé de filtrer ton truc
Néanmoins tu pourrais faire simplement:
Code :
|
Et après tu compares à la ville de la ligne précédente que tu gardes sous le coude: si elle change c'est que t'as fini la ville et tu passes à la suivante
Marsh Posté le 07-12-2007 à 10:22:14
Merci leflos5
J'arrive pas à traduire ta phrase par une formule ...
( !isset ? For, while ? )
Si tu peux m'indiquer en grande largeur...
Marsh Posté le 07-12-2007 à 13:20:15
*résultat = éxécution requête
*initialisation de la variable mémoire de la dernière ville à vide
*pour chaque ligne du tableau
{
*Si la ville du résultat != ville en précédente => mise en place affichage début ville
*afficher les infos sur la salle
*mémoriser le nom de la ville dans la variable mémoire
}
Ca change rien à ce que tu as à l'heure actuelle y'a juste en plus comparer avec la ville de la ligne précédente (ou aucune mais dans ce cas on a initialisé la variable pour gérer ce cas) et donc pour ça faut la mettre quelque part A la fin du traitement sur une ligne de préférence
Marsh Posté le 07-12-2007 à 15:47:05
heuuu...
tu me traduis du chinois par du pékinois....
Désolé
Marsh Posté le 07-12-2007 à 15:49:33
"ville en précédente", j'arrive pas à capter.
on gagnerai du temps et de l'énergie avec une formule un peu plus explicite, parce que là ça m'avance pas
Merci
Marsh Posté le 07-12-2007 à 17:05:22
pardon "ville précédente stockée"
C'est de l'algo, simplement de la réflexion sur la façon de faire dans un langage compréhensible en faisant abstraction d'un quelconque langage de programation
Tu gardes la même structure et tu rajoutes simplement une variable dans laquelle tu stockes la ville du dernier enregistrement pour comparer avec le suivant!
Marsh Posté le 12-03-2008 à 13:21:06
Merci pour ta réponse, mais après avoir essayé 100 000 fois je n'ai réussi qu'en ayant un ID pour chaque ville avec cette méthode.
Ce qui devient problématique avec la table spectacle
Finalement j'ai réussi avec ma première méthode, alors j'en fais profiter ceux qui ont cherché comme moi durant des mois
Code :
|
Désolé pour l'indentation, mais ça s'affiche pas comme je voudrais, et là j'ai pas trop le temps
Merci pour votre aide !
Marsh Posté le 12-03-2008 à 13:30:27
Reply
Marsh Posté le 05-12-2007 à 01:49:50
Bonjour
Après plusieurs jours de recherche et toujours bloqué, je m'en remets à vous...
J'ai une table ( lieu ) avec ville, salle , adresse
et je veux afficher :
ville 1
salle 1 adresse
salle 2 adresse
ville 2
salle 3 adresse
ville 3
salle 4 adresse etc...
Je peux afficher le tout, mais je ne veux réafficher la ville à chaque fois, je veux pouvoir grouper par ville
J'ai essayé d'imbriquer une boucle dans une autre mais ça coince, et j'arrive pas à trouver où :
Oui je sais je suis débutant !!
Merci !
Message édité par heyoka1 le 12-03-2008 à 13:30:22