IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Variable dans une variable ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Variable dans une variable ?
    Bonjour,

    J'ai fais un portail d'envoi de mail en masse à titre professionnel (je précise pas de spam frauduleux)!

    J'aimerais qu'il soit possible pour l'utilisateur de créer son modèle lui même, la difficulté est qu'il doit insérer des variables. Pour ceux faire il upload un fichier csv avec les clients à cibler et les entêtes serviront de marqueur pour l'insertion des variables.

    Une fois le formulaire envoyé, l'enregistrement ressemblerait à :
    colonne message : "Bonjour, mon prenom est '.$row['prenom'] et j'ai 30ans."

    J'aimerais que dans le code ci-dessous le résultat de la requete $row soit interprété ? Est ce possible ?

    Dans l'email que je reçois pour l'instant, voilà ce qui s'affiche :
    "Bonjour, mon prenom est '.$row['prenom'] et j'ai 30ans."

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    include "connexion.php";
     
    if (isset($_POST['sChoix'])){
    	if($_POST['sChoix']!="Choix"){
    		$nomCourrier = $_POST['sChoix'];
    		$sql = "SELECT * FROM `mail_normandie_beta` as t1 WHERE t1.Validation!='Envoye' AND t1.Validation!='erreur' AND t1.Type='".$nomCourrier."'"; //sql qui selectionne tous les clients de la table mail_normandie qui n'ont pas déja été envoyé
     
    		$result=$bdd->query($sql) or die('Erreur :'.$e->getMessage());
    		$sqlCourrier = "SELECT * FROM `dbcourrier`"; 
    		$resultDbCourrier=$bdd->query($sqlCourrier) or die('Erreur :'.$e->getMessage());
    		$rowCourrier=$resultDbCourrier->fetch();
     
    			while($row=$result->fetch()){				
     
    						$objet_m = $rowCourrier['subject']; 
    						//message du mail en HTML
    						$ref= $row['Reference'];
    						$baliseD ='<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>titre</title></head><body>';
    						//Dans la $rowcourrier['message'] il y a par ex : "Bonjour, je m'appelle .$row['prenom']" J'aimerais que le code soit interprété ? est ce possible ?
    						$msg = $rowCourrier['message'];
     
    						$baliseF = '</body></html>'; 
    						$msgFinal = $baliseD.$msg.$baliseF;
     
    						$from_addr= 'monmail@xxx.fr';
    						$from_name= 'monmail@xxx.fr';
    						//lance la fonction envoi_mail ayant pour retour 1 ou 0 
    						$reponse_mail = envoi_mail($row['Adresse_mail'],"",$from_addr,$objet_m, $msgFinal, $from_name, $from_addr);
    			}
     
    	}else{
    		echo "Veuillez s&eacute;lectionner un courriel";
    	}
    }else{
     
    	$requete = "SELECT DISTINCT type FROM `mail_normandie_beta` where Validation = ''";
    	$resultat = $bdd->query($requete) or die('Erreur :'.$e->getMessage());	// On soumet la requête
     
    	if($resultat)// On teste si on a au moins une réponse
    	{
    		echo "<form id ='mImport' class='fImport' name='envoi_mail' action='#' method='post' enctype='multipart/form-data' >";	
    		echo "<h3>S&eacutelectionner le courriel</h3>";
    		echo "<select name='sChoix' class='filtreMessage'>";
    		echo "<option>Choix</option>";
    		while ($ligne = $resultat->fetch())
    		{	
    			echo "<option>".$ligne['type']."</option>";
    		}
    		echo "</select></br></br>";
    		echo "Envoyer les mails aux clients :</br></br>";
    		echo "<input type='submit' value='Envoyer'/>";
    		echo "</form>";
     
    	}
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    => Apostrophes ou guillemets : lesquels choisir ?

    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Bonjour, mon prenom est $row['prenom'] et j'ai 30ans.";
    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Bonjour, mon prenom est '.$row['prenom'].' et j\'ai 30ans.';
    Mais pas un micmac des deux.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut syntaxe
    Merci poru votre réponse, mais mon problème de syntaxe et de guillemet.
    En effet, dans votre réponse vous faites un echo dans la page php, sauf que pour moi il s'agait d'une chaine de caractère stocké dans un champ de ma table dbcourrier.
    je joins la copie de la table dbcourrier
    Images attachées Images attachées  

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La fonction eval() fait ça.
    Attention, tout code serait interpreté ; il faut donc bien veiller a la sécurité des écritures dans la base de données.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    => eval()
    Attention

    La construction de langage eval() est très dangereuse car elle autorise l'exécution de code PHP arbitraire. Son utilisation est vivement déconseillée. Si vous avez soigneusement vérifié qu'il n'y a pas d'autres options que de l'utiliser, gardez une attention toute particulière à ne pas y passer de données provenant d'un utilisateur sans les avoir précédemment validées minutieusement.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut re
    Merci pour votre réponse,

    En effet la fonction eval() permet d’interpréter le code, il s'affiche bien sur mon navidateur.
    Par contre pas dans le mail que reçoit l'utilisateur. disons que la $msg est vide

    Le contenu de la table : echo "bonjour,".$row['Reference'].$row['Energie'];

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $msg = eval($rowCourrier['message']); //cela affiche bien la phrase ds le nav
     
    $msgFinal = $baliseD.$msg.$baliseF; //$mgsFinal ne s'affiche pas dans le mail

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rolly2520 Voir le message
    Par contre pas dans le mail que reçoit l'utilisateur.
    Ca ne te parait pas logique ?
    Une messagerie se contente d'afficher le texte qu'on lui transmet. Pas d'exécuter du php !

    Il faut faire l'eval() AVANT d'envoyer le mail.

    $msg = eval($rowCourrier['message']); n'a aucun sens.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $msg = $rowCourrier['message'];

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Si je comprends bien, tu as dans la BDD des phrases du type :
    " Bonjour, je m'appelle [variable prénom] ".

    Tu peux utiliser sprintf pour les gérer.

    En BDD, tu stockes : "Bonjour, je m'appelle %s."

    Et en PHP, tu utilises sprintf pour valoriser %s avec une variable PHP.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut re
    Citation Envoyé par jreaux62 Voir le message
    Ca ne te parait pas logique ?
    Une messagerie se contente d'afficher le texte qu'on lui transmet. Pas d'exécuter du php !

    Il faut faire l'eval() AVANT d'envoyer le mail.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $msg = eval($rowCourrier['message']);
    n'a aucun sens.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $msg = $rowCourrier['message'];
    Effectivement ma logique me fait défaut !

    cependant je ne vois toujours pas mon erreur car faire un eval($rowCourrier['message']) permet bien d’interpréter la variable pour ensuite pouvoir intégrer le résultat dans $msgFinal pour l'envoyer dans ma fonction envoi_mail en tant que chaine de caractère ?

    CinePhil : merci, finalement j'ai utilisé str_replace, ça fontionne ! merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Introduire une variable dans une variable
    Par benramin31 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/02/2012, 11h30
  2. Recuperer le nom d'une variable dans une variable String
    Par aliwassem dans le forum Langage
    Réponses: 11
    Dernier message: 23/10/2009, 12h38
  3. Réponses: 3
    Dernier message: 26/09/2008, 10h41
  4. Comment completer une variable dans une PROC
    Par Le Basque dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/09/2004, 17h18
  5. [langage] trouver une variable dans une autre
    Par BEAUJAULT dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2004, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo