Tom's Guide > Forum > Programmation > Probleme livre or php/mysql

Probleme livre or php/mysql

Forum Programmation : Probleme livre or php/mysql

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Bonjour a tous
Je fais appelle a vous car j'ai besoin de votre aide. Je suis en train de creer un livre d'or mais je rencontre un probleme que je n'arrive pas a résoudre.
Lorsque les 20 messages sont affichés la page 1 (qui doit normalement se creer) n'apparait pas et je ne comprend pas pourquoi. En modifiant un peu, le probleme s'aggrave c'est a dire que lorsque a la place de

Code :
  1. for ($i = 0; $i == $nombre_de_message_par_page ; $i++)


je met

Code :
  1. for ($i = 0; $i <= $nombre_de_message_par_page ; $i++)


soit 20 page se creer soit des pages se creer mais de maniere pas logique ( au lieu d'avoir 123 j'ai 294)
j'ai essayer de chercher mes erreurs, je sais qu'il y en a et ou precisement (de la ligne 44 a la ligne 58)
mais je n'arrive pas a les resoudres ...je fais donc appelle a vous.
Dans l'attente d'une reponse de votre part, je vous dit merci.
Voici le script :

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
  3.   <head>
  4.       <title>Bienvenue sur le future site de momo-ben2A </title>
  5.       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  6.   </head>
  7.   <body>
  8.  
  9.     <?php
  10.      if (isset($_POST['pseudo']) AND isset($_POST['message']))
  11.      {
  12.      mysql_connect ('localhost', 'momo-ben2A', 'vegeta191090');
  13.      mysql_select_db ('entrainement');
  14.      
  15.      $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
  16.      $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
  17.      mysql_query ("INSERT INTO livreor VALUES ('', '$pseudo', '$message')" )or die (mysql_error());
  18.     mysql_close();
  19.     ?>
  20.     <?php
  21.     mysql_connect ('localhost', 'momo-ben2A', 'vegeta191090');
  22.     mysql_select_db ('entrainement');
  23.     $recup = mysql_query ("SELECT * FROM livreor ORDER BY id DESC LIMIT 0,20" ) or die (mysql_error());
  24.     while ($donnees = mysql_fetch_array($recup))
  25.     {
  26.     echo $donnees['pseudo'].' a dit : '.$donnees['message'].'<br/>';
  27.     }
  28.     mysql_close();
  29.     }
  30.     else
  31.     {
  32.     ?>
  33.     <form method="post" action="livreor.php">
  34.     <label for="pseudo">pseudo</label> : <input type="text" id="pseudo" name="pseudo" maxlength="15"/><br/>
  35.     <textarea name="message">Votre commentaire</textarea><br/>
  36.     <input type="submit" value="Valider"/><input type="reset" value="Effacer"/>
  37.     </form>
  38.     <?php
  39.     }
  40.     ?>
  41.     <?php
  42.     mysql_connect ('localhost', 'momo-ben2A', 'vegeta191090');
  43.     mysql_select_db ('entrainement');
  44.     $nombre_de_message_par_page = 20;
  45.     $nombre_de_message_total = mysql_query("SELECT id FROM livreor" );
  46.     $nombre_de_page = ceil($nombre_de_message_total/$nombre_de_message_par_page);
  47.     echo '<a href="livreor.php"> page initiale </a><br/>';
  48.     echo 'page : ';
  49.     for ($i = 0; $i == $nombre_de_message_par_page ; $i++)
  50. {
  51.   echo '<a href="livreor.php?page='.$i.'>'.$i.'</a>';
  52. }
  53. mysql_close();
  54. ?>
  55. </body>
  56. </html>



PS : je vous demande de ne pas me donner la solution directement mais de m'expliquer mes erreurs.
Merci de votre comprehension

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Des erreurs, oui mais quoi ?

Sinon il y a un truc que je comprend pas, tu créés un $_GET['page'] pour ta pagination, c'est bien sauf que dans ton code tu n'as rien derrière qui suit. Ce n'est pas un SELECT if FROM livreor qu'il faut faire, tu risques d'avoir de gros problème d'incohérence sinon. Il faut faire un SELECT COUNT(*) FROM livreor;

Sinon $nombre_de_message_total n'est pas le nombre de message mais une ressource sql. Le résultat est

Code :
  1. $nombre_de_message_total = mysql_fetch_row($nombre_de_message_total);
  2. $nombre_de_message_total = $nombre_de_message_total [0];



Pour connaitre la page tu fait un petit code genre :
if(is_numeric($_GET['page'])) $page=$_GET['page']
else $page=0;

Ensuite ta requête de sélection doit être :

Code :
  1. $sql = "SELECT pseudo, message FROM livreor ORDER BY id DESC LIMIT $page,20"


Il est toujours préférable de lister l'ensemble des champs que tu souhaites sélectionner en bannir le *

Dans le même genre d'erreur tu as ta requête d'insertion qui devrait être qqchose comme :

Code :
  1. $sql = "INSERT INTO livreor (pseudo, message) VALUES ('$pseudo', '$message')"



Sinon si un jour tu souhaites rajouter une colonne dans ta table alors ton code ne marchera plus sans être modifier ... Et au bout de plusieurs requête un peu partout dans le code cela devient invivable.

Sinon le code me semble relativement correct, même si 2 mysql_connect() c'est un peu bizarre, théoriquement dans du code, on ne doit jamais avoir 2 portions de code qui ont été copier/coller (bon ça c'est l'idéal et lorsqu'on est débutant c'est quasi impossible).

Répondre à SiM07

je ne connais pas cette fonction "is_numeric" pouvez vous m'expliquez a quoi elle sert et qu'elles sont le ou les paramètres a indiqué merci beaucoup .

Répondre à wahhh

C'est pas le principe de la documentation d'expliquer ça ?

is_numeric() sur php.net

En bref, tu lui passes n'importe quoi en paramètre (parfait donc pour une variable venant de $_GET, $8POST, $_SERVER ... qui sont non sécurisée et modifiable par l'utilisateur (oui $_SERVER)) et il te répond vrai ou faut.

Répondre à SiM07

C'est pas très très propre ça... Déjà, je te conseil de mettre une connexion pour toute la page (mysql_connect en tout en haut et mysql_close en tout en bas). Puis après, indente bien tes codes (http://fr.wikipedia.org/wiki/Style [...] ation_en_C). Et question peut être bête : pourquoi tu ne fais afficher les messages du livre d'or seulement si on en envoie un ? Tu te fatigues pour rien.
Où as-tu appris ton PHP ?
Et voici une page qui pourrais bien t'aider : http://www.siteduzero.com/tutoriel [...] -d-or.html


Message édité par G31 le 30-08-2009 à 23:44:46
------------------------------ DAS IST MEIN BLOG : ainablog.eu
Répondre à G31

le php je l'ai appris sur le site su zero pourquoi ?

Répondre à wahhh

le php je l'ai appris sur le site su zero

Répondre à wahhh

il est pas bien mon php ? en meme temps sa fait meme pas 1 mois que j'ai commencé le php ...

Répondre à wahhh

Bonjour,

Apprendre à faire un affichage page par page:
http://www.phpdebutant.org/article84.php

------------------------------ Rémunère ton site
Hosting Favicon
Clic pas ici
Répondre à Allstar27

wahhh a écrit :

il est pas bien mon php ? en meme temps sa fait meme pas 1 mois que j'ai commencé le php ...


Pour tout te dire, il n'est pas terrible. Parce que moi aussi ça fait pas plus de 2 mois que je l'ai commencé, tu peux déjà voir un site à mon nom. (myhorse.fr.nf) Il faudrait que tu suives les conseils de Mateo sur SdZ et le miens que j'ai donnés plus haut, tu sauveras tes codes d'un bon nombre d'erreurs, tu verras.

------------------------------ DAS IST MEIN BLOG : ainablog.eu
Répondre à G31

Sincèrement, il est pas si mal que ça ... il est de la qualité d'une personne apprenant sur le site du zero ... :)

Répondre à SiM07

en même temps je trouve cela normal qu'il y ait un peu le foutoire je suis seul et je ne reçois aucune aide sauf sur les forums de toute maniere cette année je rentre en bts je pense que sa ira bcp mieux apres pour tout tout ce qui est script, le SDZ et super genial je m'en sert tout le temps mais il 'y a pas l'aide que j'attend (des explications personnalisées) mais sa sera reglera a la rentrée sa. en tout cas je vous remercie a tous pour le soutient que vous m'apportez a chaque fois que je post ici. Ici les reponses sont bien expliqués et sont serieuses. Perso je n'ose plus trop posté sur le SDZ, on m'allume a la premiere occasion lorsque je dit une erreur. L'erreur est humaine apres tout, pourquoi on me bombarde alors ? sa je ne sais pas et apres tout c'est en faisant des erreurs qu'on apprend

Répondre à wahhh

En même temps je ne le répèterais jamais assez ici, le SDZ est un très mauvais site pour apprendre le PHP, mais est très bien pour le xHTML/CSS.

Répondre à SiM07

Si tu le dis, j'ai le choix entre tout ça ou payer 15 000 €. T'as choisi quoi, toi ?


Message édité par G31 le 31-08-2009 à 11:45:49
------------------------------ DAS IST MEIN BLOG : ainablog.eu
Répondre à G31

Apprendre-PHP est un très bon site une fois qu'on a des petites bases, perso j'ai tendance à beaucoup apprécié lephpfacile même si il y a quelques points moyens dans les cours (genre les or die() ou les requête sql INSERT INTO toto VALUES).

Sinon il y a le bouquin PHP5 avancé qui est comme son nom de l'indique pas aussi pour les débutant et est une très bonne bible à 50€.

Répondre à SiM07

Qu'est-ce que tu appelles un bon site pour apprendre le PHP ? Je trouve très clair le SdZ.

------------------------------ DAS IST MEIN BLOG : ainablog.eu
Répondre à G31

