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 12/06/2006, 10h18   #1
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Par défaut [SQL] Problème avec script de pagination et requête sql sur deux tables

Bonjour,

J'ai un problème avec un script de pagination, censé compter le nombre de pages de résultats pour une requête signifiant :
"Compte UNE FOIS les sujets pour lesquels le membre a posté au moins une réponse, A CONDITION que le sujet lui même n'ait pas été posté par le membre."

Comme je n'arrivais pas à faire la requête, j'ai fait cela :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$totalRep="SELECT 
sousCommentaire.idCom AS clef
FROM sousCommentaire
WHERE sousCommentaire.idMembre='".$numeroConnexion."'";
$resultat=mysql_query("$affiche");
while($R = mysql_fetch_array($resultat))
{
$tri="SELECT DISTINCT 
commentaire.id
FROM commentaire
WHERE commentaire.idMembre!='".$numeroConnexion."' 
AND commentaire.id='".$R[clef]."'"
$result = mysql_query("$tri") ;
$row = mysql_fetch_row($result);
...script de pagination
;}

Explication :
sujet = table commentaire
réponse = table sousCommentaire
idMembre= id du membre ayant posté le sujet ou la réponse
sousCommentaire.idCom=commentaire.id
Alors contrairement à toutes les autres requêtes que j'ai essayé, cette requête semble me renvoyer le bon résultat.
Par contre le $row semble ne pas tout récupérer, puisqu'il y a 13 sujets à compter, donc deux pages à afficher à raison de 10 résultats par pages.
Mais ça m'affiche les 10 premiers sur une seule page, point final, le script e pagination d'après ne fonctionne pas.
J'ai essayé de fermer la boucle while juste après le mysql_query, ça ne fonctionne pas non plus.

Bon voilà, je viens mander votre aide

**EDIT**
Par exemple avant, j'avais essayé ça comme requête, mais par contre là ça me renvoyait toute la liste des commentaires auxquels le membre avait participé même s'ils étaient initiés par lui.
Code :
1
2
3
4
5
6
SELECT DISTINCT 
commentaire.id
FROM sousCommentaire,commentaire
WHERE sousCommentaire.idMembre='".$numeroConnexion."' 
AND sousCommentaire.idCom=commentaire.id 
AND commentaire.idMembre != sousCcommentaire.idMembre'
Donc il s'agit soit de corriger le script php, soit peut être si vous savez le faire, de transformer les deux requêtes en une seule, auquel cas le script devrait bien fonctionner (le script de pagination est bon il fonctionne ailleurs).
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2006, 12h19   #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 :
1
2
3
4
5
6
SELECT  
commentaire.id
FROM commentaire,sousCommentaire
WHERE commentaire.id= sousCommentaire.idCom
AND commentaire.idMembre!='".$numeroConnexion."' 
AND sousCommentaire.idMembre='".$numeroConnexion."' group by commentaire.id
ca ca marche pas???
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2006, 12h46   #3
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Salut boo64 !

Non ça ne fonctionne pas

La condition suivante ne semble pas être prise en compte :
Code :
commentaire.idMembre!='".$numeroConnexion."'
ça me renvoit le même nombre de page que pour la requête "choisir tous les commentaire où idMembre=$numeroConnexion" .
Le script de pagination indique donc 3 pages alors qu'il ne devrait y en avoir que deux pour la requête souhaitée.

**edit**
C'est bizarre j'ai une autre requête qui dit va chercher les commentaires ou l'id est celui du membre
Code :
1
2
3
4
 
$totalRep="SELECT count(id) AS id
  FROM commentaire 
WHERE idMembre='".$numeroConnexion."'"
et bien cette requête ne fonctionne pas si je remplace count()id par distinct id, ça me fait une erreur mysql_fetch_row.

Et si c'était mysql_num_rows et pas mysql_fetch_rows ?
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2006, 14h06   #4
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
vous auriez pu voir que dans le script tout en haut la variable de mysql_query est pas celle de la requête...

M'enfin de toute façon ça fonctionne pas quand même.
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob 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 12h38.


 
 
 
 
Partenaires

Hébergement Web