8791 sujets

Développement web côté serveur, CMS

bonjour, jai coder une zone membres et la je m'attaque au system de message privé et je rencontre un probleme, je peux accédé a la boite de messagerie mais quand je veux envoyé un message, ca me dit " cette action est impossible" je comprends pas pourquoi
jai beau cherché je trouve pas...

voila mes codes en 2 partie le form et aprés la page de traitement voila:


<?php
<form method="post" action="postok.php?action=nouveaump" name="formulaire">
   <p>
   <label for="to">Envoyer à : </label>
   <input type="text" size="30" id="to" name="to" />
   <br />
   <label for="titre">Titre : </label>
   <input type="text" size="80" id="titre" name="titre" />
   <br /><br /> // c'est le debut du form ca je vous montre qu'un morceau
 
case "nouveaump": //On envoie un nouveau mp
 
   //On passe le message et le titre dans une série de fonction
   $message = htmlspecialchars($_POST['message'], ENT_QUOTES);
   $message = nl2br($message);
   $titre = htmlspecialchars($_POST['titre'], ENT_QUOTES);
   $temps = time();
   $dest = mysql_real_escape_string($_POST['to']);
 
   //On récupère la valeur de l'id du destinataire
   //Il faut déja vérifier le nom
 
   $requete = mysql_query('SELECT membre_id FROM zone_membres
WHERE    membre_pseudo = "'.$dest.'"');
   if($data = mysql_fetch_assoc($requete))
   {
      //Enfin on peut envoyer le message
      mysql_query("INSERT INTO zone_mp
   (mp_id, mp_expediteur, mp_receveur, mp_titre, mp_text, mp_time, mp_lu)
   VALUES (',', '".$_SESSION['id']."' , '".$data['membre_id']."',
   '".$titre."', '".$message."', '".$temps."', '0')")
      or die ("Le message n'a pas pu être envoyé, veuillez réessayer");
 
      echo'<p>Votre message a bien été envoyé!
   <br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l accueil<br />
   <br />Cliquez <a href="./messagesprives.php">ici</a> pour retourner à
   la messagerie</p>';
   }
   //Sinon l'utilisateur n'existe pas !
   else
   {
      echo'<p>Désolé ce membre n existe pas, veuillez vérifier et
   réessayez à nouveau.</p>';
   }
break;
?>


et la page de traitement



<?php
//Cette fonction doit être appelée avant tout code html
session_start();
 
//On donne ensuite un titre à la page, puis on appelle notre fichier debut.php
$titre = "Poster";
?>
<body>
 
<?php
//Maintenant, on se connecte à la base de données
include("identifiants.php");
mysql_connect($adresse, $nom, $motdepasse);
mysql_select_db($database);
//On récupère la valeur de la variable action
$action = htmlspecialchars($_GET['action']);
 
// Si le membre n'est pas connecté, il est arivé ici par erreur
if (!isset($_SESSION['pseudo']))
{
echo'<p>Erreur : Vous n êtes plus connecté</p>';
}
else //Sinon on lance la suite
{
 
switch($action)
{
//Premier cas : nouveau topic
case "nouveautopic":
//On passe le message dans une série de fonction
$message = htmlspecialchars($_POST['message'], ENT_QUOTES);
$message = nl2br($message);
 
//Pareil pour le titre
$titre = htmlspecialchars($_POST['titre'], ENT_QUOTES);
 
//ici seulement, maintenant qu'on est sur qu'elle existe, on récupère la valeur de la variable f
$temps = time();
 
if (empty($_POST['message']) || empty($_POST['titre']))
{
echo'<p>Votre message ou votre titre est vide, cliquez</p>';
}
else //Si jamais le message n'est pas vide
{
 
mysql_query("UPDATE zone_membres
SET membre_post = membre_post + 1
WHERE membre_id = '".$_SESSION['id']."'")
or die ("Un problème est survenu lors de l'envoi du message");
 
//Et un petit message
echo'<p>Votre message a bien été ajouté!<br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br /></p>';
}
break; //Houra !
 
//Deuxième cas : répondre
case "repondre":
//On passe le message dans une série de fonction
$message = htmlspecialchars($_POST['message'], ENT_QUOTES);
$message = nl2br($message);
 
//ici seulement, maintenant qu'on est sur qu'elle existe, on récupère la valeur de la variable t
$temps = time();
 
if (empty($_POST['message']))
{
echo'<p>Votre message est vide, cliquez pour recommencer</p>';
}
else //Sinon, si le message n'est pas vide
{
 
mysql_query("UPDATE zone_membres
SET membre_post = membre_post + 1
WHERE membre_id = '".$_SESSION['id']."'")
or die ("Une erreur semble avoir survenu lors de l'envoi du message");
 
//Et un petit message
echo'<p>Votre message a bien été ajouté!<br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br /> pour le voir</p>';
}
break;
 
default;
echo'<p>Cette action est impossible</p>';
} //Fin du Switch
} //Fin du else, le membre est connecté
mysql_close();
?>
</div>
</body>
</html>



j'espere que vous pourrez m'aider je tiens beaucoup a ca, merci d'avance Smiley smile
Modifié par Dyphen (25 Sep 2007 - 22:21)
code un peu difficile à digérer. Pourrais tu un peux mieux cibler le problème ?
Edited by germain (25 Sep 2007 - 10:59)
lol ben c'est au moment de l'envoi du message que ca me dit " votre action est impossible " donc ca doit etre dans le 2eme code que j'ai c/c
salut,

Tu peux me dire ce qui arrive dans ta variable $action de ton switch, car d'apres le message d'erreur et ton code. Il arrive au cas par default donc regarde ta variable $action peut etre que cela viens de là.
heu lol je suis débutant tu veux dire quoi par la ? parce que je vous ai montré tout mon code la :s
et bien dans ton code ton message d'erreur s'affiche car ton swtich n'a pas pu trouver la bonne reponse dans tes propositions.

Je te propose de faire un echo $action juste avant ton switch pour savoir ce qui se trouve dans ta variable.
ha je vois je l'avais fait hier quelqu 'un m'a dit la meme chose et ca ma afficher "nouveaump" regarde mon autre code tu va comprendre ici :



[code]case "nouveaump": //On envoie un nouveau mp

   //On passe le message et le titre dans une série de fonction
   $message = htmlspecialchars($_POST['message'], ENT_QUOTES);
   $message = nl2br($message);
   $titre = htmlspecialchars($_POST['titre'], ENT_QUOTES);
   $temps = time();
   $dest = mysql_real_escape_string($_POST['to']);

   //On récupère la valeur de l'id du destinataire
   //Il faut déja vérifier le nom

   $requete = mysql_query('SELECT membre_id FROM zone_membres
   WHERE    membre_pseudo = "'.$dest.'"');
   if($data = mysql_fetch_assoc($requete))
   {
      //Enfin on peut envoyer le message
      mysql_query("INSERT INTO zone_mp
      (mp_id, mp_expediteur, mp_receveur, mp_titre, mp_text, mp_time, mp_lu)
      VALUES (',', '".$_SESSION['id']."' , '".$data['membre_id']."',
      '".$titre."', '".$message."', '".$temps."', '0')")
      or die ("Le message n'a pas pu être envoyé, veuillez réessayer");

      echo'<p>Votre message a bien été envoyé!
      <br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l accueil<br />
      <br />Cliquez <a href="./messagesprives.php">ici</a> pour retourner à
      la messagerie</p>';
   }
   //Sinon l'utilisateur n'existe pas !
   else
   {
      echo'<p>Désolé ce membre n existe pas, veuillez vérifier et
      réessayez à nouveau.</p>';
   }
break;
Bon désoler mais je comprend rien a ton code ...

car tu as des case sans switch, du html dans ton php ( 1er poste ) et vu ce que ton $action affiche, il devrai arriver sur ceux que tu viens de donner, mais ca se trouve tu as mal placer le code que tu m'as mit dans ton dernier message. Tu aurais du le mettre dans ton swtich ( la parti traitement de ton 1er poste ) apres le switch .

Mais c'est tout ce que je peux faire car personnelement je comprend très mal ton code ...
YEEEEEEEES j'ai solutionner mon probleme en suivant ce que tu m'as dit j'ai fait :


case "nouveaump": //On envoie un nouveau mp

if (empty($_POST['message']) || empty($_POST['titre']))
{
echo'<p>Votre message ou votre titre est vide, cliquez</p>';
}
else //Si jamais le message n'est pas vide
{

mysql_query("UPDATE zone_membres
SET membre_post = membre_post + 1
WHERE membre_id = '".$_SESSION['id']."'")
or die ("Un problème est survenu lors de l'envoi du message");

//Et un petit message
echo'<p>Votre message a bien été ajouté!<br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l index du forum<br /></p>';
}
   //On passe le message et le titre dans une série de fonction
   $message = htmlspecialchars($_POST['message'], ENT_QUOTES);
   $message = nl2br($message);
   $titre = htmlspecialchars($_POST['titre'], ENT_QUOTES);
   $temps = time();
   $dest = mysql_real_escape_string($_POST['to']);

   //On récupère la valeur de l'id du destinataire
   //Il faut déja vérifier le nom

   $requete = mysql_query('SELECT membre_id FROM zone_membres
   WHERE    membre_pseudo = "'.$dest.'"');
   if($data = mysql_fetch_assoc($requete))
   {
      //Enfin on peut envoyer le message
      mysql_query("INSERT INTO zone_mp
      (mp_id, mp_expediteur, mp_receveur, mp_titre, mp_text, mp_time, mp_lu)
      VALUES (',', '".$_SESSION['id']."' , '".$data['membre_id']."',
      '".$titre."', '".$message."', '".$temps."', '0')")
      or die ("Le message n'a pas pu être envoyé, veuillez réessayer");

      echo'<p>Votre message a bien été envoyé!
      <br /><br />Cliquez <a href="./index.php">ici</a> pour revenir à l accueil<br />
      <br />Cliquez <a href="./messagesprives.php">ici</a> pour retourner à
      la messagerie</p>';
   }
   //Sinon l'utilisateur n'existe pas !
   else
   {
      echo'<p>Désolé ce membre n existe pas, veuillez vérifier et
      réessayez à nouveau.</p>';
   }
   
break;


et dans mon form en action jai remi le meme nom de la page au lieu de lautre et ca envoi bien le message et je le recois bien
:D enfin