[RESOLU] Cacher le "0" des messages reçus en PHP ou CSS

Eléphant du PHP | 386 Messages

20 févr. 2013, 02:23

Bonjour,

J'ai testé une messagerie en ajax, elle fonctionne très bien, le seul petit problème est que je n'arrive pas à cacher le "0" de la notification qui affiche le nombre de message reçu et non lu.
L'intérêt est que cela attirera les yeux du membre vers le rond rouge avec la notification. Si le rond existe déjà, cela se voit moins bien si un "1" remplace le "0" :|

J'ai essayé avec un if($resultat>0) { "J'affiche la notification avec un echo" } sinon j'affiche rien if($resultat=0) { " " } (Voir code dessous)
Et cela ne fonctionne pas :(

Ma base de donnée contient :

id INT(11) Auto Incre
message TEXT
lu TINYINT(1) : 0 = non-lu et 1 = lu
date TIMESTAMP CURRENT_TIMESTAMP

Voici mes codes :
<?php
$sql = connect_sql();
$query = 'SELECT count(id) as row FROM wa_notifications WHERE lu=0'; 
$result = mysql_query($query) or die (mysql_error()); 
$resultat = mysql_fetch_row($result); ?>
	<li class="dropItem float-r dropdown"><a href="" class="link-mail dropdown-toggle" data-toggle="dropdown"></a>
	<span class="jewelCount"><?php if($resultat>0) { ?><span class="messagesValue"><?php echo $resultat[0]; ?></span><?php } else { if($resultat=0) {  } ?><?php } ?></span>
		<ul class="dropdown-menu" style="margin-left: -13px;">
			<div class="arrowMenu"></div>
			<li class="dropsubItem"><a href="" class="dropsubLink">Messages reçus</a></li>
			<li class="dropsubItem"><a href="" class="dropsubLink">Envoyer un message</a></li>
			<li class="dropsubItem"><a href="" class="dropsubLink">Messages envoyés</a></li>
			<li class="dropsubItem"><a href="" class="dropsubLink">Voir tous mes messages</a></li>
		</ul>
	</li>
L'ajax fonctionne normalement très bien, je met le code pour mieux comprendre :

[javascript]
function getNotifications() {
$.ajax({
url: "../ajax/notifications.php",
ifModified:true,
success: function(content){
$('.messagesValue').html(content);
}
});
setTimeout(getNotifications, 5000);
}
getNotifications();
[/javascript]

Ainsi que la page notifications.php qui doit peut-être être à l'origine de ce problème :
require('../include/functions.inc.php');

$sql = connect_sql();
$query = 'SELECT count(id) as row FROM wa_notifications WHERE lu=0'; 
$result = mysql_query($query) or die (mysql_error()); 
$resultat=mysql_fetch_row($result);
if($resultat>0) {
	echo $resultat[0];
} elseif($resultat=0) {
	echo '';
}
Merci d'avance pour vos messages

Eléphant du PHP | 343 Messages

20 févr. 2013, 03:37

if($resultat==0)
? Avec 2 =
Développeur web

Eléphant du PHP | 386 Messages

20 févr. 2013, 04:02

Merci pour ton message, et non ça ne fonctionne pas :(
Bien essayé pourtant :|

Autres idées s'il vous plais ?

Merci d'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 févr. 2013, 00:17

salut,

<span class="jewelCount"><?php if($resultat>0) { ?><span class="messagesValue"><?php echo $resultat[0]; ?></span><?php } else { if($resultat=0) { } ?><?php } ?></span>

$resutat est un tableau et non un nombre. Ton premier if n'a donc aucun sens :)
donc un seul if suffit.
<p class="jewelCount">
<?php 
if($resultat !== false && $resultat['row'] > 0) { 
    echo '<span class="messagesValue">'. echo $resultat['row'].'</span>';
}
?>
</p>
par exemple


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 386 Messages

22 févr. 2013, 02:17

Cela ne va pas ralentir le serveur s'il y a beaucoup de visiteurs en un seul moment qui reçois des notifications ?
Ou alors mettre le settimeout à rafraichir toute les 1 minute ?