Il est assez pédagogique mais pousse à un grand nombre de mauvaise pratique. Il se concentre que sur ce qui est visible et absolument pas sur des points très important comme la sécurité, gérer les erreurs, les validations du contenu etc ... Résultat on retrouve des sites passoires.

Et c'est souvent ces gens qui codent qui sont là à dire, utiliser Firefox, IE n'est pas sécurisé ! Pourtant la plus grosse faille de sécu c'est eux.

Répondre à SiM07

SiM07 a écrit :

Il est assez pédagogique mais pousse à un grand nombre de mauvaise pratique. Il se concentre que sur ce qui est visible et absolument pas sur des points très important comme la sécurité, gérer les erreurs, les validations du contenu etc ... Résultat on retrouve des sites passoires.

Et c'est souvent ces gens qui codent qui sont là à dire, utiliser Firefox, IE n'est pas sécurisé ! Pourtant la plus grosse faille de sécu c'est eux.


Pourtant, j'ai appris à sécuriser. J'avoue, mon site est optimisé pour Firefox, c'est le HTML/CSS qui ne s'affiche pas complètement sur les autres navigateurs (et je préfère firefox :ange:), mais si mon site n'était fais que de PHP, il serait très bien sécurisé aussi. Je dis tout ça sachant que j'ai appris le HTML, le CSS et le PHP sur SdZ.

------------------------------ DAS IST MEIN BLOG : ainablog.eu
Répondre à G31

Je parle sécurité, genre attaque XSS, XSRF, régénération des session_id etc ... Ton site peut être complètement laid, ne passer que sur un seul navigateur mais dans tous les cas il doit être sécurisé.

Ne pas apprendre dès le début à une personne qu'on ne stock pas en clair des mots de passe, qu'on sale le mot de passe avant de le passer dans une fonction de hachage, ça c'est prudent.

Après je ne sais pas si on peut dire qu'une personne qui dans sa 404 à je ne sais combien de balise <html> ouvrant et de déclaration de DOCTYPE connaisse le HTML ...

Répondre à SiM07

SiM07 a écrit :

Je parle sécurité, genre attaque XSS, XSRF, régénération des session_id etc ... Ton site peut être complètement laid, ne passer que sur un seul navigateur mais dans tous les cas il doit être sécurisé.

Ne pas apprendre dès le début à une personne qu'on ne stock pas en clair des mots de passe, qu'on sale le mot de passe avant de le passer dans une fonction de hachage, ça c'est prudent.

Après je ne sais pas si on peut dire qu'une personne qui dans sa 404 à je ne sais combien de balise <html> ouvrant et de déclaration de DOCTYPE connaisse le HTML ...


OK. T'as raison pour les mots de passe, on a du me l'expliquer sur le forum du SdZ. Et t'as raison aussi pour le premier paragraphe, c'est tout à fait inconnu pour moi. Un petit cours s'impose.

------------------------------ DAS IST MEIN BLOG : ainablog.eu
Répondre à G31

Je ferais quelques topic prochainement ;)

Répondre à SiM07

en parlant de securité j'ai appris a faire des fichiers .htaccess et .htpasswd mon probleme et que pour ce qui est de montrer le chemin de .htpasswd dans .htaccess je suis vraiment limité, je m'explique, je veux mettre mes 2 fichiers sur le disque dur, mais je ne peux pas car quand je clique sur le fichier qui permet de donner le chemin du fichier dans lequel il est situé (disque dur), sa ne marche pas, la seul maniere que j'ai trouvé et de mettre le fichier dans le repertoire de wamp et ainsi il m'indique le chemin du fichier de serveur. Si je sors le fichier du repertoir wamp, cela ne marche pas je suis donc obliger de mettre mes 2 fichiers dans le repertoire .
Vous pouvez m'aider a résoudre ce probleme ?

Répondre à wahhh

Bah c'est tout à fait logique ... le .htaccess est une surcouche de configuration Apache. Si tu mets le fichier ailleurs que dans un répertoire "mappé" par apache alors ça ne marche plus.

Par défaut, sur un système type debian le répertoire par défaut est /var/www/ c'est donc le répertoire le plus bas ou tu peu placer un fichier .htaccess quis'appliquera ensuite à toute la branche à partir de là.

Répondre à SiM07

il y a pas moyen de le mettre sur le disque dur ? avec un serveur ftp par exemple ... je dit sa mais mais bon je connais pas trop

Répondre à wahhh

Ah bah non ! Après tu peux configurer ton serveur ftp pour qu'il ai un rayon d'action limité en fonction des utilisateurs etc. le .htaccess est je le répète spécifique au serveur Apache httpd (à ne pas confondre avec mon avatar par exemple).

Pour le disque dur, une majorité des systèmes de fichier permettent de gérer les droits. Sous Windows le NTFS le permet. Sous Unix like c'est très simple.

Répondre à SiM07
Tom's Guide > Forum > Programmation > Probleme livre or php/mysql
Aller à :

Il y a 2296 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Liens