8791 sujets

Développement web côté serveur, CMS

Bonjour,

Je suis débutant et j'aimerais installer mon livre d'Or.
Les messages de ce dernier sont affichés sur une page et lorsqu'on veut rentrer un commentaire il faut cliquer sur un lien qui renvoie vers une page où l'on rentre les données.
Par contre lorsque je veux valider les données (même lorsqu'il n'y a rien dans les champs) la page d'affichage des messages est renvoyée... Comment peut-on faire pour afficher sur la page d'entrée des données qu'aucune entrée est réalisée et qu'il faut resaisir les champs. Ce n'est qu'une fois les champs rempli que la page d'affichage des messages doit être affichée en appuyant sur le bouton envoyer. voici mon code :


La page d'affichage du livre d'or
<?php

mysql_connect("localhost", "root","");
mysql_select_db("gallerie");
 
// --------------- Etape 1 -----------------
// Si un message est envoyé, on l'enregistre
// -----------------------------------------

if (isset($_POST['nom']) and isset($_POST['prenom']) and isset($_POST['contenu']))
{
    $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
	$prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
	// On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
    $contenu = mysql_real_escape_string(htmlspecialchars($_POST['contenu'])); // De même pour le message
    $contenu = nl2br($contenu); // Pour le message, comme on utilise un textarea, il faut remplacer les 				                                   Entrées par des <br />
	// Test pour vérifier si les variables sont vides ou non avant l'écriture 
	if ($nom=="" and $prenom=="" or $contenu=="")
			{$test=1;}
	else 	{$test=0;}

	if ($test==0)
			{
			// On peut enfin enregistrer
			mysql_query("INSERT INTO livre_or VALUES('', '" . $nom . "', '".$prenom."','" . $contenu . "')");
			}
}




// --------------- Etape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------
 
// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 5; 
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livre_or');
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="livre_or.php?page=' . $i . '">' . $i . '</a> ';
}

?>
 

 

<?php
 
// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------
 
if (isset($_GET['page']))
	{
        $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse                               (livre_or.php?page=$i)
	}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
	{
        $page = 1; // On se met sur la page 1 (par défaut)
	}
 
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
 
$reponse = mysql_query('SELECT * FROM livre_or ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

while ($donnees = mysql_fetch_array($reponse))
	{
         echo '<p><strong>' . $donnees['nom'] . " ".$donnees['prenom'].'</strong> a écrit :<br />' . $donnees		['contenu'] . '</p>';

	}
 
mysql_close(); // fermer la connexion à MySQL
?>
 

 


La page d'entrée des données:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>La Galerie Photos de Pascal</title>
<link href="Styles/style_index.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="page">  

  	
    <form method="post" method="livre_or.php">
        
        <p>
            Message :<br />
            <textarea name="contenu" rows="6" cols="70"></textarea><br />
            Nom : <input name="nom" />Prénom :<input name="prenom" /><br />
		
			
		

			<input type="submit" value="Envoyer"/><br/>
          
      </p>
    
    </form>
	

 

     </div>



Merci pour vos réponses
Modifié par baup67 (17 Feb 2009 - 11:17)
bonjour,

ton fichier html à corriger

<form method="POST" action="livre_or.php">

nom: <input type="text" name="nom" size="20">
meme chose pour le prénom

<input type="submit" name="go" value="Envoyer">

pour ton fichier php

<?php
if(isset($_POST['go']) && $_POST['go']=='Envoyer')
{

mysql_connect("localhost", "root","");
mysql_select_db("gallerie");
 
// --------------- Etape 1 -----------------
// Si un message est envoyé, on l'enregistre
// -----------------------------------------

if (isset($_POST['nom']) and isset($_POST['prenom']) and isset($_POST['contenu']))
{
    $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
    $prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
	// On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
    $contenu = mysql_real_escape_string(htmlspecialchars($_POST['contenu'])); // De même pour le message
    $contenu = nl2br($contenu); // Pour le message, comme on utilise un textarea, il faut remplacer les 				                                   Entrées par des <br />
	
	// Test pour vérifier si les variables sont vides ou non avant l'écriture 

	if(empty($_POST['nom']) || empty($_POST['prenom']) || empty($_POST['contenu']))
	   { echo ' ton message d'erreur'; }
	else {
		// On peut enfin enregistrer
		mysql_query("INSERT INTO livre_or VALUES('', '" . $nom . "', '".$prenom."','" . $contenu . "')");
	     }
}
}
?>


biensur je n'ai pas tout verifié ton code Smiley langue ... mais voilà déjà un debut
Modifié par flattazor (12 Feb 2009 - 18:18)
Bonjour,

... et merci d'avoir répondu...désolé de répondre si tard. Néanmoins j'ai trouvé la solution : j'ai utilisé un header... pour me rediriger vers la page.

Merci quand même