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 18/10/2006, 10h38   #1
Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 41
Points : 41
Par défaut [SQL] Affichage d'une requete SQL

Bonjour à tous,

Voila, j'ai un petit souci.

J'arrive à afficher les données que d'une table

Voici la requete :

Code :
1
2
3
4
5
6
7
8
9
10
 
function charg_profil_utilisateur() {
 
$sql = mysql_query("SELECT * FROM utilisateurs,datas 
WHERE id_utilisateurs = '$id_utilisateurs' 
AND id_utilisateurs = '$id_datas'
");
 
return mysql_fetch_array($sql);
}
La ligne suivante permets l'affichage du prénom dans la table utilisateurs sans problème.

Code :
1
2
3
4
 
<?php
echo stripslashes($_SESSION['utilisateur']['prenom']); 
?>
Mais lorsque je veux récupérer à l'aide du meme principe les données de la tables datas, cela ne m'affiche rien et je ne comprends pas pourquoi.

Si quelqu'un aurait une petite idée à ce sujet
djinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 11h32   #2
Inscrit
 
Avatar de is_null
 
Inscription : octobre 2006
Messages : 637
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 637
Points : 690
Points : 690
Citation:
Envoyé par djinko
Bonjour à tous,

Voila, j'ai un petit souci.

J'arrive à afficher les données que d'une table

Voici la requete :

Code :
1
2
3
4
5
6
7
8
9
10
 
function charg_profil_utilisateur() {
 
$sql = mysql_query("SELECT * FROM utilisateurs,datas 
WHERE id_utilisateurs = '$id_utilisateurs' 
AND id_utilisateurs = '$id_datas'
");
 
return mysql_fetch_array($sql);
}
La ligne suivante permets l'affichage du prénom dans la table utilisateurs sans problème.

Code :
1
2
3
4
 
<?php
echo stripslashes($_SESSION['utilisateur']['prenom']); 
?>
Mais lorsque je veux récupérer à l'aide du meme principe les données de la tables datas, cela ne m'affiche rien et je ne comprends pas pourquoi.

Si quelqu'un aurait une petite idée à ce sujet
Ne faudrait-il pas faire faire une jointure ? Quelle est la relation entre les deux tables ?
is_null est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 12h18   #3
Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 41
Points : 41
Une jointure, c'est à dire?

La relation entre les deux tables c'est que la table datas a les données de l'utilisateur.

J'aurai très bien pu tout mettre dans une seule et meme table et ca fonctionne très bien. Cependant, cela risque d'être assez lourd avec le temps, non?
djinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 12h41   #4
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Code PHP :
1
2
3
4
$sql = "SELECT* FROM datas  
LEFT JOIN utilisateurs  
ON datas.id_datas = utilisateurs.id_utilisateurs   
WHERE utilisateurs.id_utilisateurs = '$id_utilisateurs' ";



Dans ce cas tu récupères les données de datas qui coïncident avec l'utilisateur

a modifier/tester
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 14h28   #5
Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 41
Points : 41
Ah je vois maintenant, c'était une bonne idée mais cela ne change rien malheureusement

La page s'affiche toujours avec la table utilisateurs mais sans les datas

J'essai beaucoup de choses mais cela s'avère sans suite!

Je vais continuer de chercher...
djinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 14h40   #6
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Est tu sûr que tu as bien 1 enregistrement pour l' id_utilisateur que tu envoies ?

Ne devrais-tu pas passer l'id_utilisateur dans ta fonction en paramètres ?
(si ta fonction est déclarée avant de déclarer ta variable $id_utilisateur, cela ne peut pas marcher)

je ne vois pas le mysql_query dans ta fonction. Essaies ça :

Code PHP :
1
2
3
4
5
6
7
8
9
10
function charg_profil_utilisateur($id) {
$sql = "SELECT* FROM datas  
LEFT JOIN utilisateurs  
ON datas.id_datas = utilisateurs.id_utilisateurs   
WHERE utilisateurs.id_utilisateurs = '$id";
 
$result = mysql_query($sql);
 
return mysql_fetch_array($result);
}

avec un appel à ta fonction comme ceci ?

Code PHP :
$var = charg_profil_utilisateur($id_utilisateur);
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 16h02   #7
Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 41
Points : 41
Si elle y est, mais un peu plus bas...

Ca ne fonctionne toujours pas!

Je viens de penser que j'ai une page spécialement dédiée au fonctions, car je viens de virer la requete et cela m'affiche quand meme les informations de la table utilisateurs.

Je vais voir cela de plus près !
djinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2006, 16h24   #8
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
tu ne peux pas faire
Code :
return mysql_fetch_array($sql);
sans avoir fait le mysql_query AVANT .

Citation:
array mysql_fetch_array ( resource result , int result_type )
mysql_fetch_array retourne un tableau qui contient la ligne demandée dans le résultat result et déplace le pointeur de données interne d'un cran.


result
La ressource de résultat qui vient d'être évaluée. Ce résultat vient de l'appel à la fonction mysql_query .
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 05h12   #9
Inscrit
 
Avatar de is_null
 
Inscription : octobre 2006
Messages : 637
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 637
Points : 690
Points : 690
N'y a-t-il pas de champs id_utilisateurs dans la table data ? Je doutes qu'id_data soit la clef de relation ...
is_null est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 08h21   #10
Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 41
Points : 41
Non, il n'ya pas de champ id_utilisateurs pourquoi?

J'aurai du en rajouter un?
djinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 08h57   #11
Inscrit
 
Avatar de is_null
 
Inscription : octobre 2006
Messages : 637
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 637
Points : 690
Points : 690
C'est juste que j'ignore comment faire une requête "propre" sur deux tables differrentes n'ayant pas de clef de relation. Alors que j'ai compris que c'est votre but ...
is_null est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 10h12   #12
Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 41
Points : 41
Oui c'est exact

J'aimerai charger ces deux fonctions entre else et je ne sais pas comment faire, une idée?
Code :
1
2
3
4
5
 
else {
$frm = load_user_profile();
$frm = load_datas();
}
Car comme cela, ça ne fonctionne qu'à moitié, la seconde fonction s'affiche mais pas la premiere
djinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 10h39   #13
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Concatène, mon ami , concatène, bon sang !!

Code :
1
2
3
4
else {
$frm = load_user_profile();
$frm.= load_datas();
}
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 11h32   #14
Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 41
Points : 41
C'est vrai, mais je pensais qu'il y'avait autre chose car ça n'avait pas fonctionné auparavant (fatal error!)

Regarde

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
if (sizeof($HTTP_POST_VARS) > 0) {
$frm = $HTTP_POST_VARS;
..........
}
else {
$frm = load_user_profile();
$frm = load_datas();
}
function load_user_profile() {
 
$qid = mysql_query("SELECT * FROM utilisateurs
WHERE 
id_utilisateurs = '".$_SESSION['utilisateur']['id_utilisateurs']."'
");
 
return mysql_fetch_array($qid);
 
}
 
function load_datas(){
 
$qid = mysql_query("SELECT * FROM datas
WHERE 
id = '".$_SESSION['utilisateur']['id_utilisateurs']."'
");
 
return mysql_fetch_array($qid);
 
}
Comme cela, ça fonctionne mais en parti...

Cela ne m'affiche que les données de la table DATAS.

Lorsque je vire $frm = load_datas(); ce sont les infos utilisateurs qui s'affichent, dont c'est ok...

Mon problème est que lorsque je mets qu'une seule requete pour deux tables, rien ne s'affiche. Il est clair que cela serait bcp plus simple mais ça ne fonctionne pas. Donc j'ai testé avec deux requetes...
djinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 11h49   #15
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
et en déclarant tes fonctions AVANT de les appeller ?

avant :
Code :
1
2
3
4
5
6
7
8
if (sizeof($HTTP_POST_VARS) > 0) {
$frm = $HTTP_POST_VARS;
..........
}
else {
$frm = load_user_profile();
$frm.= load_datas();
}
en en concaténant ?
N1bus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 14h42   #16
Inscrit
 
Avatar de is_null
 
Inscription : octobre 2006
Messages : 637
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 637
Points : 690
Points : 690
Ne peut-on pas les déclarer après depuis PHP5 (même si ce genre de code ne serait pas à mon goût) ?
is_null est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 10h30   #17
Membre du Club
 
Inscription : mai 2004
Messages : 181
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 181
Points : 41
Points : 41
J'ai trouvé

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
$utilisateur = charge_infos_utilisateur();
$adresse = $utilisateur['adresse'];
.................................
 
function charge_infos_utilisateur() {
global $_SESSION;
 
$qid = mysql_query("SELECT * FROM utilisateurs,datas 
WHERE
email = '".addslashes($_SESSION['utilisateur']['email'])."'
AND
id_datas = '".addslashes($_SESSION['utilisateur']['id_utilisateurs'])."'
");
 
return mysql_fetch_array($qid);
 
}
J'ai mal à la tête mais au moins cela fonctionne !!!

Encore merci pour votre aide, surtout à toi "N1bus"

djinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2006, 12h58   #18
Rédacteur/Modérateur
 
Avatar de N1bus
 
Inscription : janvier 2003
Messages : 2 018
Détails du profil
Informations personnelles :
Âge : 47
Localisation : France, Charente Maritime (Poitou Charente)

Informations forums :
Inscription : janvier 2003
Messages : 2 018
Points : 1 992
Points : 1 992
Et oui !
J'avais pas percuté !
N1bus 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 17h41.


 
 
 
 
Partenaires

Hébergement Web