Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/09/2011, 12h47   #1
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 94
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 94
Points : 11
Points : 11
Par défaut formulaire envoi email avec PJ et choix modele avec CKeditor

Bonjour,
je réalise pour une association un petit script destiné à envoyer email et mailing
a partir d'un textarea et ckeditor
avec envoi de pièces jointes, chargement d'un modèle pré établi que l'on peut modifier sur ckeditor

le script fonctionne très bien sans le choix du modèle sur la combo
Dés l'appui sur l'envoi , le modéle est bien chargé dans ckeditor mais toutes les données reçues en GET ou inscrites sur le formulaire sont remises a zéro

Je suis sur ce problème depuis deux jours, impossible d'en sortir
merci à de nouveaux yeux pour me conseiller

Code :
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
 
///////////////////////////////////////////////////////////////////////////////
// *********************Récupération de l'email de l'adhérent******************
 
//$email_adh = ''; // remise à zéro de la variable émail
$email_dest = $_GET['email_adh']; // récupération du GET de liste_adh.php
 
//echo $email_dest; // décocher pour voir si on recupere bien le GET en provenance de la liste_adh
 
////////////////////////////////////////////////////////////////////////////////
///////////////////////////// Choix du modele d'email //////////////////////////
////////////////////////////////////////////////////////////////////////////////
echo'<table align="center" width="100%" border="2px" style="background-color:#f2e3c4">';
echo'<tr><td>';
 
echo'<form action="ecrire_email.php" method="post" name="FormModele">';
echo "<h4>Charger un Modele :</h4>" ;
echo'</td>';echo'<td>';
 
// Appel à la fonction creer_select
echo creer_select('SELECT `id_modele`, `modele_objet` FROM `adh_modele`', 'id_modele');
 
echo'<input type="submit" name="FormModele" value="Charger">';
 //echo'<div>  <input type="submit" /> ';
echo'</form>';
 
//*************************** Traitement du choix de modele *******************
 
if(isset($_POST['FormModele'])) //si vrai alors--- on recupere les input de la combo
{
	$id_modele= $_POST['id_modele']; //on recupere l'id du formulaire de la combo
	//echo"$id_modele";echo'<br>';
 
//*********** on fait un select pour recuperer le contenu du modele ************
	$sql="select *
		from ".$table2."
		where id_modele = '".$id_modele."'"; // entre "  " si alphanum
 
	$result=mysql_query($sql)or die ("Exécution de la requête SELECT impossible");
 
	//  Décocher echo Pour voir combien cette requête retourne d'enregistrements
	//echo "Nombre d'enregistrements de la requête : ".mysql_num_rows($result)."<br/>";
 
	//$result = mysql_query('SELECT *  FROM adh_modele WHERE id_modele = '.$id_modele);
 
//************* Récupération des données de la table Modéles*******************
 
	if(mysql_numrows($result)>0)
	{
		$val=mysql_fetch_array($result);	//Decoupage des resultats de la BDD dans un tableau pour les afficher
 
		$modele_redacteur=		$val['modele_redacteur'];
		$modele_objet=			$val['modele_objet'];
		$modele_html=			$val['modele_html'];
		$modele_date=			$val['modele_date'];
	}
	//echo"$modele_redacteur";
	//echo"$modele_objet";
	//echo"$modele_html";
	//echo"$modele_date";
 
echo "&nbsp;&nbsp;&nbsp;&nbsp;Votre Choix :&nbsp;&nbsp;&nbsp;&nbsp; $modele_objet  ";echo'<br>';
 
	echo'</td>';
}
/////////////////////////////////////////////////////////////////////////////////
//*on recupere le modele choisi $modele_html pour affichage par $email_message dans  textarea CKeditor
////////////////////////////////////////////////////////////////////////////////
$email_message=$modele_html;
 
// *********************Récupération de l'email de l'adhérent******************
 
//$email_adh = ''; // remise à zéro de la variable émail
	$email_dest = $_GET['email_adh']; // récupération du GET de liste_adh.php
 
	echo $email_dest; // décocher pour voir si on recupere bien le GET en provenance de la liste_adh
////////////////////*******Fin choix du modele /////////////////////////////////
 
////////////////////////////////////////////////////////////////////////////////
 ////////////////////*******Suite  Formulaire 2 **********//////////////////////
 ///////////////////////////////////////////////////////////////////////////////
 
// echo'<form action="./envoi_email.php" method="post" name="FormModele2">';
 
echo'<form ENCTYPE="multipart/form-data" action="./envoi_email.php" method=POST name="FormModele2">';
 	echo "<tr><td>&nbsp;&nbsp;Nom du Rédacteur :	</td><td><input type=\"text\" size= 55	name=\"archive_redacteur\"   	value=\"".$archive_redacteur."\"</td></tr>";
 	echo "<tr><td>&nbsp;&nbsp;Email Expediteur :	</td><td><input type=\"text\" size= 55	name=\"email_exp\"   	value=\"".$email_exp."\"</td></tr>";
 	echo "<tr><td>&nbsp;&nbsp;Email Destinataire :	</td><td><input type=\"text\" size= 55	name=\"email_dest\"   	value=\"".$email_dest."\"</td></tr>";
	echo "<tr><td>&nbsp;&nbsp;Emails Cc :			</td><td><input type=\"text\" size= 55	name=\"email_cc\"   	value=\"".$email_cc."\"</td></tr>";
 	echo "<tr><td>&nbsp;&nbsp;Email Bcc :			</td><td><input type=\"text\" size= 55	name=\"email_bcc\"   	value=\"".$email_bcc."\"</td>";
 	echo"</tr>";
 
	if ($email_exp ==""){$email_exp= "postmaster@cg-aisne.org";} // si l'email exp n'est pas renseigné il sera ......
		// echo $email_exp;
 
////////////////////////////////////////////////////////////////////////////////
//************Mise en place des combos box HTML/Texte  et Priorité****************
////////////////////////////////////////////////////////////////////////////////
?>
 <tr><td> &nbsp</td> 	<td>&nbsp;&nbsp;&nbsp;		<label for="email_type">HTML / Texte :</label>
     												<select name="email_type" id="email_type" style="width:100px;">
 
     												<option value="1" selected="selected">HTML</option>
     												<option value="2">TEXTE</option>
    												</select>
 
    												&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 
													<label for="priorite">Priorité :</label>
     												<select name="priorite" id="priorite" style="width:100px;">
 
    												<option value="1">Urgent</option>
    												<option value="2">Haute</option>
     												<option value="3" selected="selected">Normale</option>
     												<option value="4">Basse</option>
     												<option value="5">Très basse</option>
    												</select>
</td></tr>
<?php // Chois de la piéce à joindre ?>
<tr> <td>Fichier &agrave; Joindre :</td><td>		<INPUT TYPE=FILE NAME="email_pj"	 size= 55  value="<?php if (isset($_POST['email_pj'])) echo htmlentities($_POST['email_pj']) ?>" /></td></tr>
<tr>	<td>Objet:</td> <td>	       				<input type="text" 	                 size= 55 	name="email_objet" value="<?php if (isset($_POST['email_objet'])) echo htmlentities($_POST['email_objet']) ?>" /></td></tr> </tr>
 
<tr><td> &nbsp</td><td>	<textarea cols="90" rows="100" name="email_message" id="email_message" >  <?//=$email_message;?>  <?php echo htmlentities($email_message); ?> </textarea></td></tr>
 
		<script type="text/javascript">	CKEDITOR.replace( 'email_message' );</script> <!-- met en place CKeditor à la place du textarea -->
 
</table>
 
<br/><center>      <div>  <input type="submit" name="FormModele2"/>  </div><br /></center>
</form>
claude77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 04h22   #2
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 870
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 870
Points : 1 355
Points : 1 355
salut,

déjà un petit rappel de sécurité, injecter du contenu de $_GET ou $_POST sans vérification est un important risque d'attaque de ta base de données par injections.

dans l'ordre:
  • ton code est incomplet... donc si il génère un formulaire, il se peut que des choses ne soient pas visibles...
  • tu pourrais virer le tableau et utiliser des div et du css à la place, plus rapide et efficace je pense ici en terme de rendu et de lecture de ton code php...
  • des données ne sont pas transmises, si une fois récupérées de ton premier formulaire, elles ne sont pas retransmises dans l'adresse des formulaires que tu nous montres ici (get) ou via une entrée input en eux (post ici vu la méthode de transmission).
  • tu génères 2 formulaires sur ta page, leur transmission est donc indépendante , de plus des formulaires ne peuvent pas être imbriquée
  • tu reste très vague sur les données perdu et quel formulaire sont concernés

j'espère que ça te fait avancer un peu, n'hésite pas à reposer des question ou compléter ce que tu nous dit sur ton problème...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 10h04   #3
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 94
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 94
Points : 11
Points : 11
Bonjour et Merci ERIC d'avoir pris le soin de te pencher sur le script

j'essaie de te répondre point par point:


1-déjà un petit rappel de sécurité, injecter du contenu de $_GET ou $_POST sans vérification est un important risque d'attaque de ta base de données par injections.

<-- oui je pense revoir la partie sécurité dés que le script fonctionnera



2- ton code est incomplet... donc si il génère un formulaire, il se peut que des choses ne soient pas visibles...

<-- il est complet sauf la fonction qui génère le html de la combo , mais qui renvoie bien l'id choisi pour le traitement de la requête et j'ai testé par des écho les variables--->

3- tu pourrais virer le tableau et utiliser des div et du css à la place, plus rapide et efficace je pense ici en terme de rendu et de lecture de ton code php...
<-- tu as raison, mais le problème du look viendra dés que le script sera opérationnel

4- des données ne sont pas transmises, si une fois récupérées de ton premier formulaire, elles ne sont pas retransmises dans l'adresse des formulaires que tu nous montres ici (get) ou via une entrée input en eux (post ici vu la méthode de transmission).

<-- le fait de charger le modèle dans le textarea CKeditor à l'air de me recharger la page complète perdant ainsi toutes les variables déjà renseignées -->

5- tu génères 2 formulaires sur ta page, leur transmission est donc indépendante , de plus des formulaires ne peuvent pas être imbriquée

<-- pour moi, je ne pense pas que mes deux formulaires soient imbriqués -->

6- tu reste très vague sur les données perdu et quel formulaire sont concernés

<-- exemple: je reçois l'adresse email "email_adh" par get de ma liste adh a qui je veux envoyer l’émail ,elle s'inscrit bien dans le formulaire, mais dés que je charge le modèle d’émail par la combo la variable est détruite
idem si je remplis les champs formulaires avant de charger le modèle par la combo, les variables sont détruites.

Par contre, si je charge en premier le modèle par la combo et je remplis le formulaire après , il me manque uniquement l'adresse émail reçu en get , si je le réécris, le tout fonctionne bien ( départ de l’émail avec texte du modèle parfait

ce ne serait pas très gênant pour l'envoi d'un émail, mais pour les mailings bcc sur 650 adhérents il faut mieux les garder en mémoire -->


voilà le problème , si tu peux m'aider

Merci d’avance à+
claude77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h11   #4
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 870
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 870
Points : 1 355
Points : 1 355
ce que je veux te faire comprendre c'est que 2 formulaires sont indépendant en terme de transmission... soit tu envoies l'un soit l'autre...

si tu veux donc que des données soient transmises quoi qu'il arrive... tu dois les mettre dans les 2 alors... soit en get soit en post avec des input de type hidden...

par soucis de cohérence, je pense qu'il vaut mieux tout mettre en get ou post personnellement.
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h37   #5
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 94
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 94
Points : 11
Points : 11
Merci de ta réponse
je ne comprends pas bien
le premier formulaire renvoie le numéro de l'id du modèle d’émail sur la même page pour faire la requête et récupérer le texte du modèle a insérer dans le textarea, ce qu'il fait bien sauf qu'il me met à nul toutes les variables

c'est un $PHP_SELF qui me permet de récupérer le texte du modèle
Ensuite, le 2eme formulaire envoie sur la page php d'envoi du mailing
à+
claude77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h46   #6
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 870
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 870
Points : 1 355
Points : 1 355
donc tu fais un truc bien lourd avec 2 formulaires sur une seule page au lieu de séparer ton problème en 2 pages

quand tu veux garder des informations communes à une session de navigation entre plusieurs pages tu as les sessions (tableau $_SESSION)...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 12h07   #7
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 94
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 94
Points : 11
Points : 11
oui j'y ai bien pensé, mais pour moi les session ce n'est pas encore évident

J'ai fait cela
<?php

Code :
1
2
3
4
session_start();
$_SESSION['email_dest']= $_GET['email_adh'];
$email_dest= $_SESSION['email_dest'];
echo $email_dest; // décocher pour voir si o
je récupère bien l’émail, que j'affiche
dans le 2eme formulaire
Code :
echo "<tr><td>&nbsp;&nbsp;Email Destinataire :	</td><td><input type=\"text\" size= 55	name=\"email_dest\"   	value=\"". $_SESSION['email_dest']."\"</td></tr>";
mais en chargeant le modèle par la combo dito ma variable $_SESSION['email_dest' disparait

ou l’écriture de ma session n'est pas bonne ??

à+
claude77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 12h29   #8
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 870
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 870
Points : 1 355
Points : 1 355
l'écriture est bonne...

tes 2 formulaires étant en balance soit:
  • tu fais un page par formulaire, plus clair et simple pour un débutant
  • tu utilises un "if then else" qui prend comme condition le fait que tu passes ton adresse en get ou que l'adresse est stocké en session, stocke le get en session et envoie le 2eme formulaire sinon envoie le premier formulaire par exemple

pense à bien encadrer ton code php avec "<?php" et "?>" c'est plus propre

évite de faire des trucs du genre stocker une partie de ton tableau dans une variable pour finalement relire la même portion de tableau... c'est lourd, ça bouffe de la mémoire, ça sert à rien vu le temps d'accès par indice à un valeur...

perso je te conseille de faire une page donc un fichier php pour chaque formulaire... plus simple à maintenir et tester avec des sessions
tu verras mieux ce qui se transmet ou pas et les variables réellement utiles
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 15h45   #9
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 94
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 94
Points : 11
Points : 11
merci Éric d'avoir pris le temps de regarder

je vais essayer d'autres solutions

Bonne Journée
claude77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h18.


 
 
 
 
Partenaires

Hébergement Web