Messagerie privé

Résolu/Fermé
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 - 20 nov. 2017 à 09:05
yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 - 25 nov. 2017 à 10:36
Bonjour,
J'ai mis en place ma messagerie privé en PHP avec BDD Mysql. Je viens de m'apercevoir que lorsqu'on envoie un message avec espace ou virgule etc... l'envoie en BDD ne ce fait pas par contre sinon tout ce passe normalement.
Pouvez-vous m'expliquer ce que je peux faire s'ils vous plait.
Je vous remercie.

9 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
20 nov. 2017 à 09:33
Bonjour,

Il faudrait que tu nous montres ton code source php :
- La page où le formulaire est codé ;
- La page où les données sont récupérées et insérées en base.

Xavier
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
20 nov. 2017 à 10:18
Bonjour,
<h1>Envoyer un message</h1>

<?php
$PARAM  = array (
'IDMESS' => isset($_REQUEST['idmess']) ? $_REQUEST['idmess'] : '',
'IDEXP'  => isset($_POST['idexp']) ? $_POST['idexp'] : '',
'DMESS'  => isset($_POST['dmess']) ? dw2m($_POST['dmess']) : '',
'TMESS' 	=> isset($_POST['tmess']) ? $_POST['tmess'] : '',
'MESS'  => isset($_POST['mess']) ? $_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':
			
		if (!isset ($_POST['envoyer'])) {
		$erreur = "<span class='erreur'>Tu n'as pas sélectionné de membres !</span>";
		}
		elseif ($_POST['tmess'] == '' || ($_POST['mess'] =='')) {
		$erreur = "<span class='erreur'>Renseigne le Titre et le Message !</span>";
				
		} elseif (isset($_FILES["upload_localfile"]) &&  $_FILES['upload_localfile']['name'] != "") { 

		$file_name = $_FILES['upload_localfile']['name'];
		$file_extension = strrchr($file_name, ".");
			
		$file_tmp_name = $_FILES['upload_localfile']['tmp_name'];
		$file_dest = 'fichiers/'.$file_name;
		
		$extensions_autorisees = array('.pdf', '.PDF');
			
			if(in_array($file_extension, $extensions_autorisees)) {
				if(move_uploaded_file($file_tmp_name, $file_dest)) {
			
				
					$sql =	"INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
							VALUES ('".$_SESSION['idpers']."','".$PARAM['DMESS']."', '".$PARAM['TMESS']."', '".$PARAM['MESS']."', '".$file_name."', '".$file_dest."')";
	$requete = $bdd->prepare($sql);
	$requete->bindParam(':idmess', $PARAM['IDMESS']);
	$requete->bindParam(':idexp', $_SESSION['idpers']);
	$requete->bindParam(':dmess', $PARAM['DMESS']);
	$requete->bindParam(':tmess', $PARAM['TMESS']);
	$requete->bindParam(':mess', $PARAM['MESS']);
	$requete->bindParam(':file_nom', $file_name);
	$requete->bindParam(':file_url', $file_dest);
	$requete->execute();
				
$idmess = isset($_POST['idmess']) ? $_POST['idmess'] : NULL;
$idmess = $bdd->lastInsertId();
$envoyer  	= isset($_POST['envoyer']) ? $_POST['envoyer'] : NULL;
$iddest  	= isset($_POST['iddest']) ? $_POST['iddest'] : NULL;
			
		if (is_array($envoyer)) {	
			foreach($envoyer as $iddest) {             
					
$sql ="INSERT INTO cdc_destinataires (idmess, iddest)
	VALUES ('".$idmess."', '".$iddest."')";
	$requete = $bdd->prepare($sql);
	$requete->bindParam(':idmess', $idmess);
	$requete->bindParam(':iddest', $iddest);
	$requete->execute();
		}
	}

		$sql = "SELECT nom,prenom,email
			FROM cdc_personnes
			WHERE cdc_personnes.idpers = ?";
			$requete = $bdd->prepare($sql);
				
			foreach ( $_POST['envoyer'] as $idpers ) {
			$requete->execute(array($idpers));
			if ($donnees2 = $requete->fetch()) {
			// Adresse email des destinataires
			$destinataire = $donnees2->email;
			$prenom = $donnees2->prenom;
			// Titre de l'email
			$sujet = 'Nouveau message Clique de Cruet';
			// Contenu du message de l'email
			$message = '<html>';
			$message .= '<body><p>Bonjour '.$prenom.', <br/>';
			$message .= 'Je t\'ai envoyé un nouveau message dans ton espace membre...<br/>';
			$message .= 'Bonne lecture.<br/>';
			$message .= '<p>'.$_SESSION['prenom'].'</p>';
			$message .= '<p style="color:red;">Merci de ne pas répondre à cet email, ceci est un envoi automatique</p></body>';
			$message .= '</html>';
			// Pour envoyer un email HTML, l'en-tête Content-type doit être défini
			$headers = 'MIME-Version: 1.0'."\r\n";
			$headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
			$headers .= 'From:"mon_site"<>'."\n";
			// Fonction principale qui envoi l'email
			mail($destinataire, $sujet, $message, $headers);
				}
			}
			$success = "<span class='success'>Message envoyé avec Pièce Jointe !</span>";
				} else {
					$erreur = "<span class='erreur'>Ton fichier est trop volumineux, impossible de l'envoyer !</span>";
					}
			} else {
				$erreur = "<span class='erreur'>Seul les fichiers PDF sont autorisés !</span>";
				}
		} else {
			$success = "<span class='success'>Message envoyé sans Pièce Jointe !</span>";
			}
    break;
    }
}
?>
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
20 nov. 2017 à 11:35
Ce code-là est bizarre :
	$sql = "INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
		VALUES ('".$_SESSION['idpers']."','".$PARAM['DMESS']."', '".$PARAM['TMESS']."', '".$PARAM['MESS']."', '".$file_name."', '".$file_dest."')";
	$requete = $bdd->prepare($sql);
	$requete->bindParam(':idmess', $PARAM['IDMESS']);
	$requete->bindParam(':idexp', $_SESSION['idpers']);
	$requete->bindParam(':dmess', $PARAM['DMESS']);
	$requete->bindParam(':tmess', $PARAM['TMESS']);
	$requete->bindParam(':mess', $PARAM['MESS']);
	$requete->bindParam(':file_nom', $file_name);
	$requete->bindParam(':file_url', $file_dest);
	$requete->execute();


Tu colles directement les valeurs dans $sql et ensuite tu fais des bindParams.
Pareil dans ta requête « INSERT INTO cdc_destinataires ».
Dans ton $sql, remplace plutôt les valeurs par les labels définis dans les bindParams.

Xavier
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
20 nov. 2017 à 12:37
Bonjour
J'ai fait comme tu me l'a suggéré mais les INSERT dans ma BDD ne ce font plus.
Jusque ici tout marchais bien, mais penses tu que cela viens de ça mon soucis?
En envoyant via mon formulaire si je tape du texte sans espace il n'y a pas de soucis.
Merci de tes conseils.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 nov. 2017 à 13:37
Montre ton code modifié.
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
Modifié le 20 nov. 2017 à 13:49
$sql = "INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
       VALUES (:idpers,:dmess,:tmess,:mess,:file_nom,:file_url)";
     $requete = $bdd->prepare($sql);
     $requete->bindParam(':idmess', $PARAM['IDMESS']);
     $requete->bindParam(':idexp', $_SESSION['idpers']);
     $requete->bindParam(':dmess', $PARAM['DMESS']);
     $requete->bindParam(':tmess', $PARAM['TMESS']);
     $requete->bindParam(':mess', $PARAM['MESS']);
     $requete->bindParam(':file_nom', $file_name);
     $requete->bindParam(':file_url', $file_dest);
     $requete->execute();

EDIT : Ajout des balises de code

0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 nov. 2017 à 13:57
Si mes souvenirs sont bons ... tu utilises PDO ....

Dans ce cas, pourquoi ne pas avoir placé chacune de tes requêtes dans un bloc TRY CATCH pour essayer de voir l'erreur ?

Ensuite, avec le BIND_PARAM .. l'intérêt de l'utiliser... c'est de préciser le TYPE de variable que tu lui envoies.
Par exemple :
$stmt->bindParam(':dmess', $PARAM['DMESS'], PDO::PARAM_STR);

Sinon.. autant utiliser un ARRAY dans le execute !
Par exemple :

$sql = "INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
       VALUES (:idpers,:dmess,:tmess,:mess,:file_nom,:file_url)";
$datas = array(     
     ,':idmess'=> $PARAM['IDMESS']
     ,':idexp'=> $_SESSION['idpers']
     ,':dmess'=> $PARAM['DMESS']
     ,':tmess'=> $PARAM['TMESS']
     ,':mess'=> $PARAM['MESS']
     ,':file_nom'=> $file_name
     ,':file_url'=> $file_dest
	 );
	 
try{
	 
	$requete = $bdd->prepare($sql);
	$result = $requete->execute($datas);
}catch(Exception $e){
	echo "Erreur ! " .$e->getMessage();	
}
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
20 nov. 2017 à 13:59
Déjà là ;... je vois une erreur....
Le nom des variables nommées ne correspondent pas à celles passées dans la requête .....
:idmess d'un côté ...: idpers de l'autre ...
:idexp en trop dans l'array....

Avec les blocs TRY/CATCH ... tu aurais eu l'erreur de suite !

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


.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
20 nov. 2017 à 16:33
Bonjour
Je suis en train d'essayer de modifier ce que vous m'avez suggerer, en fait en faisant des essai d'INSERT je me suis aperçu en fait que l'INSERT dans la BDD ne ce fait si je ne met pas de pièce jointe je ne vois pas l'erreur....
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 nov. 2017 à 17:41
Commence par faire les modifications que je t'ai recommandé... puis postes nous ton code modifié que l'on sache où tu en es...
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
20 nov. 2017 à 18:22
Bonjour,
oui j'utilise bien PDO dans un fichier init.php
j'ai mis à jour les requète et là vlan j'ai une page blanche absolument rien?? Je n'arrive pas à voir ce qui ne va pas.
Merci encore
<h1>Envoyer un message</h1>

<?php
$PARAM  = array (
    'IDMESS' 		=> isset($_REQUEST['idmess']) ? $_REQUEST['idmess'] : '',
    'IDEXP'  		=> isset($_POST['idexp']) ? $_POST['idexp'] : '',
    'DMESS'  		=> isset($_POST['dmess']) ? dw2m($_POST['dmess']) : '',
    'TMESS' 		=> isset($_POST['tmess']) ? $_POST['tmess'] : '',
    'MESS'  		=> isset($_POST['mess']) ? $_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':
			
		if (!isset ($_POST['envoyer'])) {
		$erreur = "<span class='erreur'>Tu n'as pas sélectionné de membres !</span>";
		}
		elseif ($_POST['tmess'] == '' || ($_POST['mess'] =='')) {
		$erreur = "<span class='erreur'>Renseigne le Titre et le Message !</span>";
				
		} elseif (isset($_FILES["upload_localfile"]) &&  $_FILES['upload_localfile']['name'] != "") { 

			$file_name = $_FILES['upload_localfile']['name'];
			$file_extension = strrchr($file_name, ".");
			
			$file_tmp_name = $_FILES['upload_localfile']['tmp_name'];
			$file_dest = 'fichiers/'.$file_name;
		
			$extensions_autorisees = array('.pdf', '.PDF');
			
			if(in_array($file_extension, $extensions_autorisees)) {
				if(move_uploaded_file($file_tmp_name, $file_dest)) {
			
					$sql =	"INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
							VALUES (:idpers,:dmess,:tmess,:mess,:file_nom,:file_url)";
							$datas = array(     
											,':idexp'=> $_SESSION['idpers']
											,':dmess'=> $PARAM['DMESS']
											,':tmess'=> $PARAM['TMESS']
											,':mess'=> $PARAM['MESS']
											,':file_nom'=> $file_name
											,':file_url'=> $file_dest
											);
							try {
								$requete = $bdd->prepare($sql);
								$result = $requete->execute($datas);
							} catch(Exception $e) {
								echo "Erreur ! " .$e->getMessage();	
							}

					$idmess  	= isset($_POST['idmess']) ? $_POST['idmess'] : NULL;
					$idmess 	= $bdd->lastInsertId();
					$envoyer  	= isset($_POST['envoyer']) ? $_POST['envoyer'] : NULL;
					$iddest  	= isset($_POST['iddest']) ? $_POST['iddest'] : NULL;
			
					if (is_array($envoyer)) {	
						foreach($envoyer as $iddest) {             
					
						$sql =	"INSERT INTO cdc_destinataires (idmess, iddest)
								VALUES (:idmess,:iddest)";
							$datas = array(     
											,':idmess'=> $idmess
											,':iddest'=> $iddest
											);
							try {
								$requete = $bdd->prepare($sql);
								$result = $requete->execute($datas);
							} catch(Exception $e) {
								echo "Erreur ! " .$e->getMessage();	
							}
						}
					}

					$sql = "SELECT nom,prenom,email
							FROM cdc_personnes
							WHERE cdc_personnes.idpers = ?";
					$requete = $bdd->prepare($sql);
				
					foreach ( $_POST['envoyer'] as $idpers ) {
					$requete->execute(array($idpers));
						if ($donnees2 = $requete->fetch()) {
							// Adresse email des destinataires
							$destinataire = $donnees2->email;
							$prenom = $donnees2->prenom;
							// Titre de l'email
							$sujet = 'Nouveau message Clique de Cruet';
							// Contenu du message de l'email
							$message = '<html>';
							$message .= '<body><p>Bonjour '.$prenom.', <br/>';
							$message .= 'Je t\'ai envoyé un nouveau message dans ton espace membre...<br/>';
							$message .= 'Bonne lecture.<br/>';
							$message .= '<p>'.$_SESSION['prenom'].'</p>';
							$message .= '<p style="color:red;">Merci de ne pas répondre à cet email, ceci est un envoi automatique</p></body>';
							$message .= '</html>';
							// Pour envoyer un email HTML, l'en-tête Content-type doit être défini
							$headers = 'MIME-Version: 1.0'."\r\n";
							$headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
							$headers .= 'From:"cliquedecruet"<cliquede@60gp.ovh.net>'."\n";
							// Fonction principale qui envoi l'email
							mail($destinataire, $sujet, $message, $headers);
						}
					}
						$success = "<span class='success'>Message envoyé avec Pièce Jointe !</span>";
				} else {
					$erreur = "<span class='erreur'>Ton fichier est trop volumineux, impossible de l'envoyer !</span>";
					}
			} else {
				$erreur = "<span class='erreur'>Seul les fichiers PDF sont autorisés !</span>";
				}
		} else {
			$success = "<span class='success'>Message envoyé sans Pièce Jointe !</span>";
			}
    break;
    }
}
?>
0
yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476
22 nov. 2017 à 00:26
pourquoi es-tu étonné d'avoir une page blanche? qu'attends-tu d'autre?
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32 > yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024
23 nov. 2017 à 19:50
Bonjour
En fait j'avais fait une erreur de syntaxe tout bêtement.
Merci
0
yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476 > LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023
25 nov. 2017 à 10:36
peux-tu marquer comme résolu?
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
20 nov. 2017 à 19:30
dans mon tableau j'ai enlevé les 2 virgule de trop c'est déjà ça.
Mais par contre pourquoi je n'arrive pas à faire les INSERT sans aucune pièce jointe?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié le 20 nov. 2017 à 20:17
Sans vouloir te vexer... ton code est un vrai bord**

Il faut que tu apprennes à découper en fonction .....
A ne pas faire 10 fois la même chose dans ton code (comme répurer à plusieurs reprises les valeurs de tes variables à plusieurs endroits de ton code....)
A nommer tes variables plus correctement..... j'ai mis une plombe à comprendre que $_POST['envoyer'] etait ta liste de déstinataires...

Bref...

Voici à quoi pourrait (devrait ! ) ressembler ton code :
<?php
// démarrage des sessions
session_start();

//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


/**
* Fonction pour faire une requete INSERT
*/
function queryInsert($sql,$datas=NULL,$returnLastInsert=false){
 global $bdd;
 try {
  $requete = $bdd->prepare($sql);
  $result = $requete->execute($datas);
  
  if($returnLastInsert){
   $result = $bdd->lastInsertId();
  }  
 } catch(Exception $e) {
  echo "Erreur ! " .$e->getMessage(); 
 }
  return !empty($result) ? $result : NULL; 
}

/**
* Fonction pour faire une requete SELECT
* @return Objet
*/
function querySelect($sql,$datas=NULL){
 global $bdd;
 try {
  $requete = $bdd->prepare($sql);
  $requete->execute($datas);
  $result = $requete->fetchAll(PDO::FETCH_ASSOC);
 } catch(Exception $e) {
  echo "Erreur ! " .$e->getMessage(); 
 }
  return !empty($result) ? $result : NULL; 
}

