Envoie données multiples dans XML

Résolu
krolenain
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009
- 29 mars 2006 à 14:41
krolenain
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009
- 29 mars 2006 à 16:10
Salut,
bon le titre est pas très clair, je m'explique:
je crée un fichier XML de ma base de donnée MySql avec PHP.
Tout allait bien jusqu'à ce qu'on me dise que pour une annonce, plusieurs animations sont à stocker, exemple:
<categorie>

</categorie>

Le probleme c'est pour le truc en rouge, sachant que j'ai une table pour les anims et une table pour les annonces avec dans la table anim l'id de l'annonce correspondante.

Mais je vois pas comment générer automatiquement la liste des animations pour une annonce, pour une anim toute seule pas de problème, mais pour plusieurs, hic...

J'ai essayé avec une boucle for, mais c'est vite l'embrouille.

Est-il possible dans ma requête sql d'obtenir en même temps que le nom et le titre de mon annonce, les différentes animations correspondantes.

Pour l'instant ma requete SQL est la suivante:

"SELECT categorie.nom, titre.nom, description, date, photo.nom, titre.id, anim.id, anim.nom
FROM categorie, titre, description, photo, anim WHERE categorie.id titre.idcat AND description.idtitre titre.id AND photo.idtitre titre.id AND anim.idtitre titre.id
AND categorie.nom = '$categorie' ORDER BY titre.id"

Si quelqu'un a une idée, j'espère m'être expliqué clairement.

Merci d'avance

8 réponses

cs_GRenard
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008

29 mars 2006 à 14:50
Tu fais 2 requêtes SQL pour ne pas te casser la tête... sinon je crois que ca ressemble à du left join tout ca...

, EssayezTestez avant de Poser une question !
http://www.lookstrike.com
3
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
29 mars 2006 à 15:35
Bah oui il tourne mais ça dépend de la versionb de mysql lol...
Boah sinon les 2 requêtes c'est la meilleure idée hein.
3
krolenain
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

29 mars 2006 à 14:58
ok, et pour ma requete d'anim je fais un truc du genre :
SELECT DISTINCT anim.id, anim.nom FROM anim, titre, categorie WHERE anim.idtitre titre.id AND titre.idcat categorie.id AND categorie.nom = '$categorie' ORDER BY anim.nom;

ca te semble correct?

Merci en tout cas
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
29 mars 2006 à 15:01
Hello,

ça marche pas ça :

SELECT categorie.nom, titre.nom, description, date, photo.nom, titre.id, (SELECT CONCAT_WS (',', anim.nom) FROM anim anim WHERE anim.idtitre=titre.id) as liste_anim_nom, (SELECT CONCAT_WS (',', anim.id) FROM anim anim2 WHERE anim2.idtitre=titre.id) as liste_anim_id
FROM categorie, titre, description, photo, anim WHERE categorie.id titre.idcat AND description.idtitre titre.id
AND photo.idtitre = titre.id
AND categorie.nom = '$categorie' ORDER BY titre.id

?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
krolenain
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

29 mars 2006 à 15:10
ahah melalam toujours des requetes de malade!

j'ai une erreur en retour:
Erreur de syntaxe près de '(anim.nom, ',') FROM anim anim WHERE anim.idtitre=titre.id) as l' à la ligne 1

j'avais effectivement pas pensé à concaténer mais es-tu sur que Concat_WS tourne avec MySql, moi c'est la première fois que je vois ca.
0
krolenain
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

29 mars 2006 à 15:37
bon je vais faire 2 requêtes alors,

merci a Grenard et a Malalam comme d'hab :)
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
29 mars 2006 à 15:42
Ceci dit, un truc me chiffonne dans ton message d'erreur :
c'est CONCAT_WS (',', ...) et pas CONCAT_WS (..., ',') hein ?

Mais je ne suis pas sûr de toutes façons que ça fonctionne, une concaténation comme celle-là, récursive...j'ai même des doutes.
0
krolenain
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

29 mars 2006 à 16:10
oui oui c'est bien CONCAT_WS(',',...)

pour le reste, tout ce que je sais, c'est que ca marche pas!
mais c'est vrai que malgré que ca soit chiant à faire, en deux requêtes, c'est quand même plus simple!
0