joboy84 Posté 4 Décembre 2008 Posté 4 Décembre 2008 Bonjour, Je suis face à un dilemme...Je dois utiliser une jointure pour le première fois et je n'y parviens pas. Je souhaite mettre en place un système de pagination. J'ai les données à extraire dans la table ListeApercuJeux, et je souhaite afficher les données en les classant par note. En effet, mes membres peuvent noter des sites de jeux. Je souhaiterai donc afficher en premier, les sites ayant obtenus la meilleure note. Voici la structure de mes tables: CREATE TABLE IF NOT EXISTS `ListeApercuJeux` ( `NomSiteJeux` varchar(20) character set latin1 collate latin1_general_ci NOT NULL, `DescriCourte` varchar(300) character set latin1 collate latin1_general_ci default NULL, `LienHttp` varchar(110) character set latin1 collate latin1_general_ci default NULL, `LienImg` varchar(90) character set latin1 collate latin1_general_ci default NULL, `DateInsertion` date NOT NULL default '0000-00-00', `Sponsor` varchar(20) character set latin1 collate latin1_general_ci default NULL, `Statut` varchar(9) character set latin1 collate latin1_general_ci default NULL, PRIMARY KEY (`NomSiteJeux`)) ENGINE=MyISAM;CREATE TABLE IF NOT EXISTS `SystemeDeVote` ( `NomSiteJeux` varchar(20) NOT NULL, `nbre_de_votes` int(9) NOT NULL default '0', `nbre_total_points` int(9) NOT NULL default '0', `moyenne` float NOT NULL, PRIMARY KEY (`NomSiteJeux`)) ENGINE=MyISAM; La note est contenue dans le champ moyenne de la table SystemeDeVote. Je pense que la jointure doit se faire avec le champ NomSiteJeux qui contient le nom du site de jeux... <?php$calcul_nbre_enregis = mysql_query('SELECT COUNT(*) AS total FROM listejeux'); $donnees = mysql_fetch_assoc($calcul_nbre_enregis);$nbre_total = $donnees['total']; // => contient le nombre d enregistrements//Nombre de résultats à afficher par page$nombre = 4;//Nous allons maintenant compter le nombre de pages à générer.$nombreDePages=ceil($nbre_total/$nombre);// On calcul la première entrée à lire$premiereEntree=($pageActuelle-1)*$nombre; // La requête sql pour récupérer les messages de la page actuelle.$liste_pagination = mysql_query('SELECT NomSiteJeux, DescriCourte, LienHttp, LienImg FROM ListeApercuJeux ORDER BY moyenne DESC LIMIT '.$premiereEntree.', '.$nombre.'');?> Je sais que ma requête ci-dessus est erronée. Je ne m'en sort pas avec left join, inner join... J'ai fait la chose suivante: <?php// La requête sql pour récupérer les messages$retour_messages=mysql_query('SELECT ListeApercuJeux.NomSiteJeux, ListeApercuJeux.DescriCourte, ListeApercuJeux.LienHttp, ListeApercuJeux.LienHttp, ListeApercuJeux.LienImg, SystemeDeVote.moyenne WHERE ListeApercuJeux.NomSiteJeux = SystemeDeVote.NomSiteJeux ORDER BY SystemeDeVote.moyenne DESC LIMIT '.$premiereEntree.', '.$nombre.'');while($donnees_messages=mysql_fetch_assoc($retour_messages)) ?> Je ne sais pas si c'est bien fait ainsi...mais j'ai un message d'erreur: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource... Svp aidez moi, je désespère!
Kioob Posté 4 Décembre 2008 Posté 4 Décembre 2008 Hello, 1) avant de faire ton mysql_fetch_assoc() tu devrais tester le résultat de mysql_query() et afficher les erreurs MySQL 2) cela t'aurait permis de voir que as oublié de mettre un FROM dans ta requête.
joboy84 Posté 4 Décembre 2008 Auteur Posté 4 Décembre 2008 (modifié) Effectivement Merci encore Modifié 4 Décembre 2008 par joboy84
ornythorink Posté 14 Février 2009 Posté 14 Février 2009 Il me semble que l'autre problème c'est que tu n'échappes pas tes requêtes elles sont donc vulnérables aux attaques, d'autant que tu donnes ton code complet, bon le hub est bien fréquenté mais quand même...
Kioob Posté 14 Février 2009 Posté 14 Février 2009 Dans les exemples ci dessus je ne vois aucune variable à échapper.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant