J'ai un textarea qui enregistre un message, et avec ajax je l'affiche en dessous du textarea.
Le problème c'est que si on fait des retours à la ligne sans écrire de texte, le formulaire s'envois et un bloc blanc apparaît sans texte.
J'aimerais que le formulaire ne s'envois pas, si il y a que des retours à la ligne ou des tabulations ou espace sans texte.
Et que si il y a du texte, les retours à la ligne, tabulations et espace en trop soient supprimés.
La fonction trim() ne fonctionne pas avec mon code
PS : sur ma connexion à la base de donnée, le charset utf8 est ajouté : self::$connexion -> exec('SET NAMES utf8');
// CLASS : Statut
class Statut {
public static function sendStatut($user_id,$statut_text,$statut_acces,$statut_photo,$statut_etat){
$statut_text = trim($statut_text);
if(isset($_POST['statut_text']) && !empty($_POST['statut_text'])){
if(($statut_acces == 'amis') || ($statut_acces == 'moi') || ($statut_acces == 'public')){
$resultat = Bdd::connect() -> prepare(INSERT.USERSZ_STATUT.STATUTINSERT);
$resultat -> execute(array('user_id' => $user_id,'statut_text' => $statut_text,'statut_acces' => $statut_acces,'statut_photo' => $statut_photo,'statut_etat' => $statut_etat));
$avatar50 = $_SERVER['DOCUMENT_ROOT'].'/users/upload/avatars/'.Statut::newsPost('id').'-mini.jpg';
$avatarDefault = Statut::newsPost('sexe') == 'homme' ? 'users/upload/avatars/homme.jpg' : 'users/upload/avatars/femme.jpg';
echo '<li class="clearfix">';
echo '<div class="statutAvatar arrow">';
echo '<a href="'.Statut::newsPost('pseudo').'">';
if(file_exists($avatar50)){ echo '<img src="users/upload/avatars/'.Statut::newsPost('id').'-mini.jpg" height="50" width="50" alt="" />'; } else { echo '<img src="'.$avatarDefault.'" height="50" width="50" alt="" />'; }
echo '</a>';
echo '</div>';
echo '<div class="statutContent">';
echo '<p>'.Statut::newsPost('statut_text').'</p>';
echo '</div>';
echo '</li>';
} else {
return false;
}
} else {
return false;
}
}
public static function displayStatut(){
$resultat = Bdd::connect() -> prepare(SELECT.ALL.USERS_STATUT.' LEFT JOIN users ON users_statut.user_id = users.id ORDER BY statut_id DESC');
$resultat -> execute();
while($statut = $resultat -> fetch(PDO::FETCH_ASSOC)){
$avatar50 = $_SERVER['DOCUMENT_ROOT'].'/users/upload/avatars/'.$statut['id'].'-mini.jpg';
$avatarDefault = $statut['sexe'] == 'homme' ? 'users/upload/avatars/homme.jpg' : 'users/upload/avatars/femme.jpg';
echo '<li class="clearfix">';
echo '<div class="statutAvatar arrow">';
echo '<a href="'.$statut['pseudo'].'">';
if(file_exists($avatar50)){ echo '<img src="users/upload/avatars/'.$statut['id'].'-mini.jpg" height="50" width="50" alt="" />'; } else { echo '<img src="'.$avatarDefault.'" height="50" width="50" alt="" />'; }
echo '</a>';
echo '</div>';
echo '<div class="statutContent">';
echo '<p>'.nl2br($statut['statut_text']).'</p>';
echo '</div>';
echo '</li>';
}
}
public static function newsPost($info){
$resultat = Bdd::connect() -> prepare(SELECT.ALL.USERS_STATUT.' LEFT JOIN users ON users_statut.user_id = users.id ORDER BY statut_id DESC');
$resultat -> execute();
$infoPost = $resultat -> fetch(PDO::FETCH_ASSOC);
return $infoPost[$info];
}
}
La class est appelée depuis la page ajax updatestatus.php: <?php
session_start();
include('../../class/functions.class.php');
Statut::sendStatut($_SESSION['id'],$_POST['statut_text'],$_POST['statut_acces'],$_POST['statut_photo'],$_POST['statut_etat']);
?>
Voici le code ajax : [javascript]
$('#statut').submit(function(){
var statut_text = $(this).find('textarea[name=statut_text]').val();
var statut_acces = $(this).find('input[name=statut_acces]').val();
var statut_photo = $(this).find('input[name=statut_photo]').val();
var statut_etat = $(this).find('input[name=statut_etat]').val();
var dataString = 'statut_text='+statut_text+'&statut_acces='+statut_acces+'&statut_photo='+statut_photo+'&statut_etat='+statut_etat;
$('#loadStatut').show();
setTimeout(function(){
$.ajax({
type: 'POST',
url: '../users/ajax/updatestatus.php',
data: dataString,
cache: false,
success: function(data){
$('textarea[name=statut_text]').attr('value','').css({'height':'40px'});
$(data).insertAfter('#newsPost').hide().fadeIn();
$('#loadStatut').hide();
}
});
},800);
return false;
});
[/javascript]
Et voici le code html :
<div id="composer" data-referrer="composer">
<div class="clearfix">
<form method="post" action="home" id="statut">
<input type="hidden" name="statut_acces" value="amis" />
<input type="hidden" name="statut_photo" value="" />
<input type="hidden" name="statut_etat" value="" />
<div class="statutList">
<ul class="clearfix">
<li><a href="#" id="tab_1" class="active"><i class="arrowStatut"></i>Statut</a></li>
<li><a href="#" id="tab_2"><i class="arrowStatut"></i>Photos / Vidéos</a></li>
</ul>
<img src="../img/loadStatut.gif" height="24" width="24" id="loadStatut" alt="" />
</div>
<div class="statutComposer">
<div id="tab1">
<textarea class="elastic" id="statut_text" name="statut_text" placeholder="Exprimez-vous..."></textarea>
</div>
<div id="tab2">
</div>
</div>
<div class="statutFooter">
<div class="lfloat">
<div class="lfloat wa01f1">
<a href="#" class="statutOptions tooltip_top" id="statutPhoto" title="Choisir une photo à télécharger"></a>
</div>
<div class="lfloat wa01f1">
<a href="#" class="statutOptions tooltip_top" id="statutLocation" title="Comment êtes-vous ?"></a>
</div>
</div>
<div class="rfloat">
<div class="rfloat">
<input type="submit" class="button blue buttonStatut" name="statut" value="Publier" />
</div>
</div>
</div>
</form>
</div>
</div>
<div id="newsFeed" data-referrer="newsFeed">
<div id="topList" class="listPoint"></div>
<ol class="clearfix">
<div id="newsPost"></div>
<?php Statut::displayStatut(); ?>
</ol>
<div id="botList" class="listPoint"></div>
</div>
Merci d'avance