begin process at 2012 05 31 07:03:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

problème de pagination pour débutante


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème de pagination pour débutante

mercredi 23 novembre 2011 à 10:42:50 | problème de pagination pour débutante

dElwinn

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);

mysql_close($liaison);

$compteur=0;$dernier_id=0;

@$img_type = "";
@$annonce_id = ""; //annonce_id
@$la_ref = ""; //annonce_la_ref
@$la_transaction = ""; //annonce_le_type
@$le_bien = ""; //annonce_le_bien
@$le_dep = ""; //annonce_le_dpt
@$le_prix = ""; //annonce_le_prix
@$lactivite = ""; //annonce_lactivite

//Boucle
while(($annonce=mysql_fetch_assoc($annonces))!==false){

$annonce_id=$annonce["annonce_id"];
$la_ref=$annonce["annonce_la_ref"];
$la_transaction=$annonce["annonce_le_type"];
$le_bien=$annonce["annonce_le_bien"];
$le_dep=$annonce["annonce_le_dpt"];
$le_prix=$annonce["annonce_le_prix"];
$lactivite=$annonce["annonce_lactivite"];
$la_photo=$annonce["annonce_les_photos"];

$img_type = array();
$img_type[] = 'alimentaire.jpg';
$img_type[] = 'autre.jpg';
$img_type[] = 'bar.jpg';
$img_type[] = 'boutique.jpg';
$img_type[] = 'cafe-salon-de-the.jpg';
$img_type[] = 'hotel.jpg';
$img_type[] = 'pme.jpg';
$img_type[] = 'restaurant.jpg';
$img_type[] = 'restauration-rapide.jpg';
$img_type[] = 'services.jpg';
$img_type[] = 'tabac.jpg';

@$le_titre = $lactivite." - ".$le_dep." - ".$la_transaction." - ".$le_bien;

//echo $annonce_id;
echo("<table class='table_annonce' style='width:540px;' cellpadding='0' cellspacing='0'>");
echo("<tr><td class='titre_annonce' style='width:540px;height:20px;' colspan='3'><a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'>".$le_titre."</a></td></tr>");
echo("<tr><td style='width:180px;height:120px;' rowspan='3'>");

switch($lactivite)
{
case "Alimentaire":
echo("<a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'><img src='wp-content/themes/zeebusiness/img-type/alimentaire.jpg' alt='alimentaire' /></a>");
break;
case "Bar brasserie":
echo("<a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'><img src='wp-content/themes/zeebusiness/img-type/bar.jpg' alt='bar' /></a>");
break;
case "Commerce détail boutique":
echo("<a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'><img src='wp-content/themes/zeebusiness/img-type/boutique.jpg' alt='boutique' /></a>");
break;
case "Café hotel restaurant":
echo("<a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'><img src='wp-content/themes/zeebusiness/img-type/cafe-salon-de-the.jpg' alt='cafe-salon-de-the' /></a>");
break;
case "Hotel":
echo("<a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'><img src='wp-content/themes/zeebusiness/img-type/hotel.jpg' alt='cafe-salon-de-the' /></a>");
break;
case "Pme":
echo("<a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'><img src='wp-content/themes/zeebusiness/img-type/pme.jpg' alt='pme' /></a>");
break;
case "Restaurant":
echo("<a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'><img src='wp-content/themes/zeebusiness/img-type/restaurant.jpg' alt='restaurant' /></a>");
break;
case "Restauration rapide":
echo("<a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'><img src='wp-content/themes/zeebusiness/img-type/restauration-rapide.jpg' alt='restauration-rapide' /></a>");
break;
case "Services":
echo("<a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'><img src='wp-content/themes/zeebusiness/img-type/services.jpg' alt='services' /></a>");
break;
case "Tabac presse loto":
echo("<a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'><img src='wp-content/themes/zeebusiness/img-type/tabac.jpg' alt='tabac' /></a>");
break;
default:
echo("<a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'><img src='wp-content/themes/zeebusiness/img-type/autre.jpg' alt='autre activite' /></a>");
break;
}
echo("</td>");
echo("<td class='ref_annonce' style='width:180px;height:40px;'>Réf : ".$la_ref."</td>");
echo("<td class='prix_annonce' style='width:180px;height:40px;'>".$le_prix." euros </td></tr>");
echo("<td valign='top' style='width:360px;height:60px;' colspan='2'><ul><li>- Département ".$le_dep."</li>");
echo("<li>- Activité : ".$lactivite."</li>");
echo("<li>- Type de bien : ".$le_bien."</li>");
echo("<li>- ".$la_transaction."</li></ul></td></tr>");
echo("<td class='detail' style='width:360px;height:20px;' colspan='2'><a href='annonce-danton-immobilier?$annonce_id' target='_self' title='Détail de l annonce'>Détails</a></td></tr>");
echo("</table><br />&nbsp;");

$compteur++;
}
?>
mercredi 23 novembre 2011 à 17:15:12 | Re : problème de pagination pour débutante

dElwinn

J'ai oublié de préciser l'erreur générée...
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in *** on line 179.

Erreur affichée et répétée pour chaque annonce.
La ligne correspond à la boucle qui affiche toutes les annonces.

Voila, merci d'avance !
mercredi 23 novembre 2011 à 21:26:28 | Re : problème de pagination pour débutante

TychoBrahe

Réponse acceptée !
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 :
Code PHP :
while(($annonce=mysql_fetch_assoc($annonces))!==false){

Donc $annonces est un bool (certainement false). Alors on regarde le dernier moment où on lui assigne une valeur :
Code PHP :
$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.
jeudi 24 novembre 2011 à 16:48:30 | Re : problème de pagination pour débutante

dElwinn

Bonjour TychoBrahe,

Je te remercie de ta réponse, qui me donne une belle leçon de méthodologie. J'ai bien compris tes explications et vais les appliquer.

Je vais tacher aussi d'apprendre à lire, pour ne plus jamais devoir faire appel à des gens aussi prétentieux et méprisants que toi.
jeudi 24 novembre 2011 à 17:05:34 | Re : problème de pagination pour débutante

TychoBrahe

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 !
jeudi 24 novembre 2011 à 17:26:10 | Re : problème de pagination pour débutante

dElwinn

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.
jeudi 24 novembre 2011 à 23:48:04 | Re : problème de pagination pour débutante

NHenry

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
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.

---------------------------------------------------------------------
  1. 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
  2. Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
  3. 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.

---
Mon site
vendredi 25 novembre 2011 à 09:54:12 | Re : problème de pagination pour débutante

dElwinn

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 !



Cette discussion est classée dans : type, img, echo, jpg, annonce


Répondre à ce message

Sujets en rapport avec ce message

Le filtre ne fonctionne pas [ par Joleroy ] Salut a tous!J ai cree une page appelé Kits.php qu j appelle par Kit.php?tipekit=type_du_kitVoici son code:$type=$_GET['typekit'];$connect = mysql_con encore et toujours des pb !!! récuperer une variable à partir d'un lien [ par paulinett ] Bonjour,J'ai encore une question. J'ai créer un formulaire de recherche de machines (liste_machine.php) et j'ai mis un lien sur ma clé primaire : nom_ Problème de pagination [ par speedylol ] Bonjour , j 'ai une petit problème avec ma pagination , depuis que je l'est rajouté mais donnée qui son dans ma base ne son plus extraite et je vois p Probleme affichage de requete [ par chapata ] Slut à tous ...je boss depuis peu avec easyphp (mysql-php) et j'ai un probleme d'affichage de requete :Je n'arrive pas a exécuter celle-ci :je passe l Traitement de string [ par Teclis01 ] bonjour,alors en fait la réponse est peut etre toute bete mais je préfère la poser car pour le moment je suis incapable d'y répondre de maniere facile Expression régulière [ par longshot ] Voila, j'ai une chaine de caratère qui peut ce présenter de la manière suivante:$bodytag = 'p align="center"><<span cla salut comment faire le nombre de linge afficher sur le bas de tabeleau qui cahrger de puis une autre page [ par echibat ] voila ma page et merci d'avance Supprimer type="text/css">               <br / Insertion image blob dans mysql [ par amewole ] Je procède à l'upload d'images que j'insère dans ma base de données qui se passe bien sauf que la colonne qui contient l'image de type blob ( img_blob imagecreatefromjpeg [ par faustocoppi ] bonjour, je souhaiterais créer une miniature depuis une jpg uploadée via un formulaire et je n'arrive pas à la créer <?php //------------------- img src dans un echo " " [ par xzonz ] Salut à toutes et tous mon probleme est simple ... ohh pas grand chose voila le bout de code j'explique apres !! -------------------------------------


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,700 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales