requette sur plusieurs tables

Eléphant du PHP | 119 Messages

09 janv. 2011, 13:06

bon en faite j'avais glissé une erreur qui est corrigée.

par contre voila en faite le shema que je voudrais.

j'ai 3 tables : whoisonline qui recupere mon ip lorsque que je me connect
users_sessions qui recupere mon ip et id
user_profil qui stock mon nom et prenom et id

mais lorsque que je me connect il n'y a que users_session qui affiche une ligne supplémentaire.

ce que je voudrais faire :

que woisline/cIpName soit egale a users_sessions/IP qui soit egale a users_sessions /id pour afficher user_profil/name et firstname

quand je fait :
Code :

Code : Tout sélectionner

$sql = "SELECT * FROM whoisonline as t_une, devolia_rsed_users_sessions as t_deux WHERE t_une.cIpName = t_deux.IP ";
j'ai inscrit "visiteur en ligne : 1 (ce qui correspond a mon id dans users_sessions)

quand je fait :
Code :

Code : Tout sélectionner

$sql = "SELECT * FROM whoisonline as t_une, devolia_rsed_users_sessions as t_deux WHERE t_une.cIpName = t_deux.id ";
j'ai inscrit "visiteur en ligne : 8 (ce qui correspond au nombre de ligne dans users_sessions)

donc mon objectif est d'afficher le nom et prenom (name et firstname) qui se trouve dans la troisieme table user_profil.

ViPHP
xTG
ViPHP | 7331 Messages

09 janv. 2011, 13:57

SELECT * FROM whoisonline  AS  t_une, devolia_rsed_users_sessions AS t_deux, user_profile AS t_trois  WHERE t_une.cIpName = t_deux.id AND t_deux.id = t_trois.id
Bah rajouter la dernière table comme pour la seconde. :)

Eléphant du PHP | 119 Messages

09 janv. 2011, 14:11

j'ai modifier mais erreur sql

Code : Tout sélectionner

$sql = "SELECT * FROM whoisonline as t_une JOIN devolia_rsed_users_sessions as t_deux, devolia_rsed_user_profil as t_trois ON t_une.cIpName AND t_deux.IP = t_trois.id WHERE t_une.cTimeName > UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MINUTE))";

ViPHP
xTG
ViPHP | 7331 Messages

09 janv. 2011, 14:36

Si tu utilises la syntaxe ANSI c'est pas ainsi qu'on fait une double jointure. :)
SELECT t_trois.nom, t_trois.prenom, t_une.ip
FROM  (whoisonline as  t_une INNER JOIN devolia_rsed_users_sessions as t_deux ON t_une.cIpName = t_deux.id) INNER JOIN devolia_rsed_user_profil as t_trois ON t_deux.id = t_trois.id 
WHERE t_une.cTimeName > UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MINUTE))
Voilà si je ne me suis pas trompé, je ne suis pas un grand adepte de cette façon de rédiger les requêtes alors bon... :/

Eléphant du PHP | 119 Messages

09 janv. 2011, 14:48

Parse error: syntax error, unexpected T_STRING in /public_html/grpminfo-site/face/devoliarsed-custom/themes/default/includes/php/getOnlinePeople.php on line 20
$sql = SELECT FROM  (whoisonline AS  t_une INNER JOIN devolia_rsed_users_sessions AS t_deux ON t_une.cIpName = t_deux.id) INNER JOIN devolia_rsed_user_profil AS t_trois ON t_deux.id = t_trois.id
WHERE t_une.cTimeName > UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MINUTE))
 
$result = mysql_query($sql);
$nbResult = mysql_num_rows($result);
echo 'visiteur en ligne: '.$nbResult;
ligne 20
$sql = SELECT FROM  (whoisonline AS  t_une INNER JOIN devolia_rsed_users_sessions AS t_deux ON t_une.cIpName = t_deux.id) INNER JOIN devolia_rsed_user_profil AS t_trois ON t_deux.id = t_trois.id

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 janv. 2011, 15:53

hum tu a mis ça comme ça ?

et ça te choque pas ? il manque pas quelque chose pour définir une chaine de caractère ?

Pour être le type string dans la doc ;)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 119 Messages

09 janv. 2011, 15:59

je me suis apercu de mon erreur et j'ai modifié comme cela
$sql = "SELECT t_trois.name, t_deux.IP, t_une.cIpName FROM (whoisonline AS  t_une INNER JOIN devolia_rsed_users_sessions AS t_deux ON t_une.cIpName = t_deux.id) INNER JOIN devolia_rsed_user_profil AS t_trois ON t_deux.id = t_trois.id
WHERE t_une.cTimeName > UNIX_TIMESTAMP(DATE_SUB(CURDATE(), INTERVAL 1 MINUTE))";
 
$result = mysql_query($sql);
$nbResult = mysql_num_rows($result);
echo 'visiteur en ligne: '.$nbResult;
mais le soucis c'est que ca m'indique 0 visiteur

http://fr-findshare.grpminfo.fr/devolia ... index1.php

ViPHP
xTG
ViPHP | 7331 Messages

09 janv. 2011, 16:04

C'est que la jointure se fait sur le mauvais champs alors. :)
Ou bien que la requête renvoie une erreur que tu n'interprète pas.
Essayes ceci :
$result = mysql_query($sql)or die(mysql_error());

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 janv. 2011, 16:05

heu ben moi je vois Parse error: syntax error, unexpected T_STRING in /p********/includes/php/getOnlinePeople.php on line 20

Pour ce qui est du résultat donne nous les schéma des tables (create table) que l'on puisse voir cela de plus pret :)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 119 Messages

09 janv. 2011, 16:06

j'ai pas de retour ...

http://fr-findshare.grpminfo.fr/devolia ... index1.php

en faite je croit qu'il ne veux pas ecrire de lettre mais que des chiffres .. tout a lh'eur je sais plus quelle champs j'avais mis et ca m'indiquais 8 visiteurs .. en fait c'est la position de mon uid .

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

09 janv. 2011, 18:06

je réitère ma demande
- Schéma des tables (create table)
- Explication claire des relations entre les tables
- ré explication simple de ce que tu souhaite (pour le cas ou :))

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 119 Messages

09 janv. 2011, 19:06

en faite je voudrais recuperer des infos sur une table mais c'est infos ne varie pas quand l'on se connect et ne sont pas en rapport avec les autre tables.

en image de table 1 a table 3

Image

Image

Image

donc en faite ce que je desire c'est afficher ne nom et prenom de la personne connecté.

ViPHP
xTG
ViPHP | 7331 Messages

09 janv. 2011, 19:16

Pour ce que j'en vois tu n'as aucun lien entre la table whosonline et les deux autres.
Tous les champs n'ont aucune concordance de type.
Comment veux-tu pouvoir les lier, ce n'est pas possible. :/

Eléphant du PHP | 119 Messages

09 janv. 2011, 19:18

bais oui c'est ce que je voit .. y a pas de solution ?

ViPHP
xTG
ViPHP | 7331 Messages

09 janv. 2011, 19:21

Comment faire le lien entre le chien de mon grand père et le chat de ma voisine ?
On utilise : Nombre de pattes ? Nombre de dents ? Ou peut être le nombre de narine ?
Hum je pense qu'on pourra chercher une solution pendant longtemps. :p

Il te faut l'id de la personne dans ta table whosisonline, sinon tu ne t'en sortiras pas.