/**
* Fonction Ajouter
*/
function Ajouter($idexp,$prenomFrom=''  ,$dmess  ,$tmess ,$mess='' ,$arr_destinataires=array() ,$file_nom='' ,$file_url='' ,$file=NULL ){
 if(!empty($file)){
  //si fichier :
  $uploadFile = uploadFile($file,$destDirFile,$extensions_autorisees);
  if($uploadFile['ETAT']==false){
   $erreurFichier = $uploadFile['error'];
  }
 }else{
  //pas de fichier
  $erreurFichier = NULL;
 }

 //$uploadFile => 'file'=>array('name'=>$file_name,'dest'=>$file_dest,'extension'=>$file_extension)
 $file_dest = !empty($uploadFile) ? $uploadFile['file_dest'] : NULL;
 $idmess = CrerMessage($idexp,$dmess,$tmess,$mess,$file_nom,$file_dest);
 $envoiMail = array();
 if($idmess){
  if(is_array($arr_destinataires) && !empty($arr_destinataires)) { 
   foreach($arr_destinataires as $iddest) {             
    $envoieMsg[] = sendMessageBdd($idmess,$iddest);
    $envoiMail[] = envoyerMail($iddest,$prenomFrom);
   }   
  }else{
   //si c'est une string et non un array
   $envoieMsg = sendMessageBdd($idmess,$arr_destinataires);
   $envoiMail = envoyerMail($arr_destinataires,$prenomFrom);
  }
  $result = array('ETAT'=>true,array('envoiMsg'=>$envoieMsg,'envoiMail'=>$envoiMail,'Erreur_fichier'=>$erreurFichier));
 }else{
  $result = array('ETAT'=>false,'error'=>'souci lors de l\'enregistrement en bdd');
 }     
 return $result;
}

/**
* Fonction pour ajouter un message dans la bdd
*/
function CrerMessage($idexp,$dmess,$tmess,$mess,$file_nom,$file_dest){

  $sql = "INSERT INTO cdc_messages (idexp, dmess, tmess, mess, file_nom, file_url)
   VALUES (:idpers,:dmess,:tmess,:mess,:file_nom,:file_url)";
 $datas = array( ':idexp'=> $idexp
     ,':dmess'=> $dmess
     ,':tmess'=> $tmess
     ,':mess'=> $mess
     ,':file_nom'=> $file_nom
     ,':file_url'=> $file_dest
     );
 return queryInsert($sql,$datas,true);
} 


/**
* Fonction pour uploader un fichier
* $oFile = $_FILE['toninputfile']
*/
function uploadFile($oFile=NULL,$destDirFile = 'fichiers/',$extensions_autorisees=array('.pdf', '.PDF')){
 $file_name = $oFile['name'];
 $file_tmp_name = $oFile['tmp_name'];
 $file_extension = strrchr($file_name, ".");
 $file_dest = $destDirFile.$file_name;
  
 if(in_array($file_extension, $extensions_autorisees)) {
  if(move_uploaded_file($file_tmp_name, $file_dest)) {
   $result = array('ETAT'=>true,'file'=>array('name'=>$file_name,'dest'=>$file_dest,'extension'=>$file_extension));
  }else{
   if(!is_dir($destDirFile)){
    $result('ETAT'=>false,'error'=>'Repertoire de destination inconnu !');
   }else{
    $result('ETAT'=>false,'error'=>'Erreur inconnue durant l\'upload !');
   }
  }
 }else{
  $result('ETAT'=>false,'error'=>'Extension interdite!');
 }

  return $result;
}

/**
* Recupere les infos d'un user
*/
function getInfosUserById($idpers){
 $sql = "SELECT nom,prenom,email
   FROM cdc_personnes CP
   WHERE CP.idpers = :idpers";
   
 $datas = array(':idpers'=>$idpers);
 
 return querySelect($sql,$datas);
}


/**
* Fonction pour envoyer le message
*/
function sendMessageBdd($idmess,$iddest){
 $sql = "INSERT INTO cdc_destinataires (idmess, iddest)
   VALUES (:idmess,:iddest)";
 $datas = array( ':idmess'=> $idmess
     ,':iddest'=> $iddest
    );
 return queryInsert($sql,$datas);
}


