8791 sujets

Développement web côté serveur, CMS

Bonsoir,

Etant "très" débutante en php je sollicite une aide pour créer une pagination en dans un livre d'or. je travaille dans une boite qui utilise son propre CMS, mon collègue étant débordé je souhaiterais avoir des infos... je me suis tournée vers le site Graphikart.fr et essayé de comprendre le code que j'essaye de mettre à la sauce de notre application mais j'ai toujours un message d'erreur.
je ne demande pas tout le code mais le début surtout pour les requêtes car elles sont différentes du tutoriel de graphikart, c'est un peu dommage de faire du copier sans trop en comprendre le sens, car j'essaye de m'autoformer au PHP mais c'est pas gagné..
Je vous joins le code en PJ et si quelqu'un pouvais m'expliquer par rapport au tutoriel de graphikart ça serait vraiment cool....

merci d'avance upload/32856-Capture.PNG
Modifié par tibinette (08 Jul 2011 - 16:00)
Alors je propose à ton boss d'embaucher des gens qui maitrisent un minimum leur domaine d'activité. Smiley smile

a écrit :

je travaille dans une boite qui utilise son propre CMS


J'aurais honte de vendre ce genre de code à des clients. CF le code que tu montres dans ta capture d'écran. Smiley rolleyes

Traduction : quand tes développeurs vont mater des tutos sur le blog d'un étudiant (avec tout le respect que j'ai pour M. Grafikart) pour fournir une solution à un client, il est grand temps de se remettre en question.
Modifié par jb_gfx (08 Jul 2011 - 10:01)
Sauf si ces développeurs en question sont des stagiaires....


Pour ton problème de pagination il y a deux façon d'aborder le problème.

- récupérer toutes les données et n'en afficher qu'une partie en fonction d'une variable "page". (usage de la fonction array_slice() )

- récupérer uniquement les données à afficher en usant de la directive LIMIT dans la requête SQL.

La seconde est bien évidement plus optimisé. ^^

Cela donnerait donc une requête du style :
SELECT * FROM table_name LIMIT $page * $nbParPage, $nbParPage
(À formater un minimum. Là je l'ai écris de façon schématique Smiley cligne )
Pour plus d'infos je te renvoie à la doc de MySQL : http://dev.mysql.com/doc/refman/5.0/fr/select.html
alors effectivement je ne suis ni stagiaire ni développeur, je ne suis que la graphiste mais j'essaye de m'intéresser au php, le code que j'ai posté provient de notre développeur, mais comme il n'a pas le temps de m'expliquer comment fonctionne le php et encore moins une pagination, j'essaye à mon temps libre de faire au mieux avec ce language, donc je n'y connais rien, mis à part quelques notions....
Malgré vos réponses, elles ne m'ont pas éclairé d'avantage faute de ne pas être développeur...
Pour faire simple j'ai fais une copie écran du tuto de graphikart et de mon code, la partie encadrée rouge correspond aux 2, jusque là tout va bien, c'est pour afficher les données sur le site, là où il y a une flèche je n'y arrive pas, il reprend les mêmes requêtes (à quelques détails près) et lorsqu'il fait print_r($data); ça affiche les données, or moi si je suis à peu près comme il fait ça n'affiche rien et une erreur se met du style

"Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in /usr/local/www/mediaan/psexy/livreor.php on line 15 "


moi je fais ça

$req= "SELECT COUNT(id) from tb_psexy_275 ";
$res=mysql_query($req);
$row=mysql_fetch_row($res);
print_r($row);
et là l'erreur se glisse,

je pense qu'un fois cette erreur passé, le reste devrait aller mais comme ça coince je peux rien faire d'autre....
merci encore pour votre aide upload/32856-code.jpg
L'erreur cité signifie que mysql_query() à renvoyée un booléen (certainement "false") au lieu d'une ressource.
(http://php.net/manual/fr/function.mysql-query.php)

On peu donc en déduire que la requête SQL est erronée.
Je t'invites donc à tester ta requête dans phpMyAdmin par exemple ou utiliser la fonction de gestion des erreurs SQL mysql_error().

Littéralement ta requête semble juste. Commences donc par vérifier si la table "tb_psexy_275" existe bien et si elle contient une colone "id".
Pour la requête count utilise, soit l'astérisque (*), soit 1, au lieu de nommer explicitement ton champ : dans ton cas id (ainsi tu laisses MySQL optimiser la requête au mieux). N'oublie pas ta clause where, elle doit être la même que celle de ta requête select, sinon tu n'aura pas le bon nombre de résultats : si tu comptes toutes les pommes et qu'à l'affichage tu n'affiches que les pommes vertes ça va pas marcher.

Et le mysql_error(), comme te l'a signalé moust, pour afficher les éventuelles erreurs.


$req = "SELECT COUNT(1) FROM tb_psexy_275 WHERE c5 = 'o'";
$res = mysql_query($req) or die(mysql_error());
$count = mysql_fetch_row($res);
echo $count[0];


Si avec ce code tu as une erreur, postes le message que te renvoi mysql_error().

PS : pour poster ton code sur le forum, c'est préférable que tu fasses un copier/coller en balisant ton code avec [ code]ton code ici[ /code] (il ne faut pas mettre les espaces) plutôt que des captures d'écrans. Ça évitera aux personnes qui veulent tester ou corriger ton code de tout ressaisir manuellement.
Modifié par jb_gfx (08 Jul 2011 - 15:44)
merci pour tout, dans mon code il fallait que je mette
$req= "SELECT COUNT(c0) from tb_psexy_275 ";
$res=mysql_query($req);
$row=mysql_fetch_row($res);
$nbArt= $row[0];

je vous remercie pour votre aide, vraiment le php quand on y connaît rien, c'est galère, heureusement y'en a pour qui c'est plus un secret!!!
thanks!!!