Bonsoir ! c'est re moi ^^

Donc ayant fini mon espace membre ( Merci à golendercaria pour son aide d’ailleurs ;) ) je m'attaque à un mini tchat en php mysql et ajax.

Tout fonctionne ... Sauf que j'ai foiré cela dans ma colonne de gauche et quand je met mmon pseudo ou message trop long genre " AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA " Sa déborde sur le milieu de page et sa vas sur mon slider =/

P'tit bout de code:

echo ('<div class="article">');
    echo ('<h4>'.htmlentities(stripslashes($val'pseudo'])).'</h4>');
    echo ('<small class="date">'.date('H\:i\:s',$val'timestamp']).'</small>');
    echo ('<p>'. htmlentities(stripslashes($val'message'])) .'</p>');
    echo ('</div>');

Une idée ?

14 réponses


golendercaria
Réponse acceptée

La ton textarea est vide de toute manière.
Je fait un test en utilisant ton code et en ajoutant une chaine "dddddddddddddddddddddddddddddddddddddddddd" elle est parfaitement
couper. Essaye toi même avec cet ligne.

Message : <br/><textarea name="message" rows="5" cols="20" class="mini_tchat" id="message" style="overflow:scroll; width:200px; height:150px; word-wrap:break-word;">eghzt ehth thrzethhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh</textarea><br /><br />

Hello, tu n'as qu'à limiter le nombre de caractères pour un pseudo? :) (à faire à la page de connexion au Chat, input => maxlength="15")

didouchy
Auteur

J'ai déjà fait ceci :) ( Du moins, j'ai autorisé que les membre a voir le mini tchat et mit leur pseudo pré-entré ( avec value="" ) et readonly="readonly" pout ne pas qu'il le modifie Niak niak niak. Le problème ce pose dans mon textarea :)

Faut régler la boite en css. Une propriété overflow par exemple. Ou ton paragraphe en

float:left

P.S. Merci pour ton remerciement :)

didouchy
Auteur

J'ai fait comme tu ma dit mais celui-ci ne fonctionne pas =S

echo ('<div class="article">');
    echo ('<h4>'.htmlentities(stripslashes($val'pseudo'])).'</h4>');
    echo ('<small class="date">'.date('H\:i\:s',$val'timestamp']).'</small>');
    echo ('<p class="hidden">'. htmlentities(stripslashes($val'message'])) .'</p>');
    echo ('</div>');

Dans mon formulaire j'ai mit

Pseudo : <br/><input type="text" maxlength="10" name="pseudo" value="<?php if(isset($_SESSION'username']))
    {echo ' '.htmlentities($_SESSION'username'], ENT_QUOTES, 'UTF-8');} ?>" id="pseudo" readonly="readonly"/><br /> <br />
    Message : <br/><textarea name="message" rows="5" cols="20" class="mini_tchat" id="message"></textarea><br /><br />
    <input type="button" class="button" value="Envoyer" onclick="submitChat();" />

Et mon CSS

.mini_tchat{overflow:scroll;}
.mini{overflow:hidden;}

Mais il par tout droit sur mon slider :(

PS: Il est parfaitement normal de remercier ceux qui nous aide :)

Si un mot unique (sans espace blanc) dépasse la largeur du cadre qui contient l'élément, le comportement normal consiste à étendre le contenu au delà de la largeur normale du cadre, sans retour à la ligne. Vous pouvez cependant utiliser la valeur de break-word pour forcer la césure d'un mot long au niveau du caractère qui se trouve au bord du cadre.

word-wrap:break-word;

PS : Propriétés CSS3
<u>Source :</u> http://www.css-faciles.com/liste-proprietes/word-wrap.php

As-tu définit la largeur de ton bloc avant d'utiliser word-wrap?

didouchy
Auteur

oui avec cols et rows avec overflow:scroll mais aussi avec width:150px; height:150px sa ne fait rien...

Propriété css3, tu as un navigateur compatible ?

didouchy
Auteur

j'ai essayé avec chrome, firefox, safari et IE8 sur aucun d'eux cela ne fonctionne...

Montre la partie HTMl interpréter. Je vais jetter un coup d'oeil.

didouchy
Auteur

Voilà le block_minichat.php ( via un include dans mon index.php )

<div align="center">
Pseudo : <br/><input type="text" maxlength="10" name="pseudo" value="<?php if(isset($_SESSION'username'])){echo ' '.htmlentities($_SESSION'username'], ENT_QUOTES, 'UTF-8');} ?>" id="pseudo" readonly="readonly"/><br /><br />
Message : <br/><textarea name="message" rows="5" cols="20" class="mini_tchat" id="message"></textarea><br /><br />
<input type="button" class="button" value="Envoyer" onclick="submitChat();" />
</div>

Dans la parti php ( lors de l'envoi des information )

if (isset($_POST'pseudo']) && isset($_POST'message'])) 
{
    if (!empty($_POST'pseudo']) && !empty($_POST'message'])) 
    {
    $message = mysql_real_escape_string(utf8_decode($_POST'message']));
        $pseudo = mysql_real_escape_string(utf8_decode($_POST'pseudo']));
        mysql_query("INSERT INTO minichat(pseudo,message,timestamp) VALUES('$pseudo', '$message', '".time()."')");
    }
}
$reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0,10");
while($val = mysql_fetch_array($reponse))
{
    echo ('<div class="article">');
    echo ('<h4>'.htmlentities(stripslashes($val'pseudo'])).'</h4>');
    echo ('<small class="date">'.date('H\:i\:s',$val'timestamp']).'</small>');
    echo ('<p class="hidden">'. htmlentities(stripslashes($val'message'])) .'</p>');
    echo ('</div>');
}
mysql_close();

Ensuite la parti CSS pour les class=""

.mini_tchat{overflow:scroll; width:150px; height:150px; word-wrap:break-word;}
.minichat{overflow:hidden; width:150px; height:150px;}
didouchy
Auteur

J'ai défini les champ que tu a mit dans le textarea via mon CSS, ce n'est pas pareil ?

EDIT: Sa déborde aussi =S

Si tu veut essayé par toi même ^^
http://jeux-en-reseaux.eu/azerty/

il faut ce connecté via l'espace membre donc:
ID: teste
PASS: testee

:)

didouchy
Auteur

J'AI TROUVER ! En faite, j'ai défini mes champs dans mon fichier block_minichat qui est que en html. J'ai donc essayé de mettre ceci dans le fichier minichat.php et dans le champ:

. htmlentities(stripslashes($val'message'])) .

comme ceci:

echo ('<p style=" word-wrap:break-word;">'. htmlentities(stripslashes($val'message'])) .'</p>');

Du coup sa fonctionne :D Merci beaucoup golendercaria, tes réponse m'ont rendu moins con ^^