probleme livre d'or

probleme livre d'or - PHP - Programmation

Marsh Posté le 08-06-2009 à 19:41:50    

Bonjour (encore moi !), je souhaite créer un livre d'or sur mon site, un script tres simple est deja fait, mais ca ne fonctionne pas.  
 
Je vous annonce dessuite, c'est la premiere fois que j'utilise une table MySQL (et je debute en php) donc si j'ai fais une enorme boulette grosse comme une montagne, c'est surement cela. Car a mon avis la solution est la correction d'une absurdité, et je pense meme que ca ne vient pas du code (que j'ai récupéré ICI, mais surement un probleme de "manipulation"
 
Je vous explique donc en détail ce que j'ai dans le repertoire de mon site (entre autre) :  
 
Ma table MySQL etant un fichier "table livre_or" (donc sans le php ou html ou autre au bout) :  
 

Code :
  1. CREATE TABLE livre_or (
  2. id int(6) NOT NULL auto_increment,
  3. auteur VARCHAR(50) NOT NULL,
  4. email VARCHAR(50) NOT NULL,
  5. date_signature datetime NOT NULL default '0000-00-00 00:00:00',
  6. message text NOT NULL,
  7. PRIMARY KEY (id)
  8. ) TYPE=MyISAM;


 
Puis j'ai un fichier qui affichera toutes les signatures : "index.php" :
 

Code :
  1. <html>
  2. <head>
  3. <title>Index de notre livre d'or</title>
  4. </head>
  5. <body>
  6. <a href="./insert_signature.php">Signer le livre d'or</a>
  7. <br /><br />
  8. <?php
  9. $base = mysql_connect ('serveur', 'login', 'password');
  10. mysql_select_db ('nom_base', $base);
  11. $sql = 'SELECT auteur, email, date_signature, message FROM livre_or ORDER BY date_signature DESC';
  12. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  13. $nb_signature = mysql_num_rows($req);
  14. if ($nb_signature == 0) {
  15. echo 'Aucune signature.';
  16. }
  17. else {
  18. while ($data = mysql_fetch_array($req)) {
  19.  sscanf($data['date_signature'], "%4s-%2s-%2s %2s:%2s:%2s", $annee, $mois, $jour, $heure, $minute, $seconde);
  20.  echo '<a href=mailto:' , htmlentities(trim($data['email'])) , '>' , htmlentities(trim($data['auteur'])) , '</a>';
  21.  echo ' le ' , $jour , '/' , $mois , '/' , $annee , ' à ' , $heure , ':' , $minute , '<br />';
  22.  echo nl2br(htmlentities(trim($data['message'])));
  23.  echo '<br /><br />';
  24. }
  25. }
  26. // on libère l'espace mémoire alloué pour cette requête
  27. mysql_free_result ($req);
  28. // on ferme la connection à la base de données.
  29. mysql_close ();
  30. ?>
  31. </body>
  32. </html>


 
Et enfin, une fichier qui contient le formulaire et se nomme "insert_signature.php" (a noter que j'aurais préférer avoir le formulaire et la page d'affichage sur la meme page, mais faisons au plus simple ) :  
 

Code :
  1. <?php
  2. if (isset($_POST['go']) && $_POST['go']=='Signer') {
  3. if ((isset($_POST['auteur'])) && (isset($_POST['email'])) && (isset($_POST['message']))) {
  4.  // si les 3 variables ne sont pas vides, et si l'adresse E-mail est valide, alors, et seulement dans ce cas, on fera notre insertion dans la base
  5.  if ((!empty($_POST['auteur'])) && (!empty($_POST['email'])) && (!empty($_POST['message']))) {
  6.   // on verifie le format de l'adresse E-mail saisie
  7.   $test_mail = eregi ('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+$', $_POST['email']);
  8.   if ($test_mail) {
  9.    // on se connecte à notre base
  10.    $base = mysql_connect ('localhost', 'root', '');
  11.    mysql_select_db ('howto_guestbook', $base);
  12.    // on prepare notre requête d'insertion des données
  13.    $sql = 'INSERT INTO livre_or VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['email']).'", "'.date("Y-m-d H:i:s" ).'", "'.mysql_escape_string($_POST['message']).'" )';
  14.    // on lance la requête
  15.    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
  16.    // on ferme la connexion à la base de données
  17.    mysql_close();
  18.    // on redirige le visiteur vers l'accueil du livre d'or
  19.    header('location: index.php');
  20.    // on termine le script courant
  21.    exit();
  22.   }
  23.   else {
  24.    $erreur = 'Votre adresse E-mail est invalide.';
  25.   }
  26.  }
  27.  else {
  28.   $erreur = 'Au moins un des champs est vide.';
  29.  }
  30. }
  31. else {
  32.  $erreur = 'Les variables nécessaires au script ne sont pas définies.';
  33. }
  34. }
  35. // on entre dans le cas où l'un des trois (au moins) champs n'a pas été rempli ou si l'adresse E-mail n'a pas été validée (en particulier, lorsque le visiteur charge pour la première fois cette page, vu que les 3 champs sont vides, le formulaire s'affichera). On remarque également que l'on met la valeur de chaque champs dans le value (c'est cela qui fait que si le visiteur ne remplit pas entièrement le formulaire et qu'il clique sur "Signer", et bien lorsqu'il sera redirigé vers le formulaire, ce qu'il aura déjà saisi sera conservé
  36. ?>
  37. <html>
  38. <head>
  39. <title>Insertion d'une nouvelle signature</title>
  40. </head>
  41. <body>
  42. <form action="insert_signature.php" method="post">
  43. <table>
  44. <tr><td>
  45. <span class="gras">Auteur :</span>
  46. </td><td>
  47. <input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
  48. </td></tr><tr><td>
  49. <span class="gras">Adresse E-mail :</span>
  50. </td><td>
  51. <input type="text" name="email" maxlength="50" size="50" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>">
  52. </td></tr><tr><td>
  53. <span class="gras">Votre message :</span>
  54. </td><td>
  55. <textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea>
  56. </td></tr><tr><td><td align="right">
  57. <input type="submit" name="go" value="Signer">
  58. </td></tr></table>
  59. </form>
  60. <?php
  61. if (isset($erreur)) echo '<br /><br />',$erreur;
  62. ?>
  63. </body>
  64. </html>


 
Donc je tiens à répéter, à part avoir copié ces 3 fichiers sur mon serveur (webou) et mis dans la page d'accueil de mon site un lien "livre d'or) amenant à la page index.php je n'ai rien fait d'autre (pour la mise e page j'attend que ca marche^^)
 
Quand je click sur le lien "livre d'or", j'ai bien une page index.php qui s'ouvre et contenant un lien hypertext "signer le formulaire", mais en dessous de ce lien il y a plein de phrases d'erreurs.  
 
Cependant le lien marche quand meme et nous amene au formulaire (insert_signature.php), mais quand on valide le formulaire c'est encore plein d'erreur et ca ne s'enregistre pas.  
 
Venez jugez par vous meme :  
http://www.compterendutp.webou.net/index.html
 
et merci beaucoup pour ceux qui viennent m'aider, surtout que je suis certain que ce n'est fois rien  :heink:
 
nb : j'ai l'impression, qu'entre autre, c'est une histoire de password, mais si c'est ca ... je ne veux pas qu'il y ait de password a entrer dans tous les cas :(


Message édité par charlelechauve le 08-06-2009 à 19:46:21
Reply

Marsh Posté le 08-06-2009 à 19:41:50   

Reply

Marsh Posté le 08-06-2009 à 20:29:26    

Un petit indice, j'ai l'impression que l'erreur se trouve dans index.php au niveau des lignes 12 et 13  :
 

Code :
  1. $base = mysql_connect ('serveur', 'login', 'password');
  2. mysql_select_db ('nom_base', $base);


 
Faut il que je mette mes info perso à la place ? Si oui que mettre, surtout pour login et password ?(faut quand meme pas mettre mes identifiants et pass pour acceder à mon panel d'administration sur le serveur qui heberge mon site ? Si oui, c'est pas risqué ? )
 
Pour le serveur, le nom de mon serveur (webou) s'appel "host", ca vous parait etre ca donc ?  
Pour le login est ce que c'ets mon nom d'utilisateur present dans php admin de mon panel de config sur le serveur ?  
Pour le mot de passe vraiment aucune idée, idem pour nom_base.
 
nb : dans mon panel d'admin sur le serveur que j'utilise (webou toujours), j'ai un onglet "base de donnée MySQL", qui sert a créer des bases de données. Faut il que je passe par la où avec ce que j'ai deja fait ce n'est plus la peine ?  
 
nb2: le serveur a la version 5.00.77 de mySQL. dois je mettre mysqli_connect a la place de mysql_connect ?  
 
 
Merci


Message édité par charlelechauve le 08-06-2009 à 22:26:39
Reply

Marsh Posté le 09-06-2009 à 00:14:30    

RESOLU :  
 
Fallait créer une base de donné via mon panal d'admin

Reply

Sujets relatifs:

Leave a Replay

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