/**
* Envoie du Mail aux destinataires
*/
function envoyerMail($idpers,$prenomFrom){
 $infosUser = getInfosUserById($idpers);
 if(!empty($infosUser)){
  // Adresse email des destinataires
  $destinataire = $infosUser->email;
  $prenom = $infosUser->prenom;
  // Titre de l'email
  $sujet = 'Nouveau message Clique de Cruet';
  // Contenu du message de l'email
  $message = '<html>';
  $message .= '<body><p>Bonjour '.$prenom.', <br/>';
  $message .= 'Je t\'ai envoyé un nouveau message dans ton espace membre...<br/>';
  $message .= 'Bonne lecture.<br/>';
  $message .= '<p>'.$prenomFrom.'</p>';
  $message .= '<p style="color:red;">Merci de ne pas répondre à cet email, ceci est un envoi automatique</p></body>';
  $message .= '</html>';
  // Pour envoyer un email HTML, l'en-tête Content-type doit être défini
  $headers = 'MIME-Version: 1.0'."\r\n";
  $headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
  $headers .= 'From:"cliquedecruet"<cliquede@60gp.ovh.net>'."\n";
  // Fonction principale qui envoi l'email
  $result = mail($destinataire, $sujet, $message, $headers); 
 }else{
  $result = array('ETAT'=>false,'error'=>'Problème lors de la récupération des données de l\'utilisateur');
 }
 return !empty($result) ? $result : NULL; 
}





//-------------------------------------------------------------//
//Variables pour le fichier
//-------------------------------------------------------------//
$destDirFile = 'fichiers/';
$extensions_autorisees=array('.pdf', '.PDF');

//-------------------------------------------------------------//
//récupération PROPRE des variables AVANT de les utiliser
//-------------------------------------------------------------//
$idmess = isset($_REQUEST['idmess']) ? $_REQUEST['idmess'] : '';
$idexp  = !empty($_POST['idexp']) ? $_POST['idexp'] : NULL;
$dmess  = isset($_POST['dmess']) ? dw2m($_POST['dmess']) : '';
$tmess = isset($_POST['tmess']) ? $_POST['tmess'] : '';
$mess  = isset($_POST['mess']) ? $_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;
$file = !empty($_FILE['upload_localfile']) ? $_FILE['upload_localfile'] : NULL;
$arr_destinataires = !empty($_POST['envoyer']) ? $_POST['envoyer'] : NULL;

$idexp = !empty($_SESSION['idpers']) ? $_SESSION['idpers'] : NULL;
$prenomFrom = !empty($_SESSION['prenom']) ? $_SESSION['prenom'] : NULL;

//-------------------------------------------------------------//
//Autres variables utilisées pour le script
//-------------------------------------------------------------//
$result = NULL;
$erreur = array();

//-------------------------------------------------------------//
//début du traitement
//-------------------------------------------------------------//
switch($action) {
 case 'ajouter':
  if(!$idexp){
   $erreur[] = "Utilisateur non connecté";
  }elseif(empty($arr_destinataires)){
   $erreur[] = "Tu n'as pas sélectionné de membres !";
  }elseif( !$tmess || $mess){
   $erreur[] = "Renseigne le Titre et le Message !";
  }else{
   $ajouter = Ajouter($idexp ,$prenomFrom ,$dmess  ,$tmess ,$mess,$arr_destinataires,$file_nom,$file_url,$file);
   if($ajoute['ETAT'] == false){
    $erreur[] = $ajouter['error'];
   }else{
    $result = $ajouter['result'];
   }
  }
  break;
 default:
  $erreur[] = 'Action inconnue';
 break;
}


//----------------------------------------------------------//
// Affichage des erreurs si il y en a
// (attention ! si tu fais de l'ajax.. cette partie devrai être traitée côté Javascript et non ici !!!)
//----------------------------------------------------------//

if(!empty($erreur)){
 foreach($erreur as $err){
  echo "<span class='erreur'>".$err."</span>";
 }
}


//----------------------------------------------------------//
// Si tu fais de l'ajax ... decommente cette partie :
//----------------------------------------------------------//
// echo json_encode($result);
?>


NB: Je l'ai écrit de tête sans tester.... il peut y avoir des erreurs.
Il faudra les corriger.




Cordialement, 
Jordane                                                                 
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 nov. 2017 à 20:27
Au passage, tu me feras plaisir en allant lire ceci (et en l'appliquant ! ) : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
0
LaChaux78 Messages postés 564 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 31 mars 2023 32
21 nov. 2017 à 23:19
Bonjour,
Je te remercie pour tout, mais je suis débutant en la matière et toutes les fonctions me donne du mal par rapport à une page de script traditionnelle.
Je ne sais pas si tu comprends ce que je veux dire.
Mais encore merci, je garde tous ça sous le coude en attendant.
0