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

Signaler
Messages postés
407
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
6 février 2020
-
Messages postés
407
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
6 février 2020
-
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"); } ?>

4 réponses

Messages postés
31108
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 janvier 2021
3 198
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://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

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


Messages postés
31108
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 janvier 2021
3 198
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
Messages postés
407
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
6 février 2020
26
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"); } ?>
Messages postés
407
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
6 février 2020
26
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"); } ?>
Messages postés
407
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
6 février 2020
26
J'ai finalement réussi à résoudre mon problème seul.