Se connecter / S'enregistrer
Votre question

Probleme livre or php/mysql

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
30 Août 2009 12:12:49

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
  1. for ($i = 0; $i == $nombre_de_message_par_page ; $i++)

je met
  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 :

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


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

Autres pages sur : probleme livre php mysql

30 Août 2009 12:58:33

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

  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 :
  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 :
  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).
m
0
l
30 Août 2009 17:45:52

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 .
m
0
l
Contenus similaires
30 Août 2009 18:02:23

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.
m
0
l
30 Août 2009 18:07:59

tres bien, merci beaucoup
m
0
l
30 Août 2009 23:41:03

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_d%27indentation#Styles_d.27indentation_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-3-14547-tp-un-livre-...
m
0
l
30 Août 2009 23:50:30

le php je l'ai appris sur le site su zero pourquoi ?
m
0
l
30 Août 2009 23:50:56

le php je l'ai appris sur le site su zero
m
0
l
30 Août 2009 23:52:22

il est pas bien mon php ? en meme temps sa fait meme pas 1 mois que j'ai commencé le php ...
m
0
l
31 Août 2009 00:30:15

wahhh a dit :
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.
m
0
l
31 Août 2009 08:08:35

Sincèrement, il est pas si mal que ça ... il est de la qualité d'une personne apprenant sur le site du zero ... :) 
m
0
l
31 Août 2009 10:50:45

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
m
0
l
31 Août 2009 11:37:11

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.
m
0
l
31 Août 2009 14:42:52

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€.
m
0
l
31 Août 2009 15:59:20

Qu'est-ce que tu appelles un bon site pour apprendre le PHP ? Je trouve très clair le SdZ.
m
0
l
31 Août 2009 16:02:23

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.
m
0
l
31 Août 2009 16:55:48

SiM07 a dit :
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.
m
0
l
31 Août 2009 17:08:53

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 ...
m
0
l
31 Août 2009 22:44:44

SiM07 a dit :
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.
m
0
l
31 Août 2009 22:50:36

Je ferais quelques topic prochainement ;) 
m
0
l
1 Septembre 2009 12:17:48

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 ?
m
0
l
1 Septembre 2009 12:31:52

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à.
m
0
l
1 Septembre 2009 12:41:28

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
m
0
l
1 Septembre 2009 13:51:11

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.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS