Problème livre d'or en php

Résolu/Fermé
boinet2 - 19 févr. 2009 à 18:10
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
- 19 févr. 2009 à 20:21
Bonjour,
Après avoir suivis le tuto du site du Zér0 sur le PHP, je souhaite intégrer un livre d'or en php sur mon site.
Le problème se pose quand j'affiche les messages, normalement avec la fonction nl2br elle ajoute automatiquement une balise <br/> a chaque entrée dans le message, dans ma base de données on voit bien les messages avec les entrées au bon endroit mais quand j'affiche les messages en dessous de mon livre d'or sur mon site, les balises <br/> n'y sont plus ce qui fait que le texte est affiché a la suite sans retour a la ligne.
Voici mon code source:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Livre d'or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="icon" type="image/png" href="../images/lens.gif" />
<!--[if IE]><link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /><![endif]-->

<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/design.css" />
<style type="text/css">
form, .pages
{
text-align:center;
}
</style>
</head>
<body>
<?php
mysql_connect("localhost", "login", "mdp");
mysql_select_db("login");
?>
<div id="en_tete">
<!-- Ici on mettra la bannière -->
<div class="banniere">
<img src="../images/banniere.jpg" title="Bannière RCL" alt="Bannière du site"/>
</div>
</div>

<div>
<!-- Ici on mettra le menu -->
<div class="menugoch">
<ul>
<div class="liveconteur">
<?php
include("compteur.php");
?>
</div>
<?php
include("script.php");
?><br/><br/>
<?php
include("menu_gauche.php");
?>
<?php
include("menu_droit.php");
?>
<div class="corps">

<form method="post" action="livre_dor.php">
<p>Mon site vous plaît ? Laissez-moi un message !</p>
<p>
Pseudo : <input name="pseudo" /><br />
Message :<br />
<textarea name="message" rows="6" cols="35">
</textarea><br />
</p>
<p>Note :
<select name="choix">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
</select><br/><br/>
<input type="submit" value="Envoyer" />
</p>
</form>

<p class="pages">

<?php
// --------------- Etape 1 -----------------
// Si un message est envoyé, on l'enregistre
// -----------------------------------------

if (isset($_POST['pseudo']) AND isset($_POST['message']))
{
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo'])); // On utilise mysql_real_escape_string et htmlspecialchars par mesure de sécurité
$message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); // De même pour le message
$message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />

// On peut enfin enregistrer :o)
mysql_query("INSERT INTO livredor VALUES('', '" . $pseudo . "', '" . $message . "', '" . $_POST['choix'] . "')");
}

// --------------- 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 = 20; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livredor');
$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_dor.php?page=' . $i . '">' . $i . '</a> ';
}
?>

</p>

<?php


// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------

if (isset($_GET['page']))
{
$page = intval($_GET['page']); // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
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 livredor ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
while ($donnees = mysql_fetch_array($reponse))
{
echo '<p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br/> ' . $donnees['message'] . ' <br/>Il a donné la note :<strong> ' . $donnees['note'] . '</strong></p>';

}
if ($totalDesMessages == 1 OR $totalDesMessages == 0)
{
echo '<p><strong>' . $totalDesMessages . '</strong> message posté </p>';
}
else
{
echo '<p><strong>' . $totalDesMessages . '</strong> messages postés </p>';
}
mysql_close(); // On n'oublie pas de fermer la connexion à MySQL ;o)
?>

</body>
</html>

2 réponses

arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
472
19 févr. 2009 à 18:45
Bonjour,
Je viens de voir ton message et à priori je ne vois pas de trace de nl2br() dans ton code... ?
Enfin mais pas là ou il faut. Tu le met à l'enregistrement du message alors qu'il faut le mettre à l'affichage de celui-ci.
A la fin tu écris:
a écrit :<br/> ' . $donnees['message'] . ' 

Il faut mettre:
a écrit :<br/> ' . nl2br($donnees['message']) . ' 

Mais pas la peine de le mettre à l'enregistrement.
1
Merci arthezius, en effet ce code marche parfaitement pourtant le code qui me posait problème a été fait par la personne ayant rédigé le cour sur le PHP.
Merci encore pour cette bonne réponse claire et rapide.
0
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
472
19 févr. 2009 à 20:21
Mais de rien !
0