Menu

Créer une messagerie en PHP [Résolu]

LaChaux78 292 Messages postés lundi 25 juillet 2016Date d'inscription 28 mai 2018 Dernière intervention - 7 janv. 2018 à 15:18 - Dernière réponse : LaChaux78 292 Messages postés lundi 25 juillet 2016Date d'inscription 28 mai 2018 Dernière intervention
- 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"); } ?>
Afficher la suite 

Votre réponse

5 réponses

jordane45 21428 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 juin 2018 Dernière intervention - 7 janv. 2018 à 15:24
0
Merci
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 : http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

Et : http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code


jordane45 21428 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 juin 2018 Dernière intervention - 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
Commenter la réponse de jordane45
LaChaux78 292 Messages postés lundi 25 juillet 2016Date d'inscription 28 mai 2018 Dernière intervention - 7 janv. 2018 à 21:34
0
Merci
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"); } ?>
Commenter la réponse de LaChaux78
LaChaux78 292 Messages postés lundi 25 juillet 2016Date d'inscription 28 mai 2018 Dernière intervention - 8 janv. 2018 à 14:34
0
Merci
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"); } ?>
Commenter la réponse de LaChaux78
LaChaux78 292 Messages postés lundi 25 juillet 2016Date d'inscription 28 mai 2018 Dernière intervention - 8 janv. 2018 à 23:20
0
Merci
J'ai finalement réussi à résoudre mon problème seul.
Commenter la réponse de LaChaux78