Mon script de livre d'or plante

Mon script de livre d'or plante - PHP - Programmation

Marsh Posté le 13-10-2008 à 19:22:58    

Bien le bonjour à tous.
 
Je suis en ce moment en train de fabriquer un site Web, mais forcément, c'est en comptant des bémols, j'en ai eu pas mal, mais là, faudrait vraiment l'aide de quelqu'un qui s'y connaît.
 
Voici le passage de la page de code concernée (c'est le script du ivre d'or, quoi) :
 
 
 
       

Code :
  1. <div id="corps">
  2. <form method="post" action="livre.php">
  3. <p>Une critique ? Une suggestion ? Exposer tout ça içi !</p>
  4. <p>Pseudo :<input name="pseudo"/></p>
  5. <p>Message : <br/>
  6. <textarea name="message" id="description" rows="6" cols="50"></textarea>
  7. <input type="submit" value="Envoyer" />
  8. </p>
  9. </form>
  10. <p>
  11. <?php
  12. mysql_connect ("localhost", "root", "" );
  13. mysql_select_db ("localhost", "root", "" );
  14. if (isset ($_POST['pseudo']) AND isset ($_POST['message']))
  15. {
  16. $pseudo = mysql_real_escape_string(htmlspecialchars($_POST["pseudo"]));
  17. $message = mysql_real_escape_string(htmlspecialchars($_POST["message"]));
  18. $message = nbl2r($message);
  19. mysql_query = ("INSERT INTO livreor VALUES ("'', '" . $pseudo . "', '" . $message . "'" )" );
  20. }
  21. $nombreDeMessagesParPages = 20;
  22. $retour = mysql_query = ('SELECT COUNT (*) AS nb_messages FROM livreor');
  23. $donnees = mysql_fetch_array($retour); $totalDesMessages = $donnees['nb_messages'];
  24. $nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPages);
  25. echo ("Page :" );
  26. for ($i = 1 ; $i <= $nombreDePages ; $i++)
  27. {
  28. echo '<a href="livre.php?page=' . $i . '">' . $i . '</a>';
  29. }
  30. if (isset ($_GET['page']))
  31. {
  32. $page = $_GET['page'];
  33. }
  34. else
  35. {
  36. $page = 1;
  37. }
  38. $premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
  39. $reponse = mysql_query('SELECT FROM livreor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', . ' $nombreDeMessagesParPage ' . ');
  40. while ($donnees = mysql_fetch_array ($reponse))
  41. {
  42. echo '<p>' . $donnees['pseudo'] . ' a écrit : ' . $donnees['message'] . '</p>';
  43. }
  44. mysql_close = ("" );
  45. ?>
  46.        </div>
  47.        <div id="pied_de_page">
  48.        <p><a href="#haut_de_page">Inutile de rester ici, remonter donc !</a></p>
  49.    <p>The Pixels's World.free.fr, site créer par Gibouldingue.</p>
  50.    <p>Tout droit réserver.</p>
  51.        </div> 
  52.    </body>
  53. </html>


 
Je crois avoir en quelques sortes le problème
(mais naturellement, j'ai pas pu le régler, sinon j'aurais pas posté =p) :
 
Le gros du problèmes (parce que précisément, je suis pas sûr que ça soit utiles) se situe au "echo" ou se trouve le lien en XHTML, à partir de là, le code est afficher comme un  texte (avec son CSS en prime), et c'est pas du tout ce que je, veux
 
Pour couronner le tout, MySQL refuse d'executer mes demandes...
 
C'est un sacré merdier, donc je compte sur vous pour me sortir de là. =D
 
Merçi d'avançe.

Reply

Marsh Posté le 13-10-2008 à 19:22:58   

Reply

Marsh Posté le 13-10-2008 à 21:02:03    

$retour = mysql_query = ('SELECT COUNT (*) AS nb_messages FROM livreor');
 
hum :)

Reply

Marsh Posté le 14-10-2008 à 12:06:08    

