Page 1 sur 1
problème d'affichage
Posté : 21 févr. 2007, 09:29
par jide
Bonjour,
J'ai réalisé un livre d'or (php/mysql). J'ai un problème concernant l'affichage des messages, qui correspond à une simple restitution sur un background-color. Le texte n'est pas "formaté", il sort largement de la "fenêtre" prévue...
Merci de m'aider
jide
Posté : 21 févr. 2007, 09:36
par albat
d'accord.

Posté : 21 févr. 2007, 11:03
par Ultim4T0m
Ce que demande
albat, c'est simplement une vraie question et un support sur lequel nous puissions t'aider.
Expliquer ton problème ne suffit pas... Qu'attends-tu des membres de ce forum ?
Posté : 21 févr. 2007, 11:12
par albat
En effet.
Il serait judicieux que tu nous présentes le portion de code à l'origine de ton souci,
afin que nous puissions te conseiller et te guider dans la correction à y apporter.
Posté : 21 févr. 2007, 22:12
par jide
Bonsoir à tous,
Entendu... Le caractère approximatif de ma demande est à la mesure de mon incertitude quant à l'origine du problème : code ou css ?
Code : Tout sélectionner
<h4 class="entmess"><a href="mailto:<? echo $donnees['email']; ?>"><? echo $donnees['pseudo'];?></a> le <? echo date('d/m/Y', $donnees['timestamp']); ?> :</h4>
<p class="messag"><? echo $message ; ?></p>
"messag" est la zone de lecture des messages
"entmess" contient le pseudo puis la date
CSS
.messag {
text-align: left;
padding-left: 7px;
padding-right: 7px;
margin: 0 20px 0 20px;
border-width: 0 1px 1px 1px;
border-style: solid;
border-color: #A3C0D5;
}
.entmess {
text-align: left;
padding-left: 7px;
background-color: #E9F0F5;
border-width: 1px 1px 0 1px;
border-style: solid;
border-color: #A3C0D5;
margin: 0 20px 0 20px;
}
Merci encore
Posté : 21 févr. 2007, 22:19
par Ajoloca
Bonsoir,
Ne sachant pas comment est structuré ton message, je te propose une solution à l'aveugle. Tu verras bien.
Si ça ne fonctionne pas dis-nous comment ton message est structuré.
<p class="messag"><? echo nl2br($message) ; ?></p>
Posté : 21 févr. 2007, 23:43
par jide
D'abord, merci de ton attention.
J'ai le message d'erreur (dans le champ de consultation) :
Fatal error: Call to undefined function: n12br() in c:\program...
NB : je fais mes tests en local, avec EasyPhp 1.8.
Quand tu parles de la structure du message, s'agit-il de textarea ? :
Code : Tout sélectionner
<p>
<textarea name="message" rows="8" cols="35"><? echo $value2 ; ?></textarea> <br /><br />
<input type="submit" value="Envoyer" />
</p>
</form>
Merci de ton indulgence. J'utilise (trop) peu les forums et je suis tout débutant en Php.
Posté : 21 févr. 2007, 23:48
par lord.anonymous
fonction nl2br(); et non pas n12br();
Posté : 21 févr. 2007, 23:50
par Ajoloca
Re,
C'est pas le chiffre 1 (un) mais la lettre l (L).
Le nom de la fonction signifie -new line to <br /> - .
Si elle ne fonctionnait pas, ce qui n'étonnerai beaucoup, voici une équivalente
<?php
function my_nl2br($str){
$nl = Array("\n\r", "\n", "\r");
return str_replace($nl, '<br />', $str);
}
?>
Posté : 22 févr. 2007, 00:41
par jide
Quelle réactivité !
...Confondre "l" et "1"
Bon... Toujours le même problème. Je propose une vision du code plus large :
Code : Tout sélectionner
<?
if (isset($_POST['pseudo']) AND isset($_POST['message']) AND isset($_POST['email']))
{
if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $_POST['email']))
{
$pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES);
$email = htmlentities($_POST['email'], ENT_QUOTES);
$message = htmlentities($_POST['message'], ENT_QUOTES);
$value1 ='Votre pseudo';
$value2 ='Votre message';
include("Divers/smiley.php");
mysql_query("INSERT INTO livreDor VALUES('', '" . $pseudo . "', '" . $message . "', '" . time() . "', '" . $email . "')");
}
else
{
$value1 = $_POST['pseudo'];
$value2 = $_POST['message'];
?>
<h3>L'adresse e-mail saisie n'est pas valide, merci de la corriger !</h3>
<?
}
}
else
{
$value1 ='Votre pseudo';
$value2 ='Votre message';
}
?>
<form method="post" action="livre.php">
<p><? echo $phraseLOr ; ?></p>
<p class="aligng">
<input name="email" size="21"value="Votre e-mail" />
</p>
<p class="aligng">
<input name="pseudo" value="<? echo $value1 ; ?>" />
</p>
<p>
Le <a href="faq.php">BBCode</a> et les <a href="faq.php">Smileys</a> peuvent être utilisés dans votre message (<a href="faq.php">aide>>></a>)</p>
<p>
<textarea name="message" rows="8" cols="35"><? echo $value2 ; ?></textarea> <br /><br />
<input type="submit" value="Envoyer" />
</p>
</form>
<?
$retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM livreDor");
$donnees = mysql_fetch_array($retour);
?>
<p class="centre"><em>Il y a <? echo $donnees['nbre_entrees']; ?> message(s) dans le livre d'or !</em><br /><br /></p>
<?
$MessPage = 10;
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreDor');
$donnees = mysql_fetch_array($retour);
$total = $donnees['nb_messages'];
$Pages = ceil($total / $MessPage);
if (isset($_GET['page']))
{
$page = intval($_GET['page']);
}
else
{
$page = 1;
}
$premierMess = ($page - 1) * $MessPage;
$reponse = mysql_query('SELECT * FROM livreDor ORDER BY id DESC LIMIT ' . $premierMess . ', ' . $MessPage);
while ($donnees = mysql_fetch_array($reponse))
{
$message = nl2br($donnees['message']);
?>
<h4 class="entmess"><a href="mailto:<? echo $donnees['email']; ?>"><? echo $donnees['pseudo'];?></a> le <? echo date('d/m/Y', $donnees['timestamp']); ?> :</h4>
<p class="messag"><? echo nl2br($message) ; ?></p>
<?
}
mysql_close();
?>
J'ai pas essayé l'alternative de Ajoloca ...ne voyant pas vraiment où la placer (mais j'essaierais volontiers, avec encore de l'aide).
Merci
Posté : 23 févr. 2007, 01:02
par jide
Résolu...
Au cours de mes tests, j'écrivais (...) le message par appui répétitif sur une touche, sans le moindre espace. En aménageant des espaces (au hasard), tout rentre dans l'ordre, tout fonctionne bien avec le code initial du script.
Merci encore.