Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/02/2007, 18h26   #1
Membre actif
 
Inscription : juin 2006
Messages : 545
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 545
Points : 174
Points : 174
Par défaut [SQL] select en fonction de 2 tables

Bonjour,
Je vous expliqe je que j'aimerai faire.
J'ai une table images qui contient les noms des images que j'ai uploadé.
elle est comme cela : id | nom
Et j'ai une table visites qui est comme cela : id | ip | image

En fait j'ai une page sur mon site qui affiche une image aléatoirement, avec un bouton qui permet d'actualiser la page et donc de changer de d'image.

Mais je voudrai n'affiché que les images que le visiteur n'a pas encore vu.
a chaque fois q'une image est affiché, on enregistre l'ip et le nom de l'image pour ne pas l'affiché par la suite.

Mais je ne sais pas comment faire pour faire un select dans la base de donnée pour n'affiché qu'une image de la table images qui n'ont pas encore été vu par le visiteur qui est dans la table visites.

J'espere que j'ai été assez explicite.
Quelqu'un pourrai me donner un peu d'aide ou quelqu'un indication?

Merci beaucoup
morgan47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2007, 18h35   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Code sql :
SELECT id FROM image WHERE id NOT IN (SELECT id FROM visite WHERE ip = l'ip du visiteur)

quelque chose de ce genre me semble t'il
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2007, 20h30   #3
Inactif
 
Avatar de Deallyra
 
Étudiant
Inscription : février 2007
Messages : 1 997
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 1 997
Points : 1 632
Points : 1 632
Je pencherais pour cette solution mais je ne l'ai pas testée...


VISITEUR (ip)
IMAGE (id, nom)
AVOIR_VU (id#,ip#)

Code :
1
2
3
4
5
6
7
8
9
 
select I.id
from IMAGE I
where I.id not in
	(select AV.id
	 from AVOIR_VU AV, VISITEUR V
	 where V.ip= AV.ip
	)
;
Un visiteur peut n'avoir vu aucune image ou en avoir vu plusieures.
Une image peut n'avoir été vu par aucun ou par plusieurs.

Donc création d'une association AVOIR_VU qui permet de regrouper les clés primaires des deux entités VISITEUR et IMAGE.

Par contre, je signale que le résultat de cette requête SQL peut ressortir plusieurs résultats (à toi de récupérer un enregistrement après... c'est tout simple ) mais le résultat peut être zéro...
Si l'utilisateur a déjà vu toutes les images.
Deallyra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2007, 00h49   #4
Membre actif
 
Inscription : juin 2006
Messages : 545
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 545
Points : 174
Points : 174
Je testerai cela demain ou ce week end.
Merci beaucoup a vous 2 de vos réponses.
morgan47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2007, 11h24   #5
Inactif
 
Avatar de Deallyra
 
Étudiant
Inscription : février 2007
Messages : 1 997
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 1 997
Points : 1 632
Points : 1 632
Mais de rien
Deallyra est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h05.


 
 
 
 
Partenaires

Hébergement Web