et mysql_query = ("INSERT INTO livreor VALUES ("'', '" . $pseudo . "', '" . $message . "'" )" );
en mysql_query("INSERT INTO `livreor` VALUES ('', '$pseudo', '$message')" );
 
et mysql_close = ("" );
en mysql_close();

Reply

Marsh Posté le 14-10-2008 à 19:08:22    

C'est bizarre, ça n'a strictement rien changer au script...

Reply

Marsh Posté le 14-10-2008 à 23:24:33    

Salut !
 
 
beurk ce code ...
 
- htmlspecialchars() est à utiliser UNIQUEMENT à l'affichage (saisie utilisateur, données provenant de la base), pas dans les requêtes SQL
 

Citation :

mysql_query = ("INSERT INTO livreor VALUES ("'', '" . $pseudo . "', '" . $message . "'" )" );


- ce serait nettement plus clair en spécifiant les champs !
- "'', '"  : illisible et inutile
 

Citation :

  • $reponse = mysql_query('SELECT FROM livreor ORDER BY id DESC LIMIT

' . $premierMessageAafficher . ', . ' $nombreDeMessagesParPage ' . ');
 


- SELECT [manquerait pas quelque chose du style nom des champs à récupérer ici ! ] FROM
- utilise au minimum et impérativement error_reporting(E_ALL) quand tu fais du développement, ton post sur HFR aurais pu etre ainsi évité
- tu ne gères pas le cas ou une requete ne retourne rien ou plante...


Message édité par Profil supprimé le 14-10-2008 à 23:25:18
Reply

Marsh Posté le 15-10-2008 à 20:41:48    

Bon, je vais paraître certainement chiant, mais dans tes explications, tu n'est pas toujours très clairs, spike.
 
- Quand tu dis que le htmlspecialchars est à utiliser uniquement à l'affichage, ahem, je ne comprend pas très bien...
 
-Spécifier les champs, euh... Ils sont normalement spécifier entre deux  
" ' ' ".
 
-Dans le SELECT, ils fallait spécifier le nom des champs, ouais, mais comment ? Enfin, quoi taper, quoi.
 
-Le error_reporting(E_ALL), ils se met où ?
 
-Et puis, de quoi tu parles pour gérer les erreurs, toussa...
 
Enfin bref, soit plus clairs stp.
 
(C'est chiant les débutants, non ?)

Reply

Marsh Posté le 16-10-2008 à 21:45:46    

Gibouldingue a écrit :

Bon, je vais paraître certainement chiant, mais dans tes explications, tu n'est pas toujours très clairs, spike.
 
- Quand tu dis que le htmlspecialchars est à utiliser uniquement à l'affichage, ahem, je ne comprend pas très bien...
 
-Spécifier les champs, euh... Ils sont normalement spécifier entre deux  
" ' ' ".
 
-Dans le SELECT, ils fallait spécifier le nom des champs, ouais, mais comment ? Enfin, quoi taper, quoi.
 
-Le error_reporting(E_ALL), ils se met où ?
 
-Et puis, de quoi tu parles pour gérer les erreurs, toussa...
 
Enfin bref, soit plus clairs stp.
 
(C'est chiant les débutants, non ?)


'lut
 
dans l'ordre :
- htmlspecialchars(et dérivés) sert à protéger l'éventuels caractères indésirables saisis par l'utilisateur :
il ne faut jamais faire confiance à un internaute  
->par exemple :un internaute saisi du contenu HTML ou JS dans un champ, tu l'inseres en base, mais quand tu l'affichera il sera interpretée telle quel au point de te pourrir la mise en page
 
- ("INSERT INTO livreor VALUES ("'', '" . $pseudo . "', '" . $message . "'" )" );   : ca ce sont des valeurs des champs, pas leur nom
 
 
- error_reporting se met en début de script, la première ligne à mettre même (a moins de le configurer correctement dans la conf php)

Reply

Marsh Posté le 17-10-2008 à 19:34:12    

Bon, j'ai suivis tes indications (mais au fait, je sais ce qu'est un htmlspecialchars), mais il n'y a toujours pas le moindre changement.
 
En plus, le error_reporting fonctionne pas.
 
Là, je trouve ça bizarre...

Reply

Marsh Posté le 18-10-2008 à 01:46:00    

Gibouldingue a écrit :

Bon, j'ai suivis tes indications (mais au fait, je sais ce qu'est un htmlspecialchars), mais il n'y a toujours pas le moindre changement.
 
En plus, le error_reporting fonctionne pas.
 
Là, je trouve ça bizarre...


l'error reporting est censé te dire, si ton php est bien configuré, que cela :
 
mysql_select_db ("localhost", "root", "" )  
 
c'est du jamais vu : http://fr2.php.net/mysql_select_db
t'est loin d'êtres les bons parametres, que tu as confondu avec mysql_connect

Reply

Marsh Posté le 18-10-2008 à 18:24:39    

J'ai en effet confondu au mysql_select_db et j'ai mis le nom de ma BDD plutôt que le code qui me sert à me connecter (en gros, c'était une étourderie), mais ça ne marche pas d'avantage, c'est très bizarre.
 
Par contre, quelques chose se produit : La page se recharge de nouveau une fois que j'ai cliqué sur envoyer , ce qui veut dire que la requête est effectué, mais rien ne s'affiche, quand à l'affiche du reste du code, j'en suis toujours au même problème...

Reply

Marsh Posté le 18-10-2008 à 18:24:39   

Reply

Marsh Posté le 19-10-2008 à 17:32:45    

Je dirai pas que j'en ai fait un sans base de donnée pour un amis ce week-end >.<
 
Tout par gestion sur fichier xml :D


---------------
Recette cookeo Recette de cuisine
Reply

Marsh Posté le 19-10-2008 à 20:17:41    

'lut
 
j'ai horreur des messages du genre "ca marche pas" sans chercher à comprendre
 
je t'ai déjà spécifié que tu dois placer error_reporting(E_ALL) en haut de ton script
ainsi que display_errors à on afin d'afficher les erreurs  (cherche du coté ini_set()
 
et la tu verras toutes tes erreurs

Reply

Marsh Posté le 20-10-2008 à 10:18:34    

Euh dites, la base de donnée, c'est root ? parceque la ya :
# mysql_connect ("localhost", "root", "" );
# mysql_select_db ("localhost", "root", "" );
Le voila ton problème !
mysql_select_db, faut une base de donnée en argument, pas une connexion !
EDIT : oups, j'ai pas lu ton dernier message.


Message édité par l0g4n le 20-10-2008 à 10:19:09
Reply

Marsh Posté le 21-10-2008 à 14:02:34    


 
J'ai placé mon error_reporting(E_ALL) sur le haut du script, et essayer plein d'autres solutions pour régler ce problème, mais rien, donc bon.
 
En plus, tu m'as pas parlé du display_error, de on et tout ça dans ton précédent post, je suis pas devin.
 
En fait, je pense que pour comprendre, faudrait que tu prenne une partie du script que j'ai affiché là-haut pour le modifier en rajoutant tes fonctions de recherches d'erreur, comme ça, ce serait clairs.

Reply

Marsh Posté le 21-10-2008 à 20:02:16    

hello
 
- en haut du script :  
ini_set('display_errors','on);
error_reporting(E_ALL);
 
- si ca passe pas, crée un fichier .htaccess à la racine de ton site avec  
php_flag error_reporting E_ALL
php_flag display_errors on
 
- place des "or die(mysql_error())" à la suite de tes fonctions mysql_ pour vérifier que ce ne soit pas simplement un soucis d'identifiants
 
- ligne 19 : t'as inversé des lettres dans la fonction utilisée...


Message édité par Profil supprimé le 21-10-2008 à 20:03:34
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed