problème d'affichage

Petit nouveau ! | 5 Messages

21 févr. 2007, 09:29

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

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

21 févr. 2007, 09:36

d'accord. :langue:

Eléphant du PHP | 445 Messages

21 févr. 2007, 11:03

:D

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 ?
LLDC
Ulti

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

21 févr. 2007, 11:12

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.

Petit nouveau ! | 5 Messages

21 févr. 2007, 22:12

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

ViPHP
ViPHP | 1961 Messages

21 févr. 2007, 22:19

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>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Petit nouveau ! | 5 Messages

21 févr. 2007, 23:43

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.

Eléphant du PHP | 216 Messages

21 févr. 2007, 23:48

fonction nl2br(); et non pas n12br();

ViPHP
ViPHP | 1961 Messages

21 févr. 2007, 23:50

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);
	}
?>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Petit nouveau ! | 5 Messages

22 févr. 2007, 00:41

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

Petit nouveau ! | 5 Messages

23 févr. 2007, 01:02

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.