Page 1 sur 1

probleme post commentaire LO

Posté : 30 août 2011, 23:15
par 1Number
Bonjour a tous

voici mon problème
j'ai réaliser un livre d'or a l'aide de plusieurs tuto trouver sur le net (php niveau noob :P )
si j’insère un message en direct de la table je le vois sur mon site mais du site la requête est pas posté
voici le code de ma page LO et de ma page config

<!--debut page config.php-->
<?php


	define("DB_SERVER","*************");

	define("DB_NAME","*******");
	
	define("DB_LOGIN","*****");

	define("DB_PASS","****");

	define("DB_ENC","UTF8");
	
	$table = 'ld';
 	 
 // Renvoie vers la page de code php, ici c'est la page même !
$url = $PHP_SELF; 
?>
<!--fin page config.php-->

<!--debut page livredor.php-->
<?php

	$nb1 = rand(1,5);
	$nb2 = rand(1,5);
?>
 	 <!-- valider l'adresse e-mail -->
     
     <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 
    }
	
       if( comment.value==""){ 
        comment.focus();
        return false 
    }
	
    return true
}
//-->
</script>

	 <?php
	 require"configlocal.php";
	 
	mysql_connect(DB_SERVER,DB_LOGIN,DB_PASS);
	mysql_select_db(DB_NAME);
	mysql_query('SET NAME '.DB_ENC);
 	 
 	 // Si le formulaire à été soumis, $ajout vaudra true
 	 if ($ajout) {
 	     // Ici se trouve le script d'ajout du message
 	     
 
   	// 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 1 : '.mysql_error());
		 
		 $sql = "INSERT INTO $table(date,name,email,comment) VALUES('$date','$name','$lemail','$comment')"; 

        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.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-->
 	 <style type="text/css">
 	 #name {
	background-repeat: repeat-x;
	background-position: top;
	width: 300px;
	background-image: url(img/bg_champ_contact.png);
	margin-left: -10px;
}
     #mail {
	background-image: url(img/bg_champ_contact.png);
	background-repeat: repeat-x;
	background-position: top;
	width: 300px;
	margin-left: -10px;


}
     #msg {
	background-image: url(img/bg_champ_message_contacts.png);
	background-position: top;
	max-width: 300px;
	height: 150px;
	background-repeat: repeat-x;
	margin-left: -10px;

}
#captcha {
	border: 1px solid #000;
	background-image: url(img/bg_champ_contact.png);
	background-repeat: no-repeat;
	height: 20px;
	width: 40px;
	text-align: center;
	position: relative;
	left: 130px;
	
}
.resultat {
	background-image: url(img/bg_champ_contact.png);
	width: 37px;
	height: 20px;
	position: relative;
	bottom: 20px;
	left: 130px;
}

     #btn_haut {
	padding-left:255px;
}
	#bgComTop {
	background-image: url(img/bg_com_top.png);
	background-repeat: no-repeat;
	height: 46px;
	width: 540px;
}
     #bgComBody {
	background-image: url(img/bg_com_body.png);
	background-repeat: repeat-y;
	width: 540px;
	padding: 10px;
}
     #bgComBottom {
	background-image: url(img/bg_com_bottom.png);
	background-repeat: no-repeat;
	height: 21px;
	width: 540px;
	margin-bottom: 10px;
}
     #separateur {
	background-image: url(img/separateur01.png);
	background-repeat: no-repeat;
	height: 1px;
	width: 521px;
}
     </style>

 	
		<table><tr><td>

<b>


<?php

 // RequÍte ordonnant les messages par dates

$query="SELECT date,name,email,comment FROM $table ORDER BY id DESC";

 	     

    // Exècute la requÍte prècèdente

$result = mysql_query($query) or die('Erreur SQL 2 : '.mysql_error()); 

 	     

  // Renvoie le nombre de lignes pour pouvoir afficher le nombre total de messages postés

 echo mysql_num_rows($result); 

?> 



messages
</b>
 
 
<!-- Ici se trouve le formulaire d'ajout de message-->
 	 	
        
        	<table max-width="540px;"><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">

<tr>

<td width="130"><font color="black"><p>Nom :</p></font></td>

<td width="205"><input name="name" id="name" size="20"></td>

</tr>

<tr>

<td width="130"><font color="black"><p>Votre Email :</p></font></td>

<td width="205"><font color="black"><input name="lemail" id="mail" size="20"></font></td>

</tr>

<tr>

<td width="130"><font color="black"><p>Message :</p></font></td>
<td><textarea name="comment" id="msg" rows="4" cols="55"></textarea></td>

<br>
</tr>

    		<input type="hidden" name="check1" value="<?php echo base64_encode($nb1);?>" />
            <input type="hidden" name="check2" value="<?php echo base64_encode($nb2);?>" />

<div id="captcha"><?php echo $nb1;?> + <?php echo $nb2;?></div>
    		<label for="captcha"><p>Résultat :</p></label>
            <input type="text" name="captcha" class="resultat" /> 
            <span class="error"><?php if(isset($erreurcaptcha)) echo $erreurcaptcha;?></span><br />

<br>


<tr>

<td></td>
<td>

<br>

<center><input type="Submit" id="envoyer" value="Postez votre commentaire">
</center> 
  <br>
 
  
  
</td>
</tr>
</table>
</form>
</td></tr></table>

<?php

  // Définit la boucle : tant qu'il y a des messages dans la BDD

while ($val = mysql_fetch_array($result)) { 
?> 


    
<?php

echo '<p>Message de : ';


// Affiche le pseudo du posteur de message

echo '<'.$val['email'].'>'.$val['name'];
 
echo '<font color="black"><p>Posté le : </font>';

// Affiche la date du message posté
echo '<font color="#538B2C" face="Arial, Helvetica, sans-serif">'.date("d/m/Y",$val['date']).'</font>';

?>

<div id="bgComTop"></div>

     
<div id="bgComBody"> 

<?php


   // Affiche le message posté

echo '<div>'.htmlentities($val['comment']).'</div>';

?> 

</div>

</td></table>

<div id="bgComBottom"></div>
<div id="separateur"></div>

<?php
   }  
 	 // Et ici on ferme la connexion à la base de données
	 
@mysql_close();

?>

<br />

<div id="btn_haut">
<a href="livredor.php"><span>Haut</span></a>     
</div>
<!--fin page livredor.php-->
merci de votre aide :)

Re: probleme post commentaire LO

Posté : 30 août 2011, 23:34
par moogli
salut,

il te manque une " sur le define db_login

@+

Re: probleme post commentaire LO

Posté : 30 août 2011, 23:48
par 1Number
sry, erreur de ma pars quand j'ai mis des * a la place de mes log
mais manque pas de " sur ma page ( j'ai corriger mon post :oops: )

Re: probleme post commentaire LO

Posté : 31 août 2011, 00:28
par moogli
je vois
require"configlocal.php"; <= je suppose que ce fichier existe et est la même chose que le config.php au dessus ?

if ($ajout) <= la variable $ajout n'existe pas tu doit avoir une erreur a ce niveau. si ce n'est pas le cas ajoute error_reporting(E_ALL|E_STRICT); en 1ere ligne de ce script. S'il n'y a pas d'erreur c'est que tu code avec les regiters globals a on et c'est très mal vu que ce n'est plus le comportement par défaut de php regarde un tuto sur l'utilisation des formulaires Comme celui ci
le message d'erreur quetu devrais avoir Notice: Undefined variable: ajout in tonfichier.php on line 62


de plus if($variable) c'est crade car au final tu ne sais pas ce que tu fait, si $ajout vaut autre chose de false, 0 ou null ta condition sera vrai or si ton formulaire contient <input type="hidden" name="ajout" value="oupsssssssss"> ça doit être vrai ?

utilise plutôt le bouton submit que tu nomme et tu vérifie ce qu'il contient (au pire appel le ajout ^^)

if (!empty($name) && !empty($lemail) && !empty($comment)) {
Même register globals c'est le mal !
             $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 1 : '.mysql_error());
                 $sql = "INSERT INTO $table(date,name,email,comment) VALUES('$date','$name','$lemail','$comment')";
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
tu fait deux fois la même chose ...

je pense donc que :
- tu n'affiche pas les erreurs
- tu code pour register_globals = on et ce n'est pas le cas (a vérifier dans un php.ini)

pour t'en convaincre debug
- ajoute des echos un peu partout pour connaitre le cheminement du script, par exemple tu peux en mettre un juste après le if ajout
if ($ajout) {
echo 'on tente un ajout de message<br />';

idem pour le test des variables
if (!empty($name) && !empty($lemail) && !empty($comment)) {
echo 'toute les variables sont la !<br />';

etc etc

@+

Re: probleme post commentaire LO

Posté : 31 août 2011, 00:33
par 1Number
oui, alors suis phpNoob et postNoob aussi :)
merci moogli je test et te dit ça

Re: probleme post commentaire LO

Posté : 02 sept. 2011, 00:05
par 1Number
bon j'ai essayé
mais trop dure je capte pas tes conseils

j'ai testé un nouveau
il fonctionne très bien mais il vérifie pas les champs vide ou avec des erreurs

 	 <!-- valider l'adresse e-mail -->
     
     <script language="JavaScript">
<!--
function verif(email) {
    var arobase = email.indexOf("@"); var point = email.lastIndexOf(".")
    if((arobase < 3)||(point + 2 > email.length)||(point < arobase+3)) 
        return false
        return true
}

function testform(pseudo,email,message) {
    if($pseudo.value=="") {
        $pseudo.focus();
        return false
    }
    if(!verif(email.value)) { 
        $email.value="";
        $email.focus();
        return false 
    }
	
     if( $message.value==""){ 
        $message.focus();
        return false 
    }
	
    return true
}
//-->
</script>

<script src="google.js"></script>
<?php

require "config.php";
mysql_connect(DB_SERVER,DB_LOGIN,DB_PASS);
mysql_select_db(DB_NAME);
mysql_query('SET NAME '.DB_ENC);

if(!empty($_POST)){

	
	extract($_POST);
	$ip=$_SERVER["REMOTE_ADDR"];
	$message=htmlentities($message);
	$sql="INSERT INTO lo_messages (pseudo,mail,message,ip) VALUE ('$pseudo','$email','$message','$ip')";
	mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

	
	
}
	    /* On vérifie que tous les champs sont remplis*/
     if (!empty($pseudo) && !empty($email) && !empty($message)) {     

      $alert = 'Tous les champs doivent être renseignés';
	  
	   echo '<script language="javascript">alert(\'Merci de remplir tout les champs.\');location.href='.$HTTP_REFERER.';</script>';
    
	} 
	if (!empty($alert))
{
    echo '<p style="color:red">'.$alert.'</p>';
}
?>
<style type="text/css">


#pseudo {
	margin-left: 73px;
	background:url(img/bg_champ_contact.png) no-repeat top;
	width: 168px;
	height: 20px;
}

#email {
	margin-left: 124px;
	background:url(img/bg_champ_contact.png) no-repeat top;
	width: 168px;
	height: 20px;
}

#message {
	margin-left: 110px;
	width: 300px;
	max-width:300px;
	height: 100px;
	max-height: 100px;
	background-image: url(img/bg_champ_message_contacts.png);
	background-repeat: repeat-x;
	background-position: top;
}
#envoyer {
	margin-left: 250px;
}

	#bgComTop {
	background-image: url(img/bg_com_top.png);
	background-repeat: no-repeat;
	height: 46px;
	width: 540px;
}
     #bgComBody {
	background-image: url(img/bg_com_body.png);
	background-repeat: repeat-y;
	width: 540px;
	padding-left:10px;
	padding-right:10px;
}
     #bgComBottom {
	background-image: url(img/bg_com_bottom.png);
	background-repeat: no-repeat;
	height: 21px;
	width: 540px;
	margin-bottom: 10px;
}
     #separateur {
	background-image: url(img/separateur01.png);
	background-repeat: no-repeat;
	height: 1px;
	width: 521px;
}
#btn_haut {
	padding-left:255px;
}

</style>

<form action="livredor.php" method="post">

    <P>
  <label for="pseudo">Nom / Prénom :</label>
        <input type="text" id="pseudo" name="pseudo" 
        	value="<?php echo (isset($_POST['pseudo'])) ? $pseudo : '' ?>" 
        />
    </p>
    <p>
        <label for="email">E-mail :</label>
        <input type="text" id="email" name="email" 
        	value="<?php echo (isset($_POST['email'])) ? $email : '' ?>"
        />
    </p>
    
    <p>
        <label for="message"><span>Message :</span> </label>
        <textarea id="message" name="message">
			<?php echo (isset($_POST['message'])) ? $message : '' ?>
        </textarea>
    </p>
    	
    <p>
        <input type="submit" id="envoyer" name="envoye" value="Envoyer" />
    </p>
</form>
<?php

	$sql="SELECT * FROM lo_messages ORDER BY id DESC";
	$req= mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data=mysql_fetch_assoc($req)){
?>


<?php	echo "<p>".$data["pseudo"]."</p>";?>

<div id="bgComTop"></div>

     
<div id="bgComBody"> 
<?php echo $data["message"];
	
	$return="<br>";
	echo $return;
?>

</div>

<div id="bgComBottom"></div>
<div id="separateur"></div>


<?php
}


mysql_close();
?>

<br />

<div id="btn_haut">
<a href="livredor.php"><span>Haut</span></a>     
</div>
merci d'avance

Re: probleme post commentaire LO

Posté : 02 sept. 2011, 01:01
par moogli
a faire avec la fonction empty

un tuto sur le sujet http://www.lephpfacile.com/cours/8-recu ... ormulaires

@+

Re: probleme post commentaire LO

Posté : 02 sept. 2011, 01:55
par 1Number
j'ai déjà dans mon code
if (!empty($pseudo) && !empty($email) && !empty($message)) {    

      $alert = 'Tous les champs doivent être renseignés';
         
           echo '<script language="javascript">alert(\'Merci de remplir tout les champs.\');location.href='.$HTTP_REFERER.';</script>';
   
        }
        if (!empty($alert))
{
    echo '<p style="color:red">'.$alert.'</p>';
}
pourquoi ca fonctionne pas et mon script (en début de code et qui fonctionne sur mon form contact) pourquoi fonctionne t-il pas ?

Re: probleme post commentaire LO

Posté : 02 sept. 2011, 14:12
par moogli
a tu regardé le tuto sur le formulaire ?

si oui comment récupère t'on l'info d'un champs de formulaire ?

lorsque tu aura répondu a cette question tu devrais pouvoir résoudre ton soucis !

@+

Re: probleme post commentaire LO

Posté : 02 sept. 2011, 15:14
par 1Number
"oui" la page "empty", le lien vers lephpfacile je vois pas trop se que je peux en faire,mes donner sont deja bien envoyer dans la BDD et afficher sur le site mais les verfi marche pas

"oui" avec "empty" mais j'ai déjà dans mon code mais ça détecte pas mes champs vide

Re: probleme post commentaire LO

Posté : 02 sept. 2011, 15:16
par moogli
je laisse tomber !

@+

Re: probleme post commentaire LO

Posté : 02 sept. 2011, 15:22
par 1Number
cool je capte pas et tu laisse tomber
ça serre a rien d'aider dans se cas

enfin merci quand même

Re: probleme post commentaire LO

Posté : 02 sept. 2011, 16:46
par moogli
ben t'a lu / compris le tuto ou tu ne veux pas l'appliquer tu ne veux pas de mon aide je laisse la place aux autre, si tu ne veux comprendre que tes pratique ne sont pas "bonne" (et j'entends par cela qu'elle peuvent apporter le type de problème que tu rencontre) je peux rien y faire.

soit tu veux de l'aide et tu cherche a comprendre ce que l'on te propose soit tu va direct dans la rebrique recrutement !

@+

Re: probleme post commentaire LO

Posté : 02 sept. 2011, 17:22
par 1Number
sisi je veux de toute l'aide possible
mais 20 jours max de php et la je patine sec
j'ai compris que mon 1* LO avais une mauvaise méthode même si j'ai pas tout compris
j'ai testé de faire un autre qui lui post bien donc déjà suis content mon problème a avancé :)
j'ai vue des LO tout fait dispo sur le net mais je veux faire par moi même pour comprendre et apprendre
la je suis un tuto qui explique la fonction empty(j'ai capté que mon prob de champs vide viens de la), j’espère capté pourquoi ça a pas marcher