Messagerie Interne

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Messagerie Interne

par jpaul » 08 août 2007, 17:41

Ben je t'ai donné la marche à suivre : faire un echo de tes requêtes SQL pour pouvoir les soumettre avec phpmyadmin. As-tu essayé de faire cela ?

Si tu préfère, tu peux aussi faire echo de tes variables (en commençant $sql_nb par exemple).

L'une où l'autre de ces methodes devrait te permettre de remonter à l'erreur qui fait que ton programme ne trouve pas de messages alors que toi tu sais qu'il y en a.

par benjam89 » 08 août 2007, 16:07

Merci, tu as raison, mais sa ne fonctionne toujours pas :)

par jpaul » 08 août 2007, 11:05

Et je pense avoir localisé l'erreur ici:
$requete=mysql_db_query($sql_bdd,"select pseudo from membres where pseudo="$pseudo"",$db_link) or die(mysql_error());
$id_destinataire = mysql_result($requete);
                                                                                        
/* Requête pour compter les messages présents dans notre base de données */
$sql_nb = "SELECT COUNT(*) FROM `messages` WHERE id_destinataire=". $pseudo ."";
Pour le moment, je n'ai pas d'erreur qui s'affiche, mais je n'ai rien du tout, même plus la phrase pour me dire qu'il n'y à pas de données dans la base

Merci pour votre aide car je ne sais pas quel est cette erreur
Bonjour,

Quelque chose m'intrigue ce code recherche un id_destinataire :
$id_destinataire = mysql_result($requete);
puis il utilise pseudo (pour la recherche sql) :
$sql_nb = "SELECT COUNT(*) FROM `messages` WHERE id_destinataire=". $pseudo ."";
ne faut-il pas remplacer pseudo par id_destinataire :
$sql_nb = "SELECT COUNT(*) FROM `messages` WHERE id_destinataire=". $id_destinataire ."";

par benjam89 » 07 août 2007, 20:18

Alors je viens de refaire mon script et le voici:
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title></title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="author" content="Bazonnet Benjamin" />
<meta name="generator" content="Réseau Geames - Studio de développement de jeux en lignes" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
/* <![CDATA[ */ 
body {
color: #000;
background-color: #efefef;
font-family: verdana, helvetica, sans-serif;
font-size: 80% !important;
}
p.situation {
text-align: right;
padding: 1em;
}
p.navigation {
text-align: center;
font-size: 0.85em;
text-decoration: underline;
}
p.mess {
float: right;
font-size: 0.85em;
}
p.pas_de_donnees {
text-align: center;
font-size: 0.85em;
}
/* ]]> */
</style>
</head>
<body>
<?php
/**
Commençons par fixer les paramètres :
*/
/* Paramètres de connexion */
$admin_bd   = "************";              /* Le pseudonyme permettant à l'administrateur de se connecter */
$mdp_bd     = "*************";                  /* Le mot d passe de l'administrateur de base de données */
$serveur_bd = "***************";         /* L'adresse du serveur de base de données */
$base_bd    = "**************";           /* La base de données où sont enregistrées les informations */
                                                                                        
/* Paramètres de pagination */
$nb_mess_par_page = 1;             /* Nombre de messages qui seront affichées sur chaque page */
$url = "./mess_recept.php?id=$id&page=";
                                                                                        
/* On détermine quelle est la page qui est actuellement affichée */
$page_en_cours    = isset($_GET['page']) ? $_GET['page'] : 0;
$page_affichee    = ($page_en_cours + 1);
                                                                                        
/* Connexion au serveur de base de données */
$connexion = mysql_pconnect($serveur_bd, $admin_bd, $mdp_bd);
mysql_select_db($base_bd);
                                                                                        $requete=mysql_db_query($sql_bdd,"select pseudo from membres where pseudo=\"$pseudo\"",$db_link) or die(mysql_error());
$id_destinataire = mysql_result($requete);
                                                                                        
/* Requête pour compter les messages présents dans notre base de données */
$sql_nb = "SELECT COUNT(*) FROM `messages` WHERE id_destinataire=". $pseudo ."";
                                                                                        
/* Exécution de la requête et récupération du résultat */
$resultat_1 = mysql_query($sql_nb);
$nb_messages = mysql_result($resultat_1, 0);
                                                                                        
/* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */
$nb_pages = ceil($nb_messages / $nb_mess_par_page);
                                                                                        
/** 
Nous disposons maintenant de suffisament d'éléments pour créer notre barre de navigation.
Première chose à vérifier : avons-nous plusieurs pages, et au moins une ?
*/
if($nb_pages > 0)
{
/* On définit une variable qui contiendra les données de navigation */
$barre_nav = "";
/* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */
if($nb_pages > 1)
{
/** 
Nous avons plusieurs pages: nous allons afficher successivement les liens vers
les pages précédentes s'il y en a, la page en cours et les liens vers les pages
suivantes. Nous aurons une barre sous la forme : 1 | 2 | 3 etc.. en liens clicables
sauf pour la page en cours dont nous mettrons le chiffre en gras
*/
if($page_en_cours > 0)
{
for($i = 0; $i < $page_en_cours; $i++)
{
$p = $i + 1;
$barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | ";
}
}
/**
On affiche la page en cours : notez le (+ 1) : pour les calculs, nous partons d'une 
page 0 mais pour l'internaute, il est préférable de commencer à la page 1, donc on incrémente
*/
$barre_nav .= "<strong>". $page_affichee ."</strong>";
/* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */
if(($page_affichee) < $nb_pages)
{
/* Il reste encore d'autres pages à afficher */
$nb_suivantes = $nb_pages - ($page_affichee);
for($j = ($page_affichee); $j < $nb_pages; $j++)
{
$p = $j + 1;
$barre_nav .= " | <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>";
}
}
                                                                                                
/* On peut définir en plus la situation dans une autre variable à afficher ailleurs */
$page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages.";
}
else
{
/* Nous n'avons qu'une seule page, on peut se contenter d'afficher juste page 1/1 */
$barre_nav .= "page 1/1";
}
/**
On peut maintenant afficher notre page. On va commencer par récupérer les informations
On doit définir à partir de quelle message on doit récupérer les données dans la clause LIMIT.
*/
$debut = $page_en_cours * $nb_mess_par_page;
$sql_n = "SELECT id_expediteur,date,titre FROM messages LIMIT ". $debut .", ". $nb_mess_par_page .";";
$nouvelles = mysql_query($sql_n);
?>
<p class="situation"><?php echo($page_affichee); ?></p>
<?php
while($mess = mysql_fetch_assoc($nouvelles))
{
?>
<p class="mess">Expediteur <?php echo $mess['date']; ?></p>
<h3><?php echo $mess['id_expediteur']; ?></h3>
<p><?php echo $mess['titre']; ?></p>
<hr />
<?php
}
/* on libère la mémoire */
mysql_free_result($resultat_1);
mysql_free_result($nouvelles);
/* On peut fermer la connexion à MySQL */
mysql_close($connexion);
/* On affiche maintenant la barre de navigation */
?>
<p class="navigation"><?php echo($barre_nav); ?></p>
<?php
}
else
{
/** 
Nous n'avons aucune page, on peut alors afficher un message autre 
sans devoir nous préoccuper de la navigation
*/
?>
<p class="pas_de_donnees">Vous n'avez Aucun message dans votre boîte de réception</p>
<hr />
<?php
}
?>
Et je pense avoir localisé l'erreur ici:
$requete=mysql_db_query($sql_bdd,"select pseudo from membres where pseudo=\"$pseudo\"",$db_link) or die(mysql_error());
$id_destinataire = mysql_result($requete);
                                                                                        
/* Requête pour compter les messages présents dans notre base de données */
$sql_nb = "SELECT COUNT(*) FROM `messages` WHERE id_destinataire=". $pseudo ."";
Pour le moment, je n'ai pas d'erreur qui s'affiche, mais je n'ai rien du tout, même plus la phrase pour me dire qu'il n'y à pas de données dans la base

Merci pour votre aide car je ne sais pas quel est cette erreur

par jpaul » 07 août 2007, 18:53

Pourquoi avoir délesté le sujet précédent, il n'était pas si confus !
Si comme tu le dis dans le sujet précédent, il te dit qu'il n'y a aucune donnée, c'est qu'il faut que tu testes tes requêtes une par une pour voir laquelle te répond que rien ne correspond alors que tu t'attends à trouver un résultat. J'imagine que tu as une requête trop sélective. Et quand tu auras déterminé laquelle (ou lesquelles) tu pourras corriger.

par benjam89 » 07 août 2007, 18:16

Oui, excusez-moi, je n'ai pas d'erreur, je voudrais qu'il sélectionne seulement les message du membre qui désire voir ces messages, or, actuellement, il affiche la phrase qui dit qu'il n'y à aucun message comme si il n'y avais aucun message dans la base de données. Pourtant, j'ai enregistré un message de test exprès.

Voilà

Pouvez-vous m'aider svp ? :roll:
Désolé, j'était déconnecté

par Invité » 07 août 2007, 18:15

Oui, excusez-moi, je n'ai pas d'erreur, je voudrais qu'il sélectionne seulement les message du membre qui désire voir ces messages, or, actuellement, il affiche la phrase qui dit qu'il n'y à aucun message comme si il n'y avais aucun message dans la base de données. Pourtant, j'ai enregistré un message de test exprès.

Voilà

Pouvez-vous m'aider svp ? :roll:

par mere-teresa » 07 août 2007, 18:06

Que fait il actuellement ?
Quel est le problème ?

Parce que je ne lirais pas du code, si ta question est : j'ai un code, il faut me l'adapter à ce que je veux.

par zeus » 07 août 2007, 18:06

euh ... tu voudrais, tu nous donnes un code mais aucune erreur ni aucune question ...

Plusieurs solutions :
:arrow: soit tu demandes un script tout fait et je vais clôturer le sujet parce qu'on est pas un libre-service
:arrow: soit tu as oublié de nous donner des détails ...

Messagerie Interne

par benjam89 » 07 août 2007, 18:01

Bonjour,
J'ai delesté le sujet précédent et refait un autre pour expliquer mieux ! Donc, je voudrais que mon script séléctionne le pseudo du membre qui regarde sa boîte de réception, et qu'il sélectionne l'id_destinataire qui est la même chose que le pseudo.

Voici le code:
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title></title>
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="author" content="Bazonnet Benjamin" />
<meta name="generator" content="L'Equipe de Mon Hôtel Virtuel" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Pragma" content="no-cache" />
<style type="text/css">
/* <![CDATA[ */ 
body {
color: #000;
background-color: #efefef;
font-family: verdana, helvetica, sans-serif;
font-size: 80% !important;
}
p.situation {
text-align: right;
padding: 1em;
}
p.navigation {
text-align: center;
font-size: 0.85em;
text-decoration: underline;
}
p.date_nouv {
float: right;
font-size: 0.85em;
}
/* ]]> */
</style>
</head>
<body>
<?php
/**
Commençons par fixer les paramètres :
*/
/* Paramètres de connexion */
$admin_bd   = "***************";              /* Le pseudonyme permettant à l'administrateur de se connecter */
$mdp_bd     = "**************";                  /* Le mot d passe de l'administrateur de base de données */
serveur_bd = "*****************";         /* L'adresse du serveur de base de données */
$base_bd    = "****************";           /* La base de données où sont enregistrées les informations */
                                                                                                            
/* Paramètres de pagination */
$nb_message_par_page = 20;             /* Nombre de messages par page */
$url = "./mess_recept.php?id=$id&page=";
                                                                                                            
/* On détermine quelle est la page qui est actuellement affichée */
$page_en_cours    = isset($_GET['page']) ? $_GET['page'] : 0;
$page_affichee    = ($page_en_cours + 1);
                                                                                                            
/* Connexion au serveur de base de données */
$connexion = mysql_pconnect($serveur_bd, $admin_bd, $mdp_bd);
                                                                                                            mysql_select_db($base_bd);
$resultat_sql = mysql_query("select * from membres WHERE pseudo=\"$pseudo\"");
                                                                                                            
/* Requête pour compter les messages présents dans notre base de données */
$sql_nb = "SELECT COUNT(*) FROM `messagerie` WHERE id_destinataire=\"$id_destinataire\"";
                                                                                                            
/* Exécution de la requête et récupération du résultat */
$resultat_1 = mysql_query($sql_nb);
$nb_messages = mysql_result($resultat_1, 0);
                                                                                                            
/* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */
$nb_pages = ceil($nb_messages / $nb_messages_par_page);
                                                                                                            
/** 
Nous disposons maintenant de suffisament d'éléments pour créer notre barre de navigation.
Première chose à vérifier : avons-nous plusieurs pages, et au moins une ?
*/
if($nb_pages > 0)
{
/* On définit une variable qui contiendra les données de navigation */
$barre_nav = "";
/* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */
if($nb_pages > 1)
{
/** 
Nous avons plusieurs pages: nous allons afficher successivement les liens vers
les pages précédentes s'il y en a, la page en cours et les liens vers les pages
suivantes. Nous aurons une barre sous la forme : 1 | 2 | 3 etc.. en liens clicables
sauf pour la page en cours dont nous mettrons le chiffre en gras
*/
if($page_en_cours > 0)
{
for($i = 0; $i < $page_en_cours; $i++)
{
$p = $i + 1;
$barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | ";
}
}
/**
On affiche la page en cours : notez le (+ 1) : pour les calculs, nous partons d'une 
page 0 mais pour l'internaute, il est préférable de commencer à la page 1, donc on incrémente
*/
$barre_nav .= "<strong>". $page_affichee ."</strong>";
/* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */
if(($page_affichee) < $nb_pages)
{
/* Il reste encore d'autres pages à afficher */
$nb_suivantes = $nb_pages - ($page_affichee);
for($j = ($page_affichee); $j < $nb_pages; $j++)
{
$p = $j + 1;
$barre_nav .= " | <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>";
}
}
                                                                                                                    
/* On peut définir en plus la situation dans une autre variable à afficher ailleurs */
$page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages.";
}
else
{
/* Nous n'avons qu'une seule page, on peut se contenter d'afficher juste page 1/1 */
$barre_nav .= "page 1/1";
}
/**
On peut maintenant afficher notre page. On va commencer par récupérer les informations
On doit définir à partir de quelle nouvelle on doit récupérer les données dans la clause LIMIT.
*/
$debut = $page_en_cours * $nb_messages_par_page;
$sql_n = "SELECT * FROM messagerie LIMIT ". $debut .", ". $nb_messages_par_page .";";
$nouvelles = mysql_query($sql_n);
?>
<p class="situation"><?php echo($page_affichee); ?></p>
<?php
while($mess = mysql_fetch_assoc($nouvelles))
{
?>
<td id="table_1_R01C01" style="width:33%; height:50%; vertical-align: top; padding:1px 4px 1px 4px; border:1px solid #4a4141; background-color:#ffffcc; /* CellStyle */" __AddCode="here">
<P class="Normal-P"><span class="Default-Paragraph-Font-C">DATE</span></P>
</td>
<td id="table_1_R01C02" style="width:33%; height:50%; vertical-align: top; padding:1px 4px 1px 4px; border:1px solid #4a4141; background-color:#ffffcc; /* CellStyle */" __AddCode="here">
<P class="Normal-P"><span class="Default-Paragraph-Font-C">EXPÉDITEUR</span></P>
</td>
<td id="table_1_R01C03" style="width:33%; height:50%; vertical-align: top; padding:1px 4px 1px 4px; border:1px solid #4a4141; background-color:#ffffcc; /* CellStyle */" __AddCode="here">
<P class="Normal-P"><span class="Default-Paragraph-Font-C">SUJET</span></P>
</td>
<td id="table_1_R02C01" style="width:33%; height:49%; vertical-align: top; padding:1px 4px 1px 4px; border:1px solid #4a4141; background-color:#ffffff; /* CellStyle */" __AddCode="here">
<P class="Normal-P"><span class="Default-Paragraph-Font-C"><?php echo $mess['date']; ?></span></P>
</td>
<td id="table_1_R02C02" style="width:33%; height:49%; vertical-align: top; padding:1px 4px 1px 4px; border:1px solid #4a4141; background-color:#ffffff; /* CellStyle */" __AddCode="here">
<P class="Normal-P"><span class="Default-Paragraph-Font-C"><?php echo $mess['pseudo_expediteur']; ?></span></P>
</td>
<td id="table_1_R02C03" style="width:33%; height:49%; vertical-align: top; padding:1px 4px 1px 4px; border:1px solid #4a4141; background-color:#ffffff; /* CellStyle */" __AddCode="here">
<P class="Normal-P"><span class="Default-Paragraph-Font-C"><a href="message.php?id=<? echo "$id"; ?>&id_message=<? echo "$id_message"; ?>"<?php echo $mess['sujet']; ?></a></span></P>
</td>
<?php
}
/* on libère la mémoire */
                                                                                                                mysql_free_result($resultat_1);
                                                                                                                mysql_free_result($hotels);
/* On peut fermer la connexion à MySQL */
                                                                                                                mysql_close($connexion);
/* On affiche maintenant la barre de navigation */
?>
<p class="navigation"><?php echo($barre_nav); ?></p>
<?php
}
else
{
/** 
Nous n'avons aucune page, on peut alors afficher un message autre 
sans devoir nous préoccuper de la navigation
*/
?>
<h3>Vous n'avez aucun Message - Boîte de Réception Vide</h3>
<hr />
<?php
}
?>
DIVERS:
Nom de mes tables
===> Pour séléctionné le pseudo la table est membres
===> Pour la messagerie la table est messages
Nom des champs:
===> Pseudo dans la table membres
===> id_destinataire pour la table messages

Merci de votre aide