requête complexe

fiatix
Invité n'ayant pas de compte PHPfrance

27 oct. 2005, 19:03

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?

ViPHP
ViPHP | 2144 Messages

27 oct. 2005, 19:53

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.

Invité
Invité n'ayant pas de compte PHPfrance

27 oct. 2005, 20:17

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?

ViPHP
ViPHP | 2144 Messages

27 oct. 2005, 20:59

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...

Invité
Invité n'ayant pas de compte PHPfrance

27 oct. 2005, 21:34

ben j'ai bien décrit mon besoin dans le premier post...

ViPHP
ViPHP | 2144 Messages

27 oct. 2005, 22:25

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 ?

Invité
Invité n'ayant pas de compte PHPfrance

27 oct. 2005, 22:57

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à...

Eléphant du PHP | 55 Messages

27 oct. 2005, 23:30

Si je comprends bien, ce que tu veux pouvoir arriver à faire c'est de n'utiliser qu'une seule requete sql ?
Mais qu'importe..

ViPHP
ViPHP | 2144 Messages

28 oct. 2005, 00:12

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.

Invité
Invité n'ayant pas de compte PHPfrance

28 oct. 2005, 00:19

tu veux dire faire un opendir à partir du résultat de la requete annonces pour récup la photo?

ViPHP
ViPHP | 1024 Messages

28 oct. 2005, 08:56

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

Petit nouveau ! | 7 Messages

28 oct. 2005, 12:12

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 ?

Invité
Invité n'ayant pas de compte PHPfrance

01 nov. 2005, 05:27

oui, c'est bien ça!