Page 1 sur 1

Messagerie privée + notification ajax en PHP

Posté : 28 févr. 2013, 05:29
par nico44530
Bonjour,

J'ai un script de notification qui affiche ou non le nombre de message reçu, tout cela en ajax.
Pour mieux comprendre, j'ai utilisé ce script sur : http://www.lephpfacile.com/howto/11-com ... rne-en-php
J'aimerais l'adapté à ma page notifications.php pour que dès qu'on reçois un message, une notification apparaisse.

J'ai déjà stocké l'id du membre en variable de session dans les pages inscription.php et connexion.php

Voici mes bases de données

wa_messagerie :
id_messagerie  int(11)  AUTO_INCREMENT
id_expediteur  int(11)
id_destinataire  int(11)
titre  text
message  text
lu  tinyint(1)
date  timestamp
wa_communaute :
id  int(11) AUTO_INCREMENT
pseudo  varchar
pass  varchar
mail  varchar
...
On utilise que l'id et le pseudo de la bdd "wa_communaute"

Voici ma page notifications.php qui est rechargée en ajax toutes les 60 secondes :
<?php
mysql_connect("***************", "***********", "**************");
mysql_select_db("*************");
$query = 'SELECT count(id_messagerie) as row FROM wa_messagerie,wa_communaute WHERE lu=0 AND id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=wa_communaute.id'; 
$result = mysql_query($query) or die (mysql_error()); 
$resultat=mysql_num_rows($result);
?>
<?php if($resultat[0] > 0 && $resultat !== false) { echo ''.$resultat[0].''; } ?>
Normalement, la requête va compter l'id des messages non lu, et afficher le résultat uniquement chez l'id du destinataire, sinon on affiche rien.
Et il ne se passe rien.
PS : Allez sur le site cité plus haut pour voir le script en entier, et allez sur la page envoyer.php .

Merci beaucoup pour votre aide :roll:

Re: Messagerie privée + notification ajax en PHP

Posté : 28 févr. 2013, 20:50
par moogli
salut,

tu n'a pas compris l'utilitée de la requete que tu détourne pour ton usage.

tu n'a pas besoi de jointure, ta requete est basique.

tu as adpaté la tablea avec le champs lu, très bien. Tu l'utilise dans la requête idem.

la requete qui permet de compter les message non lu d'un membre est similaire à la tiens sur une seule table et un prédicat plus simple.
<?php
session_start();
$_SESSION['id'] = 2;

$mysqli = new mysqli('localhost', 'nico', 'nico44530', 'nico',3306);
if ($mysqli->connect_error) {
	die('Erreur de connexion (' . $mysqli->connect_errno . ') '
			. $mysqli->connect_error);
}
$query = 'select count(*) as nb from wa_messagerie where lu=0 and id_destinataire='.$mysqli->escape_string($_SESSION['id']);

$result = $mysqli->query($query);
if($result === false){
	echo 'Erreur SQL : ' . $mysqli->error.'<br />';
}
else {
	$data = $result->fetch_object();
	echo 'Vous avez '.$data->nb.' message'.((intval($data->nb) > 1)?'s':'').' non lu'.(($data->nb > 1)?'s':'');
}
table de test
create table wa_messagerie (
id_messagerie  int(11)  not null auto_increment primary key,
id_expediteur  int(11) not null,
id_destinataire  int(11) not null,
titre varchar(100) not null,
message  text not null,
lu  tinyint(1) not null default 0,
datemessage  datetime not null
)
comme ça tu a aussi un exemple avec mysqli en POO mais tu peux bien sur utiliser mysqli en procédurale (comme tu le fait avec mysql) => doc de mysqli.
Il est recommandé d'y passer, l'extension mysql est prévue pour être supprimée.


@+

Re: Messagerie privée + notification ajax en PHP

Posté : 28 févr. 2013, 23:59
par nico44530
Merci je testerais ça :)