Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 09/02/2012, 11h23   #1
Invité de passage
 
Homme
Inscription : février 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2012
Messages : 7
Points : 2
Points : 2
Par défaut Récupérer le résultat Auto-join MySql en php

Bonjour à tous,

je souhaite réaliser un auto-join afin de trouver les "récidives".

Voici ma requête my_sql :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
            $query = "SELECT DISTINCT * FROM signalements as s1 
                inner join signalements as s2 
                on (s1.engin_menant = s2.engin_menant 
                or s1.engin_milieu = s2.engin_menant 
                or s1.engin_mene = s2.engin_menant 
                or s1.engin_menant = s2.engin_milieu 
                or s1.engin_milieu = s2.engin_milieu 
                or s1.engin_mene = s2.engin_milieu 
                or s1.engin_menant = s2.engin_mene 
                or s1.engin_mene = s2.engin_mene 
                or s1.engin_mene = s2.engin_mene) 
                and (s1.fct_globale = s2.fct_globale) 
                and TO_DAYS(NOW()) - TO_DAYS(s1.date_incident) <= 30 
                and TO_DAYS(NOW()) - TO_DAYS(s2.date_incident) <= 30 
                and s1.fct_globale !='' 
                and s1.id_signal < s2.id_signal ";
Qui fonctionne très bien et me donne dans phpmyadmin exactement ce que je souhaite (une ligne avec tous les champs des deux signalements concernés).

Cependant, je n'arrive pas à récupérer ensuite dans php les données. Plus précisément,

Code :
1
2
3
            while ($courant = mysql_fetch_assoc($result)){
                echo $courant['s1.id_signal'].$courant['s2.lieu_incident'];
            }
ne donne rien du tout et

Code :
1
2
3
            while ($courant = mysql_fetch_assoc($result)){
                echo $courant['id_signal'].$courant['lieu_incident'];
            }
donne les données du deuxième signalement.

Merci d'avance pour votre aide

Sébastien
Sébastien Guérémy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 11h41   #2
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
La 2eme façon est la bonne.
Il ne faut pas utiliser les alias dans php.

Est ce que tu n'aurais pas fait un autre $courant = mysql_fetch_assoc($result) avant ton while ?
__________________
Zend Certified Engineer PHP 5.3

« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 14h33   #3
Invité de passage
 
Homme
Inscription : février 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2012
Messages : 7
Points : 2
Points : 2
Non j'ai fait une seule boucle. Effectivement, on arrive à accéder aux données avec la deuxième méthode, mais que à celles du deuxième enregistrement, pas du premier...

En fait si j'ai

id_engin - Fonction - Date
rame 01 - Roue - 23/10/2012

et

id_engin - Fonction - Date
rame 02 - Roue - 24/10/2012,

la requête me rend le résultat

id_engin - Fonction - Date - id_engin - Fonction - Date
rame 01 - Roue - 23/10/2012 rame 02 - Roue - 24/10/2012,

et je ne peux pas accéder à la première date...
Sébastien Guérémy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 14h52   #4
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
Ahhh ça y est j'ai compris ton problème.

Il faut corriger ta requête et remplacer SELECT * par

Code SQL :
SELECT s1.id_signal AS id_signal_1, s2.id_signal AS id_signal_2, etc...

Et récupérer en php via l'alias : $courant['d_signal_1']
__________________
Zend Certified Engineer PHP 5.3

« Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 14h58   #5
Invité de passage
 
Homme
Inscription : février 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2012
Messages : 7
Points : 2
Points : 2
Merci beaucoup, ça marche nickel.

A+
Sébastien Guérémy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h03.


 
 
 
 
Partenaires

Hébergement Web