Problème de messagerie interne

Résolu/Fermé
nicolas06100 Messages postés 12 Date d'inscription lundi 4 mai 2020 Statut Membre Dernière intervention 1 juin 2020 - 31 mai 2020 à 18:21
yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 - 1 juin 2020 à 12:09
Bonjour,
Je vais essayé d'être précis. Imaginons que pour un site il y ait un compte principal et des comptes secondaires. Un utilisateur veut envoyer un message interne à un compte secondaire. Jusqu'ici tout va bien mais je voudrais que le compte principal reçoive le même message et là, j'ai un problème car il ne reçoit rien. Dans la table "message" l'id du compte principal " dest2" est bien présent mais il n'y a que "dest" qui reçoit le message. Si quelqu’un peut m'aider, ce serait bien car je nage dans cambouis depuis deux jours et j'ai du passer quelque chose.
Table Message :


Fichier sendmess2.php :
<?php
include "../base/base.php";

foreach ($_POST as $c=>$v) { $$c=$v; }
$sql="insert into messages
set exp=:exp,
dest=:dest,
dest2=:dest2,
texte=:texte";
$rq=$db->prepare($sql);
$rq->bindParam(":exp",$exp);
$rq->bindParam(":dest",$dest);
$rq->bindParam(":dest2",$dest2);
$rq->bindParam(":texte",$texte);
$rq->execute();
$rq->closeCursor();


header("location: ../pages/cible.php");
?>


Fichier sendmess.php :
<?php
session_start();
if (! isset($_SESSION["cnx"])) {
	header("location: ../index.php");
}

$exp=$_SESSION["cnx"];
$dest=$_SESSION["cible"];
$cible=$_SESSION["cible"];

include "../base/base.php";
include "fonctions.php";

$sql1="select pseudo from users where id=:dest";
$rq1=$db->prepare($sql1);
$rq1->bindParam(":dest",$dest);
$rq1->bindColumn("pseudo",$pseudo);
$rq1->execute();
$rq1->fetch(PDO::FETCH_BOUND);

/* Cible principal */

$cible=profil($cible);
$dest2=$cible["ids"];
?>
<!DOCTYPE HTML>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Envoi d'un message interne</title>
<link rel="stylesheet" href="../css/sensual.css" />
<link rel="stylesheet" href="../css/3cols.css" />
<script src="../js/jquery.js"></script>
<script>
	function envoi() {
		expe=$("#exp").val();
		dest=$("#dest").val();
		dest2=$("#dest2").val();
		txt=$("#texte").val();
		if (txt=="") {
			alert("Le message est vide");
			$("#texte").focus();
			return false;
		}
		return true;
	}
	
	
</script>
<style>

	...
</style>
</head>

<body>
  <div id="main">
	<?php include "../outils/logo2.txt"; ?>
		<div id="slogandroite">
		<a href="bye.php" title="Déconnectez-vous">
		<img src="../images/logout.jpg" width="24" height="23" alt="Déconnexion">
		</a>
		</div>
    <div id="slogan">
			<?php include "../outils/slogan.txt"; ?>
    </div>
	<h1>Envoyer un message à <?php echo $pseudo;?></h1>
	<form action="../serveurs/sendmess2.php" method="post" onsubmit="return envoi();">
	
		<fieldset>
			<legend>Texte du message</legend>
			<textarea id="texte" name="texte"></textarea>
			<input name="exp" id="exp" type="hidden" value="<?php echo $exp;?>" />
			<input name="dest" id="dest" type="hidden" value="<?php echo $dest;?>" /><br />
			<input name="dest2" id="dest2" type="hidden" value="<?php echo $dest2;?>" /><br />
			<input type="submit" value="Envoyer le message" /><br>
		</fieldset>
	</form>
	
	<a href="../pages/cible.php"><button id="btreturn">Retour sans envoi</button></a>
	</div>
<?php include "../outils/footer.php"; ?>
</body>
</html>


Fichier cible.php :

<?php
session_start();
if (isset($_GET["cible"])) {
	$cible=$_GET["cible"];
	$_SESSION["cible"]=$cible;
} else {
	$cible=$_SESSION["cible"];
}


