Créer une messagerie en PHP

Résolu/Fermé
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 7 janv. 2018 à 15:18
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 8 janv. 2018 à 23:20
Bonjour,
J'ai créé une messagerie afin que chaque membre puisse envoyer des messages privé.
Ce qui est déjà fonctionnelle....
Une page pour envoyer un message à un ou à plusieurs membres à la fois avec la possibilité d'envoyer une pièce jointe.
Une page pour consulter ses messages reçu.
Une page pour lire ses messages envoyé.

Pour terminer je souhaiterai pouvoir répondre à un message reçu, malheureusement je n'y arrive pas.
J'ai créé un bouton "répondre" en cliquant dessus l'id du destinataire est directement affiché dans l'url ce qui devrait me permettre de lui envoyer directement le message.
$lien2 = '_mess_repon.php?dest='.$donnees->idexp.'';
echo '<li><a href="'.$lien2.'"><input type="submit" name="submit" value="Répondre">

En fait l'INSERT du destinataire ne ce fait pas, voici la page concernée, si vous pouvez m'aider s'ils vous plait, je vous remercie.
<?php if (isset($_SESSION['idpers']) && $_SESSION['idpers'] != NULL) {

$idmess  	= isset($_POST['idmess']) ? $_POST['idmess'] : NULL;
$idexp  	= !empty($_POST['idexp']) ? $_POST['idexp'] : NULL;
$dmess  	= isset($_POST['dmess']) ? $_POST['dmess'] : '';
$tmess 		= isset($_POST['tmess']) ? trim($_POST['tmess']) : '';
$mess  		= isset($_POST['mess']) ? trim($_POST['mess']) : '';
$file_nom 	= isset($_POST['file_nom']) ? $_POST['file_nom'] : '';
$file_url 	= isset($_POST['file_url']) ? $_POST['file_url'] : '';
$action 	= !empty($_POST['action']) ? $_POST['action'] : NULL;

    switch($action) {
		case 'ajouter':
			$sql = "INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
					VALUES (:idexp,:dmess,:tmess,:mess,:file_nom,:file_url)";
			$req = $bdd->prepare($sql);
			$req->execute(array(
							':idexp' 	=> $_SESSION['idpers'],
							':dmess' 	=> $dmess,
							':tmess' 	=> $tmess,
							':mess' 	=> $mess,
							':file_nom' => $file_nom,
							':file_url' => $file_url));
			
			$idmess 	= $bdd->lastInsertId();
			//On récupère la valeur de l'id du destinataire
			$dest 		= (int) $_GET['dest'];
			
			$sql = "INSERT INTO cdc_destinataires (idmess, iddest)
					VALUES ('".$idmess."','".$dest."')";
			$requete = $bdd->prepare($sql);
			$requete->execute(array(
									':idmess' => $idmess,
									':iddest' => $dest));
            break;
    }

		echo '<form method="post" name="env" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data">';
		echo '<table border="0" cellspacing="1" cellpadding="5">';
		echo '<tr>';
		echo '<p>';
		echo 'Fichier autoriser (PDF seulement) 1 MO maximum :</br></br>';
		echo '<input type="file" name="upload_file" id="upload_file"/>';
		echo '</p>';
		echo '</tr><tr>';
		echo '<td><input type="hidden" name="dmess" value="'.$today.'" size="8"></td>';
		echo '</tr><tr>';
		echo '<td class="libel">Titre:</td>';
		echo '<td><textarea name="tmess" rows="1" cols="40" class="oblig"></textarea></td>';
		echo '</tr><tr>';
		echo '<td class="libel">Message:</td>';
		echo '<td><textarea name="mess" rows="6" cols="40"></textarea></td>';	
		echo '</tr><tr>';
		echo '<td><input type="hidden" name="action" value="ajouter"></td>';
		echo '<td class="data"><input type="submit" name="submit" value="Envoyer le message"></td>';
		echo '</tr>';
		echo '</table>';
		echo '</form>';

} else { redir("index.php"); } ?>
A voir également:

4 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
7 janv. 2018 à 15:24
Bonjour,

Commence par appliquer les conseils que je t'ai déjà donné à plusieurs reprises concernant l'écriture de ton code .. et plus particulièrement sur l'utilisation des TRY/CATCH au niveau de tes requêtes !
Ensuite.... revient nous montrer le code modifié si le souci persiste....
Là seulement on regardera.


pour rappel : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Et : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code


0
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
7 janv. 2018 à 15:25
Et pour répondre quand même à ta question..... ton code regarde ce que vaut la variable $action .... variable que tu récupère par la méthode POST.
Sauf que là.. vu que tu passes par une URL .. il n'y a pas de POST ... mais des GET
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
7 janv. 2018 à 21:34
Bonjour,
Je te renvoie mon code modifié.
<?php if (isset($_SESSION['idpers']) && $_SESSION['idpers'] != NULL) {

$idmess		= isset($_REQUEST['idmess']) ? $_REQUEST['idmess'] : NULL;
$idexp  	= !empty($_POST['idexp']) ? $_POST['idexp'] : '';
$dmess  	= isset($_POST['dmess']) ? $_POST['dmess'] : '';
$tmess 		= isset($_POST['tmess']) ? trim($_POST['tmess']) : '';
$mess  		= isset($_POST['mess']) ? trim($_POST['mess']) : '';
$file_nom 	= isset($_POST['file_nom']) ? $_POST['file_nom'] : '';
$file_url 	= isset($_POST['file_url']) ? $_POST['file_url'] : '';

if (isset($_REQUEST['action']) AND !empty($_REQUEST['action'])) {
    
    switch($_REQUEST['action']) {
		case 'ajouter':
			$sql = "INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
					VALUES (:idexp,:dmess,:tmess,:mess,:file_nom,:file_url)";
			$datas = array(
							':idexp'=>$idexp,
							':dmess'=>$dmess,
							':tmess'=>$tmess,
							':mess'=>$mess,
							':file_nom'=>$file_nom,
							':file_url'=>$file_url);
			try {
				$requete = $bdd -> prepare($sql) ;
				$requete->execute($datas) ;
			} catch(Exception $e) {
				echo " Erreur ! ".$e->getMessage();
				echo " Les datas : " ;
				print_r($datas);
			}
			
			$idmess 	= $bdd->lastInsertId();
			$iddest  	= isset($_POST['iddest']) ? $_POST['iddest'] : '';
			
			$sql = "INSERT INTO cdc_destinataires (idmess, iddest)
					VALUES (:idmess,:iddest)";
			$datas = array(
							':idmess'=>$idmess,
							':iddest'=>$iddest);
			try {
				$requete = $bdd -> prepare($sql) ;
				$requete->execute($datas) ;
			} catch(Exception $e) {
				echo " Erreur ! ".$e->getMessage();
				echo " Les datas : " ;
				print_r($datas);
			}
            break;
    }
}

		echo '<form method="post" name="env" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data">';
		echo '<table border="0" cellspacing="1" cellpadding="5">';
		echo '<tr>';
		echo '<p>';
		echo 'Fichier autoriser (PDF seulement) 1 MO maximum :</br></br>';
		echo '<input type="file" name="upload_file" id="upload_file"/>';
		echo '</p>';
		echo '</tr><tr>';
		echo '<td><input type="hidden" name="dmess" value="'.$today.'" size="8"></td>';
		echo '</tr><tr>';
		echo '<td class="libel">Titre:</td>';
		echo '<td><textarea name="tmess" rows="1" cols="40" class="oblig"></textarea></td>';
		echo '</tr><tr>';
		echo '<td class="libel">Message:</td>';
		echo '<td><textarea name="mess" rows="6" cols="40"></textarea></td>';	
		echo '</tr><tr>';
		echo '<td><input type="hidden" name="action" value="ajouter"></td>';
		echo '<td class="data"><input type="submit" name="submit" value="Envoyer le message"></td>';
		echo '</tr>';
		echo '</table>';
		echo '</form>';

} else { redir("index.php"); } ?>
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
8 janv. 2018 à 14:34
Bonjour
En fait le try/catch ne me renvoie aucune erreur. L'INSERT "iddest" de la table cdc_destinataires ne ce fait pas.
<?php if (isset($_SESSION['idpers']) && $_SESSION['idpers'] != NULL) {

$idmess		= isset($_REQUEST['idmess']) ? $_REQUEST['idmess'] : NULL;
$idexp  	= !empty($_POST['idexp']) ? $_POST['idexp'] : '';
$dmess  	= isset($_POST['dmess']) ? $_POST['dmess'] : '';
$tmess 		= isset($_POST['tmess']) ? trim($_POST['tmess']) : '';
$mess  		= isset($_POST['mess']) ? trim($_POST['mess']) : '';
$file_nom 	= isset($_POST['file_nom']) ? $_POST['file_nom'] : '';
$file_url 	= isset($_POST['file_url']) ? $_POST['file_url'] : '';

if (isset($_REQUEST['action']) AND !empty($_REQUEST['action'])) {
    
    switch($_REQUEST['action']) {
		case 'ajouter':
			$sql = "INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
					VALUES (:idexp,:dmess,:tmess,:mess,:file_nom,:file_url)";
			$datas = array(
							':idexp'=>$idexp,
							':dmess'=>$dmess,
							':tmess'=>$tmess,
							':mess'=>$mess,
							':file_nom'=>$file_nom,
							':file_url'=>$file_url);
			try {
				$requete = $bdd -> prepare($sql) ;
				$requete->execute($datas) ;
			} catch(Exception $e) {
				echo " Erreur ! ".$e->getMessage();
				echo " Les datas : " ;
				print_r($datas);
			}
			
			$idmess 	= $bdd->lastInsertId();
			$iddest  	= isset($_POST['iddest']) ? $_POST['iddest'] : '';
			
			$sql = "INSERT INTO cdc_destinataires (idmess, iddest)
					VALUES (:idmess,:iddest)";
			$datas = array(
							':idmess'=>$idmess,
							':iddest'=>$iddest);
			try {
				$requete = $bdd -> prepare($sql) ;
				$requete->execute($datas) ;
			} catch(Exception $e) {
				echo " Erreur ! ".$e->getMessage();
				echo " Les datas : " ;
				print_r($datas);
			}
            break;
    }
}

		echo '<form method="post" name="env" action="'.$_SERVER['PHP_SELF'].'" enctype="multipart/form-data">';
		echo '<table border="0" cellspacing="1" cellpadding="5">';
		echo '<tr>';
		echo '<p>';
		echo 'Fichier autoriser (PDF seulement) 1 MO maximum :</br></br>';
		echo '<input type="file" name="upload_file" id="upload_file"/>';
		echo '</p>';
		echo '</tr><tr>';
		echo '<td><input type="hidden" name="dmess" value="'.$today.'" size="8"></td>';
		echo '</tr><tr>';
		echo '<td class="libel">Titre:</td>';
		echo '<td><textarea name="tmess" rows="1" cols="40" class="oblig"></textarea></td>';
		echo '</tr><tr>';
		echo '<td class="libel">Message:</td>';
		echo '<td><textarea name="mess" rows="6" cols="40"></textarea></td>';	
		echo '</tr><tr>';
		echo '<td><input type="hidden" name="action" value="ajouter"></td>';
		echo '<td class="data"><input type="submit" name="submit" value="Envoyer le message"></td>';
		echo '</tr>';
		echo '</table>';
		echo '</form>';

} else { redir("index.php"); } ?>
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
8 janv. 2018 à 23:20
J'ai finalement réussi à résoudre mon problème seul.
0