LISTAGE D'UNE REQUÊTE SUR PLUSIEURS PAGES

rekam Messages postés 122 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 10 mars 2011 - 10 sept. 2004 à 01:31
darth vador Messages postés 3 Date d'inscription jeudi 7 décembre 2006 Statut Membre Dernière intervention 27 juin 2008 - 26 juin 2008 à 22:00
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/25843-listage-d-une-requete-sur-plusieurs-pages

darth vador Messages postés 3 Date d'inscription jeudi 7 décembre 2006 Statut Membre Dernière intervention 27 juin 2008
26 juin 2008 à 22:00
bonjour et merci pour ce script ;)
voila j'ai fait comme vous avez dit mais j'ai comme alexNunes des difficultés avec WHERE.
j'ai une erreur
mysql_num_rows(): supplied argument is not a valid MySQL result resource in E:\www\SiteBeatrice\gestionResultSQL.class.php on line 576

mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\www\SiteBeatrice\Catalogue.php on line 62

la ligne 62 du catalogue est while ($ln = mysql_fetch_array($rq))

j'ai testé de metre avec et sans where pour $sql = $rch->retourneSQLStrRch mais toujours la meme erreur.

avez vous une idée?

merci d'avance.
rekam Messages postés 122 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 10 mars 2011
22 août 2006 à 10:19
Salut,

essaie sans mettre le WHERE, soit :
$sql = $rch->retourneSQLStrRch($nbInstances, $pageCourante, array("*"), array("membres"), "cat=equipe", "ORDER BY nom ASC");

ça devrait fonctionner!
A+
cs_alexNunes Messages postés 1 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 5 janvier 2006
5 janv. 2006 à 21:20
Bonjour,
j'ai quelques difficulté à configurer la clause WHERE dans votre code,en fait ça ne fonctionne pas, je n'ai peux-être pas la bonne syntaxe?
pouvez-vous m'aider la dessus.

voici ce que j'ai écrit:
$sql = $rch->retourneSQLStrRch($nbInstances, $pageCourante, array("*"), array("membres"), "WHERE cat=equipe", "ORDER BY nom ASC");

merci

Alex
rekam Messages postés 122 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 10 mars 2011
28 oct. 2005 à 14:27
si tu connais Smarty (une librairie de génération de template pour php), tu y trouveras qqpart ton bonheur, puisque je sais qu'il utilise le cache. Par contre , je ne sais pas comment :P ....

Sinon, tu peux utiliser les $_SESSION . C'est un peu la magouille, mais en fait, même pas vraiment. Enfin bref, bonne chance, quoi ;)
thebinch Messages postés 3 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 28 octobre 2005
28 oct. 2005 à 14:25
Ah oui j'oubliais, si quelqu'un connait une classe qui gere ma problematique de cache, je suis prenneur...

a+
rekam Messages postés 122 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 10 mars 2011
28 oct. 2005 à 14:24
salut,

bonne idée le cache. Dans mon cas, c'est vrai que j'en avais pas besoin, vu que la bd est très (très très) souvent modifiée et que par conséquent, ça vaut la peine d'avoir une liste qui se rafraichit tout le temps. Là où j'ai fait une erreur, c'est que je n'aurais pas du utiliser LIMIT mais plutot BETWEEN. Il paraît que ce dernier est plus performant.

Mais bref, au plaisir :)
thebinch Messages postés 3 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 28 octobre 2005
28 oct. 2005 à 14:20
Bonjour,

la classe fonctionne bien, dommage qu'au changement de page on re-interroge la base. Son interet est donc limite a la gestion de la pagination. Je vais m'orienter pour mes dev vers un systeme de cache

Merci/a+

http://www.bozonnet.com
rekam Messages postés 122 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 10 mars 2011
8 août 2005 à 08:41
Salut
A priori, ça devrait être jouable. J'ai pas testé mais essaie ça. Prend l'exemple 1 fourni avec la source et remplace cette ligne:

$sql = $rch->retourneSQLStrRch($nbInstances, $pageCourante, array("*"), array("persos"), "", "");

par ceci :

$sql = $rch->retourneSQLStrRch($nbInstances, $pageCourante, array("*"), array("cv"), "1=1", $suite);

où $suite correspond UNIQUEMENT à ce qui suit la clause WHERE.

Normalement, ça te sortira la même chose en gérant les LIMIT et le nombre de pages et tout. Maintenant, est-ce que $recherche vient d'un champ dans lequel on insère un mot ? Si oui, y'a peut-être encore une autre solution mais celle-là peut fonctionner.

Voilà, a+
airben Messages postés 11 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 6 août 2005
6 août 2005 à 16:21
Bonjour

Pouvez-vous me dire s'il vous plait si cette requete peu marché avec votre srcipt.
Si non qu'est ce que je doid modifié pour que sa marche avec votre script .MERCI bien


$requete = "SELECT *
FROM cv WHERE 1 = 1 AND";


if (!empty($recherche)) {
$requete .= " MATCH ( ref, titre, nom, code, ville, fonction, region1, nom_entr1, prec_ent, nom_entr2 )
AGAINST ( '$recherche' IN BOOLEAN MODE )";
}

if (!empty($fonction)) {
$requete ." AND fonction '".$fonction."'";
}

if (!empty($ann_exp)) {
$requete ." AND ann_exp '".$ann_exp."'";
}


if (!empty($niveau)) {
$requete ." AND niveau '".$niveau."'";
}

if (!empty($region1)) {
$requete ." AND region1 '".$region1."'";
}


if (!empty($mobil)) {
$requete ." AND mobil '".$mobil."'";
}

if (!empty($critere)) {
$requete ." AND critere '".$critere."'";
}
cs_sampiero Messages postés 5 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 11 mai 2008
18 juin 2005 à 08:18
Bonjour,

merci pour cette réponse ultra rapide.
rekam Messages postés 122 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 10 mars 2011
17 juin 2005 à 22:28
Salut,
Regarde bien l'exemple que je fourni plus haut. Tu trouveras cette ligne :

$sql = $rch->retourneSQLStrRch($nbInstances, $pageCourante, array("*"), array("persos"), "", "");

Le premier array() contient le/les champs, le 2e array() contient la/les tables (voir les commentaires correspondants dans l'exemple). En esperant que ça ait pu t'aider un peu. Ah oui, et au tout debut, tu as un include('connect.inc.php'); Ceci signinfie que tu dois avoir un fichier qui s'appelle connect.inc.php et qui contient les donnees de connection a la bd, genre :
<?php
$dbhost = "localhost";
$dblogin = "root";
$dbpassword = "";
$dbname = "le-nom-de-ta-bd";

$connect = mysql_connect($dbhost,$dblogin,$dbpassword);
$db = mysql_select_db($dbname);
?>

Au plaisir
cs_sampiero Messages postés 5 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 11 mai 2008
17 juin 2005 à 18:24
Bonjour,

J'ai vraiment apprécié votre code. Mais je suis débutant en programmation, je n'ai pas trouvé le moyen de choisir la table ni les noms des champs.

Merci de venir à mon secours.
rekam Messages postés 122 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 10 mars 2011
10 sept. 2004 à 01:31
Euh...merci pour la note, mais en fait, j'aurais bien voulu savoir s'il y avait des choses à améliorer ou à changer.

Genre, pour la liste des pages, on peut l'afficher comme ceci :
Page 1|2|3|4|5
ou comme ceci
Résultats 1 à 15 / 16 à 30 / 31 à 42

Y'a peut-être d'autres moyens d'afficher les pages que cette classe ne prend pas en compte. Chai pas, celles et ceusses qui affichent des listes, vous faites comment quand vous avez plusieurs pages ?
Rejoignez-nous