if (isset($_GET["retour"])) {
	$retour=$_GET["retour"];
	$_SESSION["retour"]=1;
} else {
	$retour="";
	unset($_SESSION["retour"]);
}

$idv=$_SESSION["v"];

include "../base/base.php";
$sql="select genre from users where id=:cible";
$rq=$db->prepare($sql);
$rq->bindParam(":cible",$cible);

$rq->bindColumn("genre",$genre);
$rq->execute();
$rq->fetch(PDO::FETCH_BOUND);





// MAJ visites
$sqlv1="select count(id) nb,id
from visite
where idc=:cible
and id_visiteur=:idv";
$rqv1=$db->prepare($sqlv1);
$rqv1->bindParam(":cible",$cible);
$rqv1->bindParam(":idv",$idv);
$rqv1->bindColumn("nb",$nb);
$rqv1->bindColumn("id",$id);

$rqv1->execute();
$rqv1->fetch(PDO::FETCH_BOUND);
if ($nb==0) {
	$sqlv2="insert into visite
	set idc=:cible,
	id_visiteur=:idv,
	date=now()
	";
	$rqv2=$db->prepare($sqlv2);
	$rqv2->bindParam(":cible",$cible);
	$rqv2->bindParam(":idv",$idv);
	$rqv2->execute();
} else {
	$sqlv2="update visite
	set date=now()
	where id=:id";
	$rqv2=$db->prepare($sqlv2);
	$rqv2->bindParam(":id",$id);
	$rqv2->execute();
}
if ($genre=="C") {
	header("location: cible-a.php");
} else {
	header("location: cible-b.php");
}
?>


Voilà, je pense que j'ai tout mis. Je répète, "dest" reçoit bien le message c'est "dest2" qui ne le reçoit pas . J'ai loupé quelque chose quelque part mais où, là est ma question. Merci d'avance pour votre aide.


Configuration: Windows / Firefox 76.0

3 réponses

yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 Ambassadeur 1 552
Modifié le 31 mai 2020 à 18:34
bonjour,
as-tu expliqué ce que signifie "envoyer le message"?
à quelle ligne de quel fichier fais-tu l'envoi vers dest?
à quelle ligne de quel fichier fais-tu l'envoi vers dest2?
je ne vois, dans ton code, ni vérification que chaque opération se passe bien, ni affichage qui te permette de comprendre ce que fait ton code.
1
nicolas06100 Messages postés 12 Date d'inscription lundi 4 mai 2020 Statut Membre Dernière intervention 1 juin 2020
31 mai 2020 à 18:47
re,


Dest reçoit bien :


La fonction envoi est dans sendmess.php :
<script>
function envoi() {
		expe=$("#exp").val();
		dest=$("#dest").val();
		dest2=$("#dest2").val();
		txt=$("#texte").val();
		if (txt=="") {
			alert("Le message est vide");
			$("#texte").focus();
			return false;
		}
		return true;
	}
</script>
	
0
yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 1 552 > nicolas06100 Messages postés 12 Date d'inscription lundi 4 mai 2020 Statut Membre Dernière intervention 1 juin 2020
31 mai 2020 à 19:20
je pense que tu ne nous as pas montré le code qui affiche le message chez le destinataire.
0
nicolas06100 Messages postés 12 Date d'inscription lundi 4 mai 2020 Statut Membre Dernière intervention 1 juin 2020
1 juin 2020 à 11:22
Merci beaucoup pour ton aide yg_be, en effet il fallait rajouter la requête pour "dest2" dans messagerie.php.
0
yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 1 552
1 juin 2020 à 11:25
parfait! peux-tu alors marquer la discussion comme résolue?
0
nicolas06100 Messages postés 12 Date d'inscription lundi 4 mai 2020 Statut Membre Dernière intervention 1 juin 2020
1 juin 2020 à 11:26
oui je vais le faire, je cherchais comment te mettre un merci, c'est où qu'il faut aller ?
0
yg_be Messages postés 23312 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 novembre 2024 1 552
1 juin 2020 à 12:09
tu m'as remercié, c'est très bien ainsi!
moi je vois des boutons "merci" à coté de chaque réponse (sauf la mienne, je ne peux sans doute pas me remercier).
0