livre d'or erreur

ludo2163
Invité n'ayant pas de compte PHPfrance

16 avr. 2014, 18:03

Bonjour,

Je suis un débutant dans le php, je suis en terminal et j'ai choisi ISN en spécialité, et on doit faire un site pour la fin d'année. Je dois m'occuper de crée un livre d'or pour le site de mon groupe, mais j'ai pas mal de problème. J'ai essayer plusieurs script sans sucées. J'en ai trouver un sur un site, que j'avais réussi a faire marcher avec le prof, mais chez moi, des erreur sont apparut, et je n'arrive pas a les supprimer, donc si vous pouvez m'aider a les enlever je vous serait reconnaissant.

Et je précise bien que ce n'est pas mon code, je l'ai trouver sur un site.

Voici le code de la première page "guestbook.php":
<html>
  	 <head>
  	 <title>Mon livre d'or</title>
  	 <script language="JavaScript">
<!--
function verif(lemail) {
    var arobase = lemail.indexOf("@"); var point = lemail.lastIndexOf(".")
    if((arobase < 3)||(point + 2 > lemail.length)||(point < arobase+3))
        return false
        return true
}

function testform(lenom,mail,comment) {
    if(lenom.value=="") {
        lenom.focus();
        return false
    }
    if(!verif(mail.value)) {
        mail.value="";
        mail.focus();
        return false
    }
    return true
}
//-->
</script>
  	 </head>
  	 <body>
  	 <?php
  	 include('config.inc.php');
  	 // Ici on ouvre une connexion au serveur MySQL
	 // on se connecte à MySQL
$db = mysql_connect('localhost', 'root', ''); 
mysql_select_db('test',$db);
  	 // Voir le tutorial sur ce sujet
  	 
  	 // Si le formulaire à été soumis, $ajout vaudra true
  	 if ($_POST['ajout']) {
   	 
   	// On récupère les données postées : Voir les tutos dans la section "Débutez"
	 
  	 // On vérifie que les champs ne sont pas vides
  	 if (!empty($name) && !empty($lemail) && !empty($comment)) {     
  	     // Définit la variable de date
  	     $date = time();
  	 
  	     // Créé la requête
  	     $query = "INSERT INTO $table(date,name,email,comment) VALUES('$date','$name','$lemail','$comment')";
  	 
  	     // Exécute la requête d'insertion du message
  	     $result = mysql_query($query) or die('Erreur SQL : '.mysql_error());
  	 } else {
  	     // On affiche un message d'erreur
  	     echo '<script language="javascript">alert(\'Merci de remplir tout les champs.\');location.href='.$HTTP_REFERER.';</script>';
  	     echo '<noscript>Merci de remplir tout les champs. <a href="'.$HTTP_REFERER.'">retour</a></noscript>';
}

  	 }
  	 
  	 // Ici se trouve le script permettant d'afficher la liste de messages
?>
<table width="100%" height="100%" ><tr><td>
  	     <b><?php
  	     
  	     // Requête ordonnant les messages par dates
  	     $query = "SELECT date,name,email,comment FROM $table ORDER BY date DESC";
  	     
  	     // Exécute la requête précédente
  	     $result = mysql_query($query) or die('Erreur SQL : '.mysql_error()); 
  	     
  	     // Renvoie le nombre de lignes pour pouvoir afficher le nombre total de messages postés
  	     echo mysql_num_rows($result); 
  	     ?> 
  	     messages
  	     </b>
  	     <table width="95%"><tr><td>
  	         <hr size=1>
  	 
  	     <?php
  	     // Définit la boucle : tant qu'il y a des messages dans la BDD
  	     while ($val = mysql_fetch_array($result)) { 
  	         echo '<font color="black" face="verdana, arial">Message de :</font>';
  	         // Affiche le pseudo du posteur de message (avec lien mailto:)
  	         echo '<a href="mailto:'.$val['email'].'">'.$val['name'].'</a>'; 
  	         echo '<font color="black" face="verdana, arial">Posté le : </font>';
  	         // Affiche la date où a eté posté le message
  	         echo '<font color="orange">'.date("d/m/Y",$val['date']).'</font>';
  	         // Affiche le message posté
  	         echo '<div>'.htmlentities($val['comment']).'</div>';
  	         echo '<hr size=1>';
  	     } 
  	     
  	     </td></tr></table>
  	 </td></tr></table>
  	 
  	 // Ici se trouve le formulaire d'ajout de message
	 ?>
<table width="80%"><tr><td>
  	     <form method="post" action="<?php echo $url; ?>" onSubmit="return testform(this.name,this.lemail,this.comment)">
  	     <input type="hidden" name="ajout" value="true">
  	     <table cellspacing="0" cellpadding="0" style="border: 1px solid red;" height="288">
  	         <tr>
  	             <td width="130"><font color="red">Nom</font></td>
 	             <td width="205"><input name="name" size="20"></td>
 	         </tr>
 	         <tr>
  	             <td width="130"><font color="red">Votre Email :</font></td>
  	             <td width="205"><font color="red"><input name="lemail" size="20"></font></td>
  	         </tr>
  	         <tr>
  	             <td colspan="2">
  	                 <textarea name="comment" rows="4" cols="55"></textarea>
  	                 <br><br>
  	                 <input type="Submit" value="Valider">
  	                 <br><br>
  	                 <a href="#">Haut</a><br>
  	             </td>
  	         </tr>
  	     </table>
  	     </form>
  	 </td></tr></table> 
  	 <?php
  	 // Et ici on ferme la connexion à la base de données 
	 @mysql_close();
  	 ?>
  	 </body></html> 

Lorsque je l'ouvre avec wamp, il me dis que j'ai une erreur:

Notice: Undefined variable: ajout in C:\wamp\www\essai\guestbook.php on line 38

Et il y a également :Parse error: syntax error, unexpected '<' in C:\wamp\www\essai\guestbook.php on line 93
Mais je ne vois pas ce qu'il y a qui empêche de marcher, et j'ai remarquer que lorsque je fais glisser ma souris sur "<" dans notepad++, que ce n'est pas le ">" suivant qui passe en rouge avec lui, mais s'en est un des lignes d'au-dessus (ligne 76)

Eléphant du PHP | 58 Messages

17 avr. 2014, 08:44

Remplaces
if ($_POST['ajout']) {
par
if (isset($_POST['ajout'])) {
Ensuite, ligne 91 à 97, tu as
}             
</td></tr></table>
</td></tr></table>
         
// Ici se trouve le formulaire d'ajout de message
 ?>
, remplaces par
} 
// Ici se trouve le formulaire d'ajout de message
 ?>           
</td></tr></table>
</td></tr></table>
         

Eléphant du PHP | 58 Messages

17 avr. 2014, 08:52

Par ailleurs, je te conseille de remplacer toutes les fonctions de mysql qui commencent par
mysql_
par
mysqli_
car elles sont dépréciées et vont être supprimées très prochainement !

ludo2163
Invité n'ayant pas de compte PHPfrance

17 avr. 2014, 17:02

Merci morganK, je vais essayer cela tous de suite.
Par ailleurs, je te conseille de remplacer toutes les fonctions de mysql qui commencent par
mysql_
par
mysqli_
car elles sont dépréciées et vont être supprimées très prochainement !
J'ai déjà eu un problème pour mysql avec un autre code, et quand je le remplacer par mysqli, cela ne marcher pas, wamp me disait que sa n'exister pas.

ludo2163
Invité n'ayant pas de compte PHPfrance

17 avr. 2014, 17:23

Merci :) sa a bien aider, mais j'ai encore une erreur: Notice: Undefined variable: url in C:\wamp\www\essai\guestbook.php on line 99

Je vais essayer de la résoudre.

Sinon j'ai essayer en mettant mysqli et cela me donne ceci : Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\wamp\www\essai\guestbook.php on line 34
et quand je qu'il sur le lien qui conduit a l'aide, cela me donne ceci : mysqli_select_db doesn't exist (avec les fonctions pouvant remplacer comme mysql)

ludo2163
Invité n'ayant pas de compte PHPfrance

17 avr. 2014, 17:45

L'erreur est résolut :), la page marche sans problème.

Sauf, lorsque je valide le formulaire, sa ne marche pas :(
Sa me marque:The requested URL /hihi/Array was not found on this server.

J'ai regarder un peu pour la résoudre, mais j'ai constater que cette erreur se présent dans de diverse situation, mais je n'ai pas encore trouver pour mon cas :(
Donc si vous pouvez encore m'aider :).

Eléphant du PHP | 58 Messages

17 avr. 2014, 19:18

Il faudrait voir comment est construite ta variable $url, a priori il y a une concaténation qui ne se fait pas correctement.

ludo2163
Invité n'ayant pas de compte PHPfrance

17 avr. 2014, 19:28

Il faudrait voir comment est construite ta variable $url, a priori il y a une concaténation qui ne se fait pas correctement.
Pour cette erreur c'est bon, j'ai remplacer $url par $_SERVER car j'avais oublier de le modifier après la modification que j'ai effectuer sur mon autre page:
<?php
  	 
  	 // l'adresse de votre serveur php
  	 $host = 'localhost'; 
  	 
  	 // votre login : root sur localhost
  	 $user = 'root'; 
  	 
  	 // votre pass : vide sur localhost
  	 $pass = ''; 
  	 
  	 // le nom de la base de données
  	 $bdd = 'test';
  	 
  	 // le nom de votre table Sql
  	 $table = 'guestbook';
  	 
  	 // Renvoie vers la page de code php, ici c'est la page même !
  	 $_SERVER['PHP_SELF']; 
 	 
  	 ?> 
Donc cela est bon, mais c'est lors de la validation que c'est pas bon, cela me met ceci: Not Found The requested URL /essai/Array was not found on this server.

Eléphant du PHP | 58 Messages

17 avr. 2014, 20:20

Il faut que tu mettes $_SERVER['PHP_SELF'] dans l'attribut action de ton form et pas simplement $_SERVER.

ludo2163
Invité n'ayant pas de compte PHPfrance

17 avr. 2014, 22:32

Il faut que tu mettes $_SERVER['PHP_SELF'] dans l'attribut action de ton form et pas simplement $_SERVER.
Ok, merci, j'ai juste corriger une partie de l'erreur lol.

Après modification, j'ai encore deux erreur d’affilée identique:

Notice: Undefined variable: HTTP_REFERER in C:\wamp\www\essai\guestbook.php on line 54(et line 55)

je vais me coucher, je regarderai cela demain

Eléphant du PHP | 58 Messages

18 avr. 2014, 08:18

Tu as dû mettre quelque part HTTP_REFERER au lieu de $_SERVER['HTTP_REFERER'] !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 avr. 2014, 16:16

Tu as dû mettre quelque part HTTP_REFERER au lieu de $_SERVER['HTTP_REFERER'] !

ligne 54 et 55 de guestbook.php :)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 58 Messages

18 avr. 2014, 17:06

ligne 54 et 55 de guestbook.php
J'avais trouvé moi aussi ... :^o

ludo2163
Invité n'ayant pas de compte PHPfrance

18 avr. 2014, 18:29

Encore merci pour vos réponse.
Ce matin avec mon prof d'ISN on a regarder, et on a également essayer le code avec cette modification, mais l'ordi ne me donner aucune erreur(la version doit etre trop veille sur les ordi du lycée)
du coup me revoici chez moi, et les erreur sont bien de nouveau présente. Donc j'ai refait les modif, mais aucune erreur, cependant rien ne s'enregistre dans la base de donné et aucun message n'apparait :(


Mon prof ma donner un code qui marche, après s’être énerver sur ce code. Et ma dis qu'il doit manquer certain élément sur ce code. J'aurai bien aimer réussir a faire marcher ce code, mais je crois que cela ne pourra pas se faire, sans vous, et je pense qu'il y a d'autre personne qui on besoin de votre aide (étant donner que j'ai maintenant un code qui marche).

Eléphant du PHP | 58 Messages

18 avr. 2014, 20:44

Peux-tu poster ce que renvoit $query et $result ?