dElwinn
Messages postés10Date d'inscriptionjeudi 10 novembre 2011StatutMembreDernière intervention27 avril 2012
-
23 nov. 2011 à 10:42
dElwinn
Messages postés10Date d'inscriptionjeudi 10 novembre 2011StatutMembreDernière intervention27 avril 2012
-
25 nov. 2011 à 09:54
Bonjour à tous !
Je suis débutante à php et je me forme sur un site (qui tourne en local) d'annonces immobilières. J'ai un problème de pagination, il y a sans aucun doute une ou plusieurs erreurs dans mon code que je ne vois pas... Si quelqu'un pouvait jeter un oeil à mon code et me donner son avis, cela m'aiderait beaucoup car je bloque sur ce problème depuis plusieurs jours... en fait maintenant je ne sais plus par quel bout prendre le problème.
Désolée je sais que cette question a été posée 1000 fois mais je n'y arrive pas...
Voici mon code :
<?php
//connexion
$liaison = mysql_connect("localhost","root","") or die("erreur de connexion au serveur $host");
mysql_select_db("century21");
//Récupération le contenu de la requête dans $req1
$req1 = mysql_query('SELECT COUNT(*) AS total FROM annonce');
//On range retour sous la forme d'un tableau.
$donnees_total=mysql_fetch_assoc($req1);
//On récupère le total pour le placer dans la variable total.
$total=$donnees_total['total'];
//Nous allons afficher 5 messages par page.
$messagesParPage=5;
//Nous allons maintenant compter le nombre de pages et en faire un chiffre rond.
$nombreDePages=ceil($total/$messagesParPage);
// Si la variable $_GET['page'] existe...
if(isset($_GET['page']))
{
$pageActuelle=intval($_GET['page']);
// Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
if($pageActuelle>$nombreDePages)
{
$pageActuelle=$nombreDePages;
}
}
else
{
// La page actuelle est la n°1
$pageActuelle=1;
}
// On calcule la première entrée à lire
$premiereEntree=($pageActuelle-1)*$messagesParPage;
// requete de sélection de toutes les annonces 'Vente' classé de manière décroissante
$req2 = mysql_query('SELECT * FROM annonce WHERE annonce_le_type!="Location" ORDER BY id DESC LIMIT '.$premiereEntree.','.$messagesParPage.'');
$annonces = mysql_query($req2);
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 23 nov. 2011 à 21:26
Salut,
Une chose capitale pour apprendre a programmer est de savoir lire. Parce que je susi particulièrement de bonne humeur je vais te faire la lecture.
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in *** on line 179.
Ligne 179 tu as une fonction mysql_fetch_assoc() qui attend une ressource mysql. À la place de lui passer uen ressource tu lui as passé un bool, ce qui a généré le warning. Bien que tu n'ai fourni qu'un extrait de code on peux facilement retrouver la ligne fautive sans son numéro :
Donc $annonces est un bool (certainement false). Alors on regarde le dernier moment où on lui assigne une valeur :
$req2 = mysql_query('SELECT * FROM annonce WHERE annonce_le_type!="Location" ORDER BY id DESC LIMIT '.$premiereEntree.','.$messagesParPage.'');
$annonces = mysql_query($req2);
Tient, c'est donc mysql_query() qui nous a retourné un bool. Alors on regarde la documentation de mysql_query() et on se rend compte que :
- En temps normal, elle retourne bien uen ressource mysql.
- En cas d'erreur elle retourne false qui est un bool .
On en déduit qu'il y a donc eu une erreur lors de l'exécution de la requête.
Que faire ? Simple, afin de débuger ta requêtes tu as deux chsoes à faire :
- Afficher la requête elel même afin de la contrôler.
- Afficher l'erreur exacte à l'aide de mysql_error().
Et voila. Est-ce que c'était si dur que ça d'isoler l'erreur ? On s'est contenté de lire et réfléchir un minimum, aucune connaissance technique n'a été demandé, même quelqu'un ne connaissant pas ou très mal le php aurait pu le faire.
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 24 nov. 2011 à 23:48
Bonjour,
dElwinn, ne te fâches pas.
En général, une recherche fourni pas mal de piste, ensuite, pour diagnostiquer, rechercher la doc des fonctions et apprendre à lire cette documentation aide pas mal.
La lecture et la traduction des informations trouvées sur le net, sont une base de l'apprentissage de la programmation.
Dans un certain nombre de cas, il y a même pas besoin d'ouvrir un sujet, juste un peu de lecture permet d'apprendre par soi même.
Petite astuce, en PP, il y a print_r() et var_dump() te permettront de voir le contenu des variables et donc de pouvoir repérer la source d'un problème.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 24 nov. 2011 à 17:05
Je vais tacher aussi d'apprendre à lire, pour ne plus jamais devoir faire appel à des gens aussi prétentieux et méprisants que toi.
Ouf, et j'espère que d'autres vont faire de même. Rien que cette erreur là je la vois revenir très régulièrement, au bout d'un moment on commence a croire que les gens qui postent ça se foutent de notre gueule. Et oui, si on demande à google on trouve plus de 3 millions de résultats !
dElwinn
Messages postés10Date d'inscriptionjeudi 10 novembre 2011StatutMembreDernière intervention27 avril 20121 24 nov. 2011 à 17:26
Et oui, je sais bien que cette question a été posée des centaines de fois mais quand on apprend seul, la moindre expression de langage, la moindre erreur sql ou autre et la moindre explication à cette erreur peuvent être déroutantes. Il n'y a rien de mieux qu'une explication au cas par cas et, à la base, c'était un privilège pour moi que quelqu'un comme toi me conseille.
Alors désolée de faire partie de la foule d'ignares que tu te tapes.
dElwinn
Messages postés10Date d'inscriptionjeudi 10 novembre 2011StatutMembreDernière intervention27 avril 20121 25 nov. 2011 à 09:54
Bonjour NHenry,
C'est juste que je n'accepte plus qu'on me fasse/dise ce que je ne me permettrais pas de faire/dire... bref. Aujourd'hui on t'agresse partout, dehors, en voiture, sur le net, au travail... On peut remettre les gens à leur place poliment, comme tu viens de le faire par exemple.
Merci pour ces tuyaux ! , tu as raison :
La lecture et la traduction des informations trouvées sur le net, sont une base de l'apprentissage de la programmation.
J'y travaille, et ne poserai plus de question sur un sujet déjà traité. Bonne continuation !