Page 1 sur 1

requête complexe

Posté : 27 oct. 2005, 19:03
par fiatix
Bonjour à tous,
J'ai deux tables dans une base:
1- table annonces: contient des annonces
2- table images : contient des images associées aux annonces

la table annonces contient 2 champs importants:
1- champ1: valeur numérique (ex 12345)
2- champ2: valeur alphabétique (ex abcd)

le nom d'une image dans la table images est une combinaison de champ1 et champ2 dont les valeurs sont uniques
dans l'exemple, on aura une image nommée 12345_abcd.jpg

ce que veux faire:
1- extraire les annonces de la table annonce
2- concaténer les valeurs de champ1 et champ2 venant de la première requête, pour construire une deuxième requête trouvant la bonne image dans la table images.
3- afficher les annones extraites avec l'image qui leur correspond

Je bloque sur la construction de la requête. Pouvez-vous m'aider?

Posté : 27 oct. 2005, 19:53
par iclo
Houla, c'est un peu lourdinge comme technique.
Pöurquoi ne pas simplement utiliser des clés étrangères, un champ idAnnonce dans la table contenant les photos ? C'est beaucoup plus simple et surtout plus rapide (C'est le serveur de base de donnée qui va être content :D:D)

Tu récupère toutes les infos dont tu as besoin en un seul select avc une simple jointure.

Posté : 27 oct. 2005, 20:17
par Invité
je ne suis pas un expert sql mais pour utiliser les clés étrangères, il faudrait que je sache à l'avance quelle image correspond à quelle photo non?
dans mon cas il y a une centaine d'annonces, donc une centaine de photos. ces données sont nommées et déposées automatiquement dans deux répertoires sur le serveur.
Mon script lit les annonces dans un fichier et les stocke dans mysql.
Ensuite il lit les photos du répertoire et les stocke également.
A moins que je me trompe, c'est à mon script de déterminer quelle photo correspond à quelle annonce pour l'affichage.
qu'en penses tu?

Posté : 27 oct. 2005, 20:59
par iclo
Il faudrait que tu sois plus clair.
Si a une annonce peuvent correspondre un ou plusieurs images, c'est que tu as un moyen de faire le lien annonce-photos. Donc je ne comprends pas trop où est le problême...

Posté : 27 oct. 2005, 21:34
par Invité
ben j'ai bien décrit mon besoin dans le premier post...

Posté : 27 oct. 2005, 22:25
par iclo
ce que je ne comprends pas c'est la procédure d'ajout d'une annonce et de ses photos.
Comment fais tu le lien annonce-photos, lors de l'ajout ?

Posté : 27 oct. 2005, 22:57
par Invité
les annonces sont créées par un logiciel dont je ne sais rien, les noms des photos sont composées par le même logiciel.
j'ai dit que champ 1 était du type 12345. ça représente un numéro de dossier.
champ 2 est du type abcd, c'est le code d'une agence.
Quand une annonce est créée, ces champs sont renseignés par le fameux logiciel.
Pour lier les photos et les annonces, ce même logiciel compose le nom des photos à partir du numéro de dossier + code agence. ça permet d'obtenir un nom unique pour une photo, qui est dans notre cas 12345_abcd.jpg
Mais je n'ai aucune influence sur tout cela. ce que j'ai c'est:
une liste de 100 annonces et un répertoire 100 photos qui viennent d'un logiciel métier. je dois afficher chaque annonce et son image sur un site, en tant que résultat d'une recherche multicritères.
Donc si un internaute demande l'annonce 1 qui contient "dossier=12345" et "code agence=abcd", le seul moyen pour afficher l'annonce avec son image est de faire une deuxième requête ( à partir des résultats de la première) , qui va chercher la photo s'appelant 12345_abcd.jpg pour l'afficher en même temps que l'annonce.

g sais pas si j'ai réussi à bien décrire le truc là...

Posté : 27 oct. 2005, 23:30
par Pieterjan
Si je comprends bien, ce que tu veux pouvoir arriver à faire c'est de n'utiliser qu'une seule requete sql ?

Posté : 28 oct. 2005, 00:12
par iclo
Je commence à comprendre...
(Pas très normaliser l'application de génération, mais bon :D :D)

Je ne pense pas que tu as besoin d'une table photo, vu que (si j'ai bien compris) tu peux reconstituer le nom du fichier de la photo à partir des deux champs présents dans la table annonce. Il te suffit de stocker toutes tes photos dans le même dossier.

Posté : 28 oct. 2005, 00:19
par Invité
tu veux dire faire un opendir à partir du résultat de la requete annonces pour récup la photo?

Posté : 28 oct. 2005, 08:56
par pascaltje
tu veux dire faire un opendir à partir du résultat de la requete annonces pour récup la photo?
heu... tu devrais plutôt écrire son url dans une balise img (si tu veux l'afficher)

A+

Pascal

Posté : 28 oct. 2005, 12:12
par joker33
Bonjour, si je comprend bien, et pour recapituler :

1/ ni les annonces ni les photos ne sont dans la base

2/ tu as donc un dossier qui contient les annonces (fichiers) :
nomenclature de nommage :
$annonce = ???

3/ un dossier qui contient les photos (fichiers) :
nomenclature de nommage :
$image = $dossier_$code_agence.'.jpg'; //(12345_abcd.jpg)

Pour résoudre ton probleme,

1/ tu as besoin d'une nomenclature de nommage pour les annonces.

2/ tu dois lire dans le fichier de l'annonce pour extraire les variables
$dossier et $code_agence

3/ tu dois parcourir le dossier photo pour rechercher la bonne photo

4/ tu dois afficher le resultat à l'ecran annonce+ photo

est-ce que ceci est exacte ?

Posté : 01 nov. 2005, 05:27
par Invité
oui, c'est bien ça!