Enregistrement de données formulaire dans mysql [Résolu]

Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 1 oct. 2014 à 20:01 - Dernière réponse : jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention
- 23 déc. 2014 à 16:21
Bonjour,
Je cale sur cela depuis 2 semaines :

J'ai un formulaire et n'arrive pas à enregistrer des données dans mysql.
Le code suivant fait que j'enregistre éternellement en Bd et mon echo var_dump() est toujours NULL
<div class="cfg-element-container">
<label class="cfg-label" id="cfg-element-35-7-label" ><span class="cfg-label-value">Nom Prénom</span><span class="cfg-required">*</span></label>
 <div class="cfg-element-set" id="cfg-element-35-7-set" >
  <div class="cfg-element-content">
  <input type="text" class="cfg-type-text cfg-form-value " name="cfg-element-35-7" id="cfg-element-35-7"  />

Le PHP

<?php
if (isset($_POST["cfg-element-35-7"]) && !empty($_POST["cfg-element-35-7"]))
{$nomtobase=$_POST["cfg-element-35-7"];}
else
{$nomtobase="empty";}

 // à partir de là on ne travaille plus qu'avec $nomtobase
if ($nomtobase==='empty') { print "champ 'cfg-element-35-7' non soumis via formulaire";exit;}

// traitement base
        $db=mysql_connect("mabase.eu.mysql", "mabase_eu", "*****");// ok
        mysql_select_db("mabase_eu.mysql", $db);// ok
//$sql="INSERT INTO matable (nomprenom) VALUES ('$nomtobase')";
         $sql="INSERT INTO confid (nomprenom) VALUES('".$nomtobase."')";
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());   // insertion table
        echo var_dump($nomtobase);//affiche NULL 
        mysql_close();
        ?>
</div>
</div>
<div class="cfg-clear"></div>


Après le submit du formulaire, je reçois bien un mail du contact avec les coordonnées du contact, je ne sais pas comment récupérer le name cfg-element-35-7 dans l'input pour l'entrer dans la bd.

J'imagine que lorsque je valide le formulaire les coordonnées sont enregistrées temporairement et que donc mon php active l'enregistrement en bd avant le submit, >> champs vide >> recopie d'un champ vide

Mon champ dans ma bd est toujours empty


Je suis sous php 5.3 et php.ini est à Off

Merci de m'aider, je débute .. j'ai vraiment besoin d'un coup de pouce

EDIT : Ajout des balises de code.(jordane)
Afficher la suite 

44 réponses

Répondre au sujet
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 1 oct. 2014 à 20:23
0
Utile
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Commenter la réponse de jordane45
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 1 oct. 2014 à 20:31
0
Utile
Bonjour,

Pour ce qui est de ton souci...

déjà modifie le début de ton code php comme ceci :
<?php
//*****************************************************//
// Connexion à la BDD  (l'ideal etant de le mettre dans fichier à part) //
//*****************************************************//
 $db=mysql_connect("mabase.eu.mysql", "mabase_eu", "*****");// ok
  mysql_select_db("mabase_eu.mysql", $db);// ok


//-----------------------------------------------------------
// Print de POST pour voir si ton formulaire fonctionne...
echo " POST =<br>";
print_r($_POST);
//-----------------------------------------------------------
// Utilisation de l'écriture Ternaire au lieu des IF / ELSE..
$nomtobase = isset($_POST["cfg-element-35-7") && !empty($_POST["cfg-element-35-7")?$_POST["cfg-element-35-7"]:NULL;
//-----------------------------------------------------------

// On vérifieque $nomtobase  n'est pas vide avant de continuer...
if($nomtobase){

 $sql="INSERT INTO confid (nomprenom) 
           VALUES('".$nomtobase."')";
        // insertion dans la table     
        $res = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());   
    //  echo var_dump($nomtobase);//affiche NULL 
    // Ou tu fais un ECHO ... ou un var_dump .. pas les deux !
     var_dump($nomtobase);
}else{
 echo "<br> nombase est vide !<br>";
}
    mysql_close();

?>

Commenter la réponse de jordane45
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 2 oct. 2014 à 12:47
0
Utile
Bonjour Jordane,
j'ai bien noté et vais m'appliquer à suivre la coloration syntaxique, ( je ne savais pas trop comment faire et avoue n'avoir pas trop cherché.)
Merci de ton intervention
Commenter la réponse de Dbl35
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 2 oct. 2014 à 12:47
0
Utile
Je viens de voir que tu l'as fait à ma place, alors (re)merci
Commenter la réponse de Dbl35
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 2 oct. 2014 à 13:10
0
Utile
Pas de soucis ^^
Et tiens moi au courant pour la réponse à ton souci que je t'ai donné...http://codes-sources.commentcamarche.net/forum/affich-10036734-enregistrement-de-donnees-formulaire-dans-mysql#2
Commenter la réponse de jordane45
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 2 oct. 2014 à 14:16
0
Utile
2
j'ai appliqué les correctifs, pour plus de lisbilité tu trouveras ci dessous le code "reformaté" :
<div class="cfg-element-container">
<label class="cfg-label" id="cfg-element-35-7-label" ><span class="cfg-label-value">Nom Prénom</span><span class="cfg-required">*</span></label>
<div class="cfg-element-set" id="cfg-element-35-7-set" >
<div class="cfg-element-content">
<input type="text" class="cfg-type-text cfg-form-value " name="cfg-element-35-7" id="cfg-element-35-7" />
<?php
// mon code php ci dessous
?>
</div>
</div>
<div class="cfg-clear"></div>
</div>
</code
>

Mon php
<code><?php
// Print de POST pour voir si formulaire ok
        echo " POST =<br>";
        print_r($_POST);
        $nomtobase = isset($_POST["cfg-element-35-7"]) && !empty($_POST["cfg-element-35-7"])?$_POST["cfg-element-35-7"]:NULL;
        if($nomtobase)
        {
// connexion
        $db=mysql_connect("mabase.eu.mysql", "mabase_eu", "*****");// ok
        mysql_select_db("mabase._eu.mysql", $db);// ok
// insertion
        $sql="INSERT INTO matable (nomprenom) VALUES('".$nomtobase."')";  
        $res = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
//vérification  
        var_dump($nomtobase);
        }
        else
        {
        echo "<br> nombase est vide !<br>";
        }
    mysql_close();
?>


Résultat en bd : aucune entrée
Affichage Ihm : POST =
Array ( )
nombase est vide !


Je retombe toujours sur la même difficulté, $nomtobase est toujours vide.
Je ne sais pas si cela ne viendrait pas du formulaire lui même, je n'ai pas de <form..> ?
Ou alors, l'input et son name="cfg-element-35-7" ne se lançe qu'après le submit du formulaire qui m'envoie un mail de contact, si c'était le cas, il serait peut être normal que cfg-element-35-7 ( temporaire?) soit vide quand je duplique cfg-element-35-7 dans $nomtobase, et par prolongement $nomtobase reste vide également ?

J'ai bien essayé de trouver cette variable, dans les fichiers Js du dossier du formulaire, mais en vain .. et comment ensuite je pourrai la capturer si c'était le cas ?

Je ne sais pas si c'est réellement un problème de codage php, ou peut être le php en cacherait un autre ?

Merci de ton aide, tu m'avais déjà bien éclairé lors de mon dernier post et ça marche depuis.
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 2 oct. 2014 à 14:47
Affichage Ihm : POST =
Array ( )
Ton souci vient de la transmission de tes données entre ton formulaire HTML et ton code php...

..par contre pour t'aider... il manque le reste de ton code HTML.. surtout les balises FORM
<form method="post" action="LapagePhp.php">

<!-- LE RESTE DE TON CODE -->

</form>
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 2 oct. 2014 à 14:52
j'ai appliqué les correctifs, pour plus de lisbilité tu trouveras ci dessous le code "reformaté" :
Au passage.. si tu veux vraiment bien formaté ton HTML.. n'hésites pas à faire des retours à la ligne ..

<div class="cfg-element-container">
 <label class="cfg-label" 
    id="cfg-element-35-7-label" >
  <span class="cfg-label-value">Nom Prénom</span>
  <span class="cfg-required">*</span>
 </label>
 <div class="cfg-element-set" id="cfg-element-35-7-set" >
  <div class="cfg-element-content">
   <input type="text" 
       class="cfg-type-text cfg-form-value " 
       name="cfg-element-35-7" 
       id="cfg-element-35-7"  />
  <?php
              // mon code php ci dessous
        ?>
  </div>
 </div>
  <div class="cfg-clear"></div>
</div>


EDIT : En reformatant ton code... je vois que tu mets une partie en PHP... ce n'est pas la même que celle que tu nous montre depuis le début j'espère.....
Car sinon.. c'est sûr que ça ne fonctionnera pas.
Pour que ton PHP puisse lire le contenu de tes éléments HTML.. il faut lui envoyer par SUBMIT (et donc à l'aide de FORM ...)

Si toi.. tu veux lire en tant réel ce qu'il y a dans ta page HTML sans passer par du SUBMIT.. il faut à ce moment là.. utiliser du Javascript ( et avec de l'AJAX pour la communication avec la BDD...)
Commenter la réponse de Dbl35
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 2 oct. 2014 à 15:42
0
Utile
(re)

je pense que tu as raison, c'est exactement cela, je n'ai pas de passage en mon php et mon html, je vais devoir passer par AJAX ( que je connais quasiment trés peu).
Dans mon html il n'existe pas de <form..>, c'est donc que ces variables sont traitées en JS .. mais j'espérais que cela restait possible.
Ta démonstration remet tout à plat.
C'est justement ce que je voulais montrer en présentant ma div, je n'ai pas de <form.>...

Cela me "chiffonnait" depuis déjà un moment, il me semble maintenant que ce n'est plus la peine que je m'acharne sur mon php pour lire mes données de formulaires, mais alors, les données du formulaires entreront en bd même si celui-ci n'était pas validé ?

Je te livre une autre question, je pense d'ailleurs avoir la réponse avec ce que tu as dit ( passage par AJAX) , mais pour être sûr avant de me (re)lancer :
Mon formulaire est dans une session sécurisée avec login sha1 et mdp ( code ci-aprés), ce n'est pas cela qui ferait obstacle ? puisque la session est déjà ouverte lors du remplissage du formulaire ?

<code><?php
session_start();
require("authentific.php");
if(Authentific::isLogged()){
}
else
{
header('Location: login.php');
}
?>
</code>

Faut'il que je change de forum pour travailler avec AJAX ?
L'arborescence du formulaire est complexe, mais dans son dossier (cfg-contactform-35), j'ai un sous dossier Js qui contient des fichiers, dont un contactform.js et un autre upload.js, je pense que ce serait là que je devrait aller.

Merci pour ta clarté dans tes explications, c'est pas si fréquent.
Commenter la réponse de Dbl35
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 2 oct. 2014 à 16:10
0
Utile
Tu peux très bien écrire du javascript (AJAX en est en partie) directement dans ta page HTML...)
Mais il est plus propre en effet de le mettre dans un fichier .js

Pour l'ajax
1 - Tu auras besoin de PHP ... (ajax sert juste de passerelle entre "javascript" et le "php")
2 - Je te conseille d'utiliser JQUERY (la syntaxe de l'ajax est simplifiée...)

Il te faudra aussi un "déclencheur" .. à quel moment souhaites tu faire la MAJ dans ta BDD .. lors du click sur un bouton (dans ce cas tu aurais pu faire ça avec un SUBMIT et donc des FORM )
ou lors du remplissage dans ton input cfg-element-35-7 ?
ou encore.. lorsque l'input cfg-element-35-7 perd le FOCUS ?
Quoi qu'il en soit.. pour gérer ces "évènements" il faut donc que tu te serves des EVENT
http://www.commentcamarche.net/contents/573-javascript-les-evenements

Pour ce qui est du forum où poser ta question (si il t'en reste..) ... tout dépend :
Si ton souci se situe sur le code JAVASCRIPT .. il te faudra ouvrir une nouvelle discussion dans le forum JS
Si ton souci concerne la partie PHP (de ton ajax).. le forum PHP sert à ça..
Commenter la réponse de jordane45
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 2 oct. 2014 à 17:14
0
Utile
1
Je vais y aller pas à pas.

mon formulaire étant en session protégée, il vaut peut être mieux que j'écrive dans un nouveau fichier Js d'enregistrement dans le répertoire du formulaire ?

Concernant le déclenchement de l'enregistrement en bd, je souhaiterai que ca se fasse lorsque le formulaire est validé, sinon je vais retrouver en bd des données incomplètes issues de contacts qui n'auront pas rempli le formulaire jusqu'au terme de celui-ci.

J'ai suivi le lien que tu m'as indiqué, à priori le "submit" existant du formulaire pourrai servir comme évènement pour déclencher l'enregistrement ( ton lien):
(onSubmitt) = Se produit lorsque l'utilisateur clique sur le bouton de soumission d'un formulaire (le bouton qui permet d'envoyer le formulaire), ça devrait marcher..

Donc, ce "déclencheur" en Js dans mon html du formulaire doit être lier à une fonction d'enregistrement dans un autre fichier ? c'est ça ?

Et ce fichier "d'enregistrement" doit avoir une requête mysql en JS ? c'est toujours ça ?

Mais ou est passé le php ?
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 2 oct. 2014 à 20:21
Et ce fichier "d'enregistrement" doit avoir une requête mysql en JS ? c'est toujours ça ?
Oulllaaaa...
Une requête ... en Mysql ... dans Javascript ???!!!! .....pfuiiiiouuu... que de mots incompatibles.....

Jettes un oeil à ce tuto:
http://www.commentcamarche.net/faq/18745-utilisation-de-l-objet-xmlhttprequest

Mais ou est passé le php ?
Une fois que tu auras lu le lien que je t'ai donné.. tu verras que ,en gros,...
Tu as une fonction javascript... --> qui fait appel à un script PHP .--> .qui va maniper dans la BDD -->.. et retourner l'info dans ton script javascript....


(onSubmitt) = Se produit lorsque l'utilisateur clique sur le bouton de soumission d'un formulaire (le bouton qui permet d'envoyer le formulaire), ça devrait marcher..
Ca c'est valable.. QUAND tu as des balises <form ... > .... </form>
Commenter la réponse de Dbl35
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 2 oct. 2014 à 17:59
0
Utile
1
Jordane, excuse moi de ne pas attendre tes réponses, mais j'ai trouvé dans mon formulaire un dossier JS qui contient son submit en JQUERY, il doit êtres alors possible d'ajouter une fonction pour charger ma bd ?
Je te présente juste qq lignes du début ( il à 218 lignes), peux tu, si cela est possible, que tu m'indiques si selon toi, je pourrai utiliser ce fichier ?

<code>
jQuery(function(){
 	jQuery('#cfg-contactform-35 .cfg-submit').click(function(){
		
		var formcontainer = jQuery(this).closest('.cfg-contactform');
		var loading = formcontainer.find('.cfg-loading');
		
		loading.show();
		
		var submit_btn =  jQuery(this);
		submit_btn.hide();
		
		formcontainer.find('.cfg-errormessage').hide().remove();
		
		var form_value_array = Array();
		var radio_value = Array();
		var checkbox_value = Array();
		var selectmultiple_value = Array();
		var deleteuploadedfile_value = Array();
		
		formcontainer.find('.cfg-form-value').each(function()
		{
			var elementlabel = jQuery(this).closest('.cfg-element-container').find('.cfg-label-value');
			var elementlabel_id = elementlabel.closest('label').attr('id');
			var elementlabel_value = elementlabel.html();
			

// catch uploads
			if(jQuery(this).hasClass('cfg-uploadfilename'))
			{
				var key = jQuery(this).prop('name');
				var value =  jQuery.trim(jQuery(this).val());
				
				var deletefile = jQuery(this).closest('.cfg-element-content').find('.cfg-uploaddeletefile').val();
							
form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value, 'element_type':'upload', 'filename':value, 'element_type':'upload', 'deletefile':deletefile});
			}
......
</code>

En fait, cela semble accessible pour moi, on verra bien..
Merci de l'orientation
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 2 oct. 2014 à 20:25
Jordane, excuse moi de ne pas attendre tes réponses
Mais tu fais bien.. au contraire.

j'ai trouvé dans mon formulaire un dossier JS qui contient son submit en JQUERY, il doit êtres alors possible d'ajouter une fonction pour charger ma bd ?
..Est ce que dans ta page internet (celle qui contient le HTML que tu nous as montré précédement ).. tu as quelque part .. des balises
 <form  ...>  </form> 
????

De plus.. le bout de code que tu nous montres... ne nous donnes pas vraiment d'indications
il ressemble à un SCRIPT (téléchargé tout fait) qui permet peut être de faire de l' UPLOAD de fichiers... Mais je n'ai pas l'impression que ça ait un rapport avec TA page ni même que tu puisses l'utiliser.

Attention.. toutes les questions que tu poses en ce moment sont du Javascript... et n'ont pas vraiment leur place dans la section PHP du forum.


Et pour en revenir à ton souci...
Tu veux que le traitement se fasse EN TEMPS REEL ?
ou après que l'utilisateur ait cliqué quelque part pour valider ?
Commenter la réponse de Dbl35
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 3 oct. 2014 à 02:06
0
Utile
1
Je viens de relir tout ce que tu as écris durant nos échanges.. et j'avoue être passé à côté de quelque chose..

Ou alors, l'input et son name="cfg-element-35-7" ne se lançe qu'après le submit du formulaire qui m'envoie un mail de contact
Il y a bien un "submit" quelque part...et finalement le code javascript que tu nous collé pourrait correspondre (et dans ce cas...dans le reste du code tu as surement de l'ajax )...

... mais sans avoir TOUT le code sous les yeux..il me sera vraiment difficile de te répondre..

Mais essayons d'avancer par étape...
Déjà..il serait bien, si tu peux, que tu installes FireBug (une petite extension pour FireFox bien pratique pour analyser/debuguer les code html / css et javascript de tes pages web...

Une fois fais... tu regarderas sur la page web que tu essais de modifier... si tu n'aurais pas un bouton pour "valider" le formulaire.... Si oui.. tu y fais un clic droit..puis tu choisis Inspecter l'élément.. ce qui te donnera le code source attaché à ce bouton...
Tu y trouveras son nom..
son ID..
si il a un ONCLICK le nom de la fonction JS qu'il lance....(son id semble être : cfg-contactform-35 )
... et le onclick est, dans ce cas, géré directement via jquery
jQuery('#cfg-contactform-35 .cfg-submit').click(function()


Voici ce que donne "Explorer l'élément" :


Et pour vérifier si le code JS que tu nous as mis est bien celui qui traite l'envoie du mail...
tu peux y ajouter un petit ALERT ..

jQuery(function(){
 	jQuery('#cfg-contactform-35 .cfg-submit').click(function(){
		
// Ajout d'un ALERT...
var cfg-element-35-7 = $("#cfg-element-35-7").val();
alert("cfg-element-35-7 =" + cfg-element-35-7);

// Le reste du code....

var formcontainer = jQuery(this).closest('.cfg-contactform');
		var loading = formcontainer.find('.cfg-loading');




Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 3 oct. 2014 à 11:11
Bonjour Jordane
c'est vrai que je suis confus, mais c'est que je le suis réellement en terme de concept de cette méthode que je pensais pouvoir "habiter" tout de suite..
Je repose tout à plat, et vais y retourner pas à pas, sans me précipiter comme précédemment..

Concernant Firebug
Je l'ai déja mais ayant accès directement au codes je ne l'utilisais pas.

Concernant le <form>
Je n'ai pas de <form> da
Commenter la réponse de jordane45
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - Modifié par jordane45 le 3/10/2014 à 14:46
0
Utile
j'ai fait une erreur de manip pour ce message, je reprends..

alors, (re)Bonjour Jordane
c'est vrai que je suis confus, mais c'est que je le suis réellement en terme de concept de cette méthode que je pensais pouvoir "habiter" tout de suite..
Je repose tout à plat, et vais y retourner pas à pas, sans me précipiter comme précédemment..

Concernant Firebug
Je l'ai déja mais ayant accès directement au codes je ne l'utilisais pas.

Concernant le <form> je n'ai pas de <form> dans ma page html du formulaire, donc pas de "onclick", je te présente les codes plus bas.

Concernant le déclencheur
Ce que je souhaiterai est d'enregistrer le données du formulaires au terme de sa validation après le captcha, sinon je vais enregistrer des données partielles qui peuvent être fantaisistes (faux utilisateur).

Concernant "l'alert" que tu m'indiques
Je l'ai placée dans le code que je te présente aussi plus bas.
A priori, cela ne changerai rien puisque lorsque j'ai validé le formulaire après l'avoir rempli , j'ai bien reçu le mail de confirmation du contact que j'ai initié.

Le code HTML du formulaire
<div class="cfg-element-container">
<div class="cfg-element-set" id="cfg-element-35-32-set" >
<div class="cfg-element-content">
<input type="submit" class="cfg-submit " name="cfg-element-35-32"
id="cfg-element-35-32" value="Envoi du message" />
</div>
</div>
</div>

le code JS
<code>jQuery(function(){
 /*
 if(!jQuery.isFunction(jQuery.fn.on)){
  var jquery_version_error_message = 'The contact form requires jQuery 1.7.2 to work properly.<br />jQuery '+jQuery().jquery+' is loaded.';
  jQuery('.cfg-contactform').prepend('<p style="color:#FF0000">'+jquery_version_error_message+'</p>');
 }
 */
 jQuery('#cfg-contactform-35 .cfg-uploadfilename').val(''); // FF may keep the file name in the cfg-uploadfilename input after submitting and refreshing the page
 jQuery('#cfg-contactform-35 .cfg-captcha-refresh').click(function(){
 $('#cfg-contactform-35 .cfg-captcha-img').attr('src','cfg-contactform-35/inc/captcha.php?r=' + Math.random());
 });
 jQuery('#cfg-contactform-35 .cfg-submit').click(function()
 { 
 // Ajout d'un ALERT...
    var cfg-element-35-7 = $("#cfg-element-35-7").val();
    alert("cfg-element-35-7 =" + cfg-element-35-7);
    // fin ajout code de Jordane

    var formcontainer = jQuery(this).closest('.cfg-contactform');
  var loading = formcontainer.find('.cfg-loading');
  var formcontainer = jQuery(this).closest('.cfg-contactform');
  var loading = formcontainer.find('.cfg-loading');
  
  loading.show();
  
  var submit_btn =  jQuery(this);
  submit_btn.hide();
  
  formcontainer.find('.cfg-errormessage').hide().remove();
  
  var form_value_array = Array();
  var radio_value = Array();
  var checkbox_value = Array();
  var selectmultiple_value = Array();
  var deleteuploadedfile_value = Array();
  
  formcontainer.find('.cfg-form-value').each(function()
  {
   var elementlabel = jQuery(this).closest('.cfg-element-container').find('.cfg-label-value');
   var elementlabel_id = elementlabel.closest('label').attr('id');
   var elementlabel_value = elementlabel.html();

   // catch uploads
   if(jQuery(this).hasClass('cfg-uploadfilename'))
   {........}
   
   // catch input text values, textarea values, select values
   if(jQuery(this).is('.cfg-type-text, .cfg-type-textarea, .cfg-type-select'))
   {.......}
   // catch radiobutton values
   if(jQuery(this).is(':radio'))
   {....}
   // catch checkbox values
   if(jQuery(this).is(':checkbox'))
   {..}
   // catch multiple select values
   if(jQuery(this).hasClass('cfg-type-selectmultiple'))
   {....}
   // catch time values
   if(jQuery(this).hasClass('cfg-type-time'))
   {.....}
  });  
  
  // catch list of uploaded files to delete
  formcontainer.find('.cfg-deleteuploadedfile').each(function()
  {..}); 
  var captcha_img;
  var captcha_input; 
  if(formcontainer.find('.cfg-captcha-img').length)
  {...}
  
  // console.log(deleteuploadedfile_value);
  // console.log(form_value_array);
  
  jQuery.post('cfg-contactform-35/inc/form-validation.php',
    {.... },
    function(data)
    {....} /* end function data */
   ); /* end jQuery.post */
 }); /* end click submit */
 
 // DELETE UPLOADED FILE
 jQuery('body').on('click', '#cfg-contactform-35 .cfg-deleteupload', function()
 {....}); 
});
</code>

Je ne sais pas si tout ce LONG code est nécessaire.
J'ai "fouillé" les autres fichiers avec bluefish, je ne trouve pas de "onclick".
Est il possible ( et pertinent) d'utiliser ce jquery pour y insérer l'intégration des données dans ma bd ?

J'ai parcouru la charte, je crois que rien n'est plus normal de s'y conformer, cela devrait même être naturel.

Je compte migrer vers le forum Js dés que cela sera nécessaire bien sûr, quand j'aurai tracer le chemin à prendre.
Encore merci, je crois que j'ai pas fini..,
bien cordialement
Commenter la réponse de Dbl35
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 3 oct. 2014 à 14:51
0
Utile
Hello,

Bon, il semble bien que le script JS soit le bon..;
Et il génère le submit ( donc l'envoie en POST vers le fichier PHP : form-validation.php
jQuery.post('cfg-contactform-35/inc/form-validation.php', 


c'est donc :
1 - Dans ce script qu'il te faut gérer les champs que tu as ajouté à ton formulaire
=> ça doit se faire tout seul... à condition que dans ton code HTML tu ais mis les CLASS nécéssaires à tes éléments HTML..

Par exemple :
cfg-type-text pour les INPUT TEXT
cfg-type-textarea pour les TEXTEAREA



2 - Dans le script php "form-validation.php" traiter leur traitement vers la BDD





Commenter la réponse de jordane45
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 3 oct. 2014 à 16:05
0
Utile
2
Merci pour cette guidance,

Mais mes champs HTML sont déjà dans le formulaire avce les "class"
<code><!-- NOM PRENOM -->
<div class="cfg-element-container">
	<label class="cfg-label" id="cfg-element-35-7-label" ><span class="cfg-label-value">Nom Prénom</span><span class="cfg-required">*</span></label>
	    <div class="cfg-element-set" id="cfg-element-35-7-set" >
		<div class="cfg-element-content">
		<input type="text" class="cfg-type-text cfg-form-value " name="cfg-element-35-7" id="cfg-element-35-7"  />
		</div>
	</div>
	<div class="cfg-clear"></div>
</div>
</code>

Donc ils sont déjà dans Jquery , non ? et les class y sont déjà aussi..
<code>// catch input text values, textarea values, select values
if(jQuery(this).is('.cfg-type-text, .cfg-type-textarea, .cfg-type-select'))
{
var key = jQuery(this).prop('id');
var value = jQuery('#'+jQuery(this).prop('id')).val();
form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
}
</code>

Donc je n'ai plus qu'à ajouter mon code dans
<code>// catch uploads
   if(jQuery(this).hasClass('cfg-uploadfilename'))
   {........}
   
   // catch input text values, textarea values, select values
   if(jQuery(this).is('.cfg-type-text, .cfg-type-textarea, .cfg-type-select'))
   {.......}
   // catch radiobutton values
   if(jQuery(this).is(':radio'))
   {....}
   // catch checkbox values
   if(jQuery(this).is(':checkbox'))
   {..}
   // catch multiple select values
   if(jQuery(this).hasClass('cfg-type-selectmultiple'))
   {....}
   // catch time values
   if(jQuery(this).hasClass('cfg-type-time'))
   {.....} 
</code>

Et mofifier mon "form-validation.php"

Je me trompe ? ça me paraît simple c'est que je dois faire une erreur de raisonnement ?
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 3 oct. 2014 à 16:50
Ce n'est pas dans le javascript qu'il faut ajouter ton code.....
Il semble qu'il soit conçu pour automatiquement récupérer tous les éléments html dont les class sont listées dans le script....

Par contre.. une fois qu'il à tout récupéré.. il envoie les données dans le fichier PHP ...
Dans le script php "form-validation.php" traiter leur traitement vers la BDD
C'est DANS CE FICHIER que tu dois ajouter ton code d'insert en BDD :
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 3 oct. 2014 à 17:18
Passer d'un imbroglio difficile pour moi, pour au bout de 24h, arriver à simplement traiter mon insert bd dans form-validation.php, je n'en demandais pas tant..
Je ne viens pas souvent sur le forum, mais la dernière fois c'était encore toi qui m'avait dépanné, et je vois que tu est très sollicité(e)
Bien sincèrement, Mille fois merci Jordane , continue..

ps : je ne sais pas comment il faut clore le sujet ou peut être attendre 2 jours dés fois que..
Commenter la réponse de Dbl35
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 3 oct. 2014 à 19:08
0
Utile
4
Je ne viens pas souvent sur le forum, mais la dernière fois c'était encore toi qui m'avait dépanné, et je vois que tu est très sollicité(e)
Ben.. si je peux aider....^^

Bien sincèrement, Mille fois merci Jordane , continue..
"continue" ... A être sollicité ou à t'aider ? ... :-)
En tout cas..Pas de soucis.. avec plaisir.

je ne sais pas comment il faut clore le sujet
En cliquant sur le lien : Marquer comme résolu ( en haut, sous le titre de ta question )

Bonne continuation.
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 9 oct. 2014 à 20:23
Bonjour (ou bonsoir) Jordane,

J'avais bien fait de ne pas clore le sujet..
Pour reprendre le fil de nos précédents échanges, juste un petit rappel :

L'objectif est d'enregistrer mes données formulaire dans ma bd :

Pour cela, j'ai un fichier contact.js qui, je te cite (pour ne pas faire d'erreur) :
< .. il génère le submit ( donc l'envoie en POST vers le fichier PHP : form-validation.php >

Cela m'engage à mettre mes codes dans le fichier form-validation.php comme ceci ,(j'ai mis entre des lignes ************ le code que j'ai rajouté)
// ajout code dans form-validation.php
<code>// On établit la connection
try {
    $db=mysql_connect("*******.eu.mysql", "******_eu", "*********");// ok
    mysql_select_db("******._eu.mysql", $db);// ok
    }
    catch ( Exception $e )
    {
    echo "Connection à MySQL impossible : ", $e->getMessage();
    die();
    }
try {
// entrée données
mysql_select_db("**********_eu.mysql", $db);
$sql="INSERT INTO matable (nomprenom) VALUES ('$????????????')";
$sql="INSERT INTO matable (email) VALUES ('$?????????l')";
$sql="INSERT INTO matable (telephone) VALUES ('$???????')";
$sql="INSERT INTO matable (typecontact) VALUES ('$???????')";
    }
    catch ( Exception $e )
    {
    echo "Connection à MySQL impossible : ", $e->getMessage();
    die();
    }
</code>
// fin ajout code

Je n'arrive pas ou trouver les noms des variables pour les inclure dans ma bd$???????

Ce fichier est un peu log, mais sincèrement je ne savais pas exactement quel partie pouvait aider ton analyse, merci de m'en excuser.

Le fichier JS contact.js
<code>jQuery(function(){
	
	/*
	if(!jQuery.isFunction(jQuery.fn.on)){
		var jquery_version_error_message = 'The contact form requires jQuery 1.7.2 to work properly.<br />jQuery '+jQuery().jquery+' is loaded.';
		jQuery('.cfg-contactform').prepend('<p style="color:#FF0000">'+jquery_version_error_message+'</p>');
	}
	*/
	
	jQuery('#cfg-contactform-35 .cfg-uploadfilename').val(''); // FF may keep the file name in the cfg-uploadfilename input after submitting and refreshing the page
	
	jQuery('#cfg-contactform-35 .cfg-captcha-refresh').click(function(){
		
		$('#cfg-contactform-35 .cfg-captcha-img').attr('src','cfg-contactform-35/inc/captcha.php?r=' + Math.random());
	});
//****************************** click fonction submit 
	jQuery('#cfg-contactform-35 .cfg-submit').click(function(){
//******************************************************************************************
		var formcontainer = jQuery(this).closest('.cfg-contactform');
		var loading = formcontainer.find('.cfg-loading');
		
		loading.show();
		
		var submit_btn =  jQuery(this);
		submit_btn.hide();
		
		formcontainer.find('.cfg-errormessage').hide().remove();
		
		var form_value_array = Array();
		var radio_value = Array();
		var checkbox_value = Array();
		var selectmultiple_value = Array();
		var deleteuploadedfile_value = Array();
		
		formcontainer.find('.cfg-form-value').each(function()
		{
			var elementlabel = jQuery(this).closest('.cfg-element-container').find('.cfg-label-value');
			var elementlabel_id = elementlabel.closest('label').attr('id');
			var elementlabel_value = elementlabel.html();
//************************************upload 	
			// catch uploads
			if(jQuery(this).hasClass('cfg-uploadfilename'))
			{
				var key = jQuery(this).prop('name');
				var value =  jQuery.trim(jQuery(this).val());
				var deletefile = jQuery(this).closest('.cfg-element-content').find('.cfg-uploaddeletefile').val();
				form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value, 'element_type':'upload', 'filename':value, 'element_type':'upload', 'deletefile':deletefile});
			}
//************************************text 		
			// catch input text values, textarea values, select values
			if(jQuery(this).is('.cfg-type-text, .cfg-type-textarea, .cfg-type-select'))
			{
				var key = jQuery(this).prop('id');
				var value = jQuery('#'+jQuery(this).prop('id')).val();
				form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
			}
//************************************radio boutons 	
			// catch radiobutton values
			if(jQuery(this).is(':radio'))
			{
				var key = jQuery(this).prop('name');
				var value = jQuery(this).val();
				var check_index_radio_form_value = form_value_array.length+1;
				if(jQuery(this).is(':checked')){
					form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
					radio_value[key] = value;
				}
				
				if( jQuery(this).is( jQuery(this).closest('.cfg-element-container').find('input[name='+key+']:last')) )
				{
					if(!radio_value[key]){
						form_value_array.push({'element_id': key, 'element_value': '', 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
					}
				}
			}
//***********************************checkbox*******************************************
			// catch checkbox values
			if(jQuery(this).is(':checkbox'))
			{
				var key = jQuery(this).prop('name');
				var value = jQuery(this).val();
					
				if(jQuery(this).is(':checked'))
				{
					
					form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
					
					checkbox_value[key] = value;
					
				}
				
				if( jQuery(this).is(jQuery(this).closest('.cfg-element-container').find('input[name='+key+']:last')))
				{
					// we are at the last checkbox, and the checkbox[name] array value is still empty => insert fieldname: '' in the notification
					if(!checkbox_value[key])
					{
						form_value_array.push({'element_id': key, 'element_value': '', 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
					}
				}
			}
			// catch multiple select values
			if(jQuery(this).hasClass('cfg-type-selectmultiple'))
			{
				var key = jQuery(this).prop('name'); // must be placed here, not in each() or php will return Undefined index: element_id
				
				jQuery(this).find('option').each(function()
				{
					var value = jQuery(this).val();
						
					if(jQuery(this).is(':selected'))
					{
						form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
						selectmultiple_value[key] = value;
					}
					
					if( jQuery(this).is( jQuery(this).closest('.cfg-type-selectmultiple').find('option:last')) )
					{
						// we are at the last option, and the selectmultiple[name] array value is still empty => insert fieldname: '' in the notification
						if(!selectmultiple_value[key])
						{
							form_value_array.push({'element_id': key, 'element_value': '', 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
						}
					}
					
				});
				
			}
			// catch time values
			if(jQuery(this).hasClass('cfg-type-time'))
			{
				//var key = jQuery(this).find('.cfg-time-hour').prop('name');
				var key = jQuery(this).closest('.cfg-element-container').find('.cfg-time-hour').prop('name');
				var ampm = jQuery(this).closest('.cfg-element-container').find('.cfg-time-ampm').val();
				if(ampm == undefined) ampm = ''; // no quote on undefined
				var value = jQuery(this).closest('.cfg-element-container').find('.cfg-time-hour').val()+':'+jQuery(this).closest('.cfg-element-container').find('.cfg-time-minute').val()+' '+ampm;
				
				form_value_array.push({'element_id': key, 'element_value': value, 'elementlabel_id':elementlabel_id, 'elementlabel_value':elementlabel_value});
			}
		});
//***************************** uploaded files to delet********************************************************************
		// catch list of uploaded files to delete
		formcontainer.find('.cfg-deleteuploadedfile').each(function(){
			deleteuploadedfile_value.push(jQuery(this).val());
		});
		
		var captcha_img;
		var captcha_input;
		
		if(formcontainer.find('.cfg-captcha-img').length)
		{
			captcha_img = 1;
			captcha_input = formcontainer.find('.cfg-captcha-input').val();
		}
	
		// console.log(deleteuploadedfile_value);
		// console.log(form_value_array);
		
// ACTION FORMULAIRE génère le submit ( donc l'envoie en POST vers le fichier PHP : form-validation.php****************
		jQuery.post('cfg-contactform-35/inc/form-validation.php',
//****************************************************************************************************************				{ 
				'captcha_img':captcha_img,
				'captcha_input':captcha_input,
				'form_value_array':form_value_array,
				'deleteuploadedfile':deleteuploadedfile_value
				},
				function(data)
				{
					loading.hide();
					
					data = jQuery.trim(data);
					
					// 	console.log(data);
					
					response = jQuery.parseJSON(data);
						
					if(response['status'] == 'ok')
					{
						
						if(response['redirect_url'])
						{
							window.location.href = response['redirect_url'];
						} else
						{
							validation_message = '<div class="cfg-validationmessage">'+response['message']+'</div>';
								
							formcontainer.find('.cfg-element-container').each(function()
							{
								if(!jQuery(this).find('.cfg-title').html())
								{
									jQuery(this).slideUp('fast');
								}
							});
							
							jQuery('html, body').animate({scrollTop:formcontainer.offset().top}, 'fast');
							
							formcontainer.find('.cfg-contactform-content').append(validation_message);
						}
							
					} else
					{
						submit_btn.show();
						
						for(var i=0; i<response['message'].length; i++)
						{
							var optioncontainer = jQuery('[name*='+response['message'][i]['element_id']+']:first').closest('.cfg-element-content');

							jQuery('<div class="cfg-errormessage">'+response['message'][i]['errormessage']+'</div>').prependTo(optioncontainer).fadeIn();
						}						
						
						// scrolls to the first error message
						jQuery('html,body').animate({scrollTop: jQuery('#'+response['message'][0]['elementlabel_id']).offset().top},'fast'); 	
						
					}
				} /* end function data */
			); /* end jQuery.post */
	}); /* end click submit */
	
	// DELETE UPLOADED FILE
	jQuery('body').on('click', '#cfg-contactform-35 .cfg-deleteupload', function()
	{
		var filename = jQuery(this).closest('.cfg-uploadsuccess-container').find('.cfg-deleteupload-filename').val();
		
		// to add the filename to the list of files to delete
		// // the .cfg-deleteuploadedfile input can also be added in case of chain upload (handlers.js)
		jQuery(this).closest('.cfg-element-content').append('<input value="'+filename+'" type="hidden" class="cfg-deleteuploadedfile" />');
		
		// reset the upload input that contains the filename value
		jQuery(this).closest('.cfg-element-content').find('.cfg-uploadfilename').val('');
		
		// must come last, jQuery(this) is used to access closest elements
		jQuery(this).closest('.cfg-uploadsuccess-container').remove();
	});
	
});
</code>

Voila, auaris tu un code pour afficher les array, elles sont dedans, je pense ..

Merci beaucoup
si tu peux encore m'éclairer, selon tes convenances bien sûr

Dan
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 12 oct. 2014 à 14:55
Bonjour,

y a t'il quelqu'un qui puisse m'aider, si je me suis mal expliqué, dites le moi.
merci bien
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 12 oct. 2014 à 15:06
Dans le fichier php...n'as tu pas des exemples de traitement des champs envoyés par le submit ??
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 17 oct. 2014 à 11:58
Je veux bien t'aider y'a pas de soucis...
Mais dans l'immédiat ma question exacte serait :
Que contient (dans son intégralité) le fichier form-validation.php ?
Commenter la réponse de jordane45
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 17 oct. 2014 à 11:27
0
Utile
Bonjour Jordane,
Excuses pour mon retard, je tentais l'opération en php/ajax, mais j'ai aussi un souci..
Pour revenir à ce que tu me demandes, c'est justement là mon problème.

Je cherche un fichier qui contienne mes variables formulaires, je pense que ces variables sont dans un dossier cfg dans lequel sont positionnés tout les fichiers.
Par facilité, je te propose de les évoquer un par un de sorte que tu puisses m'indique leurs destinations., j'ai déjà qq idées, mais débutant, je préférerai repartir sur de bonnes pistes plutôt que de" balancer" des lignes de codes à l'aveugle, qui ne seraient pas contextualisées.
En même temps, je vais apprendre et réinvestir tranquillement ce que j'aurais acquis par ta guidance
Voila ce que je te propose, si tu était d'accord, envoies moi ton OK par retour.
Ps : je comprendrai que tu ne puisses pas répondre à ma demande ( de débutant .. n'oublies pas.)
Merci bien, Cordialement
Dan
Commenter la réponse de Dbl35
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 17 oct. 2014 à 13:14
0
Utile
1
Oubli ?? le class.contactform dans leueql je souhaite activer le processus bd

<code><?php
class contactForm{

	function contactForm($cfg)
	{
		$this->cfg['email_address'] = isset($cfg['email_address'])?$cfg['email_address']:'';
		
		// =?UTF-8?B? required to avoid bad character encoding in the From field
		// é (keeps utf-8 encoding in the file)
		$this->cfg['email_from'] = (isset($cfg['email_from']) && $cfg['email_from'])?'=?UTF-8?B?'.base64_encode($cfg['email_from']).'?=':$this->cfg['email_address'];
		$this->cfg['email_address_cc'] = isset($cfg['email_address_cc'])?$cfg['email_address_cc']:'';
		$this->cfg['email_address_bcc'] = isset($cfg['email_address_bcc'])?$cfg['email_address_bcc']:'';
		
		$this->cfg['timezone'] = isset($cfg['timezone'])?$cfg['timezone']:'';
		
		$this->cfg['adminnotification_subject'] = isset($cfg['adminnotification_subject'])?$cfg['adminnotification_subject']:'';
		
		$this->cfg['usernotification_insertformdata'] = isset($cfg['usernotification_insertformdata'])?$cfg['usernotification_insertformdata']:'';
		$this->cfg['usernotification_inputid'] = isset($cfg['usernotification_inputid'])?$cfg['usernotification_inputid']:'';
		$this->cfg['usernotification_subject'] = isset($cfg['usernotification_subject'])?$cfg['usernotification_subject']:'';
		$this->cfg['usernotification_message'] = isset($cfg['usernotification_message'])?preg_replace('#<br(\s*)/>|<br(\s*)>#i', "\r\n",$cfg['usernotification_message']):'';
		
		$this->cfg['form_name'] = isset($cfg['form_name'])?$cfg['form_name']:'';
		
		$this->cfg['form_errormessage_captcha'] = isset($cfg['form_errormessage_captcha'])?$cfg['form_errormessage_captcha']:'';
		$this->cfg['form_errormessage_emptyfield'] = isset($cfg['form_errormessage_emptyfield'])?$cfg['form_errormessage_emptyfield']:'';
		$this->cfg['form_errormessage_invalidemailaddress'] = isset($cfg['form_errormessage_invalidemailaddress'])?$cfg['form_errormessage_invalidemailaddress']:'';
		$this->cfg['form_validationmessage'] = isset($cfg['form_validationmessage'])?$cfg['form_validationmessage']:'';
		$this->cfg['form_redirecturl'] = isset($cfg['form_redirecturl'])?$cfg['form_redirecturl']:'';
		
		$this->dash_line = '--------------------------------------------------------------';
		
		$this->mail_content_type_format = 'plaintext'; // html
		
		if($this->mail_content_type_format == 'plaintext')
		{
			$this->mail_content_type_format_charset = 'Content-type: text/plain; charset=utf-8';
			$this->mail_line_break = "\r\n";
		}
		if($this->mail_content_type_format == 'html')
		{
			$this->mail_content_type_format_charset = 'Content-type: text/html; charset=utf-8';
			$this->mail_line_break = "<br />";
		}
		
		
		/**
		 * USER NOTIFICATION MAIL FORMAT
		 */
		$this->cfg['usernotification_format'] = isset($cfg['usernotification_format'])?$cfg['usernotification_format']:'';
		
		if($this->cfg['usernotification_format'] == 'plaintext')
		{
			$this->mail_content_type_format_charset_usernotification = 'Content-type: text/plain; charset=utf-8';
			$this->mail_line_break_usernotification = "\r\n";
		}
		
		if($this->cfg['usernotification_format'] == 'html')
		{
			$this->mail_content_type_format_charset_usernotification = 'Content-type: text/html; charset=utf-8';
			$this->mail_line_break_usernotification = "<br />";
		}
		
		
		$this->merge_post_index = 0;
		
		$this->demo = 0;
		
		$this->envato_link = 'http://codecanyon.net/item/contact-form-generator/1719810?ref=topstudio';
	}
	
	
	function sendMail($param)
	{
		$count_files_to_attach = 0;
		
		// grab and insert the form URL in the notification message
		$form_url = (@$_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
		
		if($_SERVER['SERVER_PORT'] != '80')
		{
			$form_url .= $_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].rawurlencode($_SERVER['SCRIPT_NAME']);
		}
		else 
		{
			$form_url .= $_SERVER['SERVER_NAME'].rawurlencode($_SERVER['SCRIPT_NAME']);
		}
		
		$form_url = str_replace('%2F', '/', $form_url);
		
		$form_url_exp = explode('/', $form_url);
		
		
		// remove contactform/inc/form-validation.php
		$pattern_slash = $form_url_exp[count($form_url_exp)-3].'/'.$form_url_exp[count($form_url_exp)-2].'/'.$form_url_exp[count($form_url_exp)-1];
		
		$form_url = str_replace($pattern_slash, '', $form_url);
		
		if($this->cfg['timezone'])
		{
			date_default_timezone_set($this->cfg['timezone']);
		}
		
		// g:i A | 01:37 AM
		// G:i | 13:37
		$mail_body = $this->cfg['adminnotification_subject'].': '.@date("F jS, Y, G:i")
							.$this->mail_line_break.$this->mail_line_break.$this->cfg['form_name']
							.$this->mail_line_break.$this->mail_line_break.'Form URL: '
							.$this->mail_line_break.$form_url
							.$this->mail_line_break.$this->dash_line;

		if($this->merge_post)
		{
			foreach($this->merge_post as $value)
			{
				if(
				   isset($value['element_type']) && $value['element_type'] == 'upload'
				   && isset($value['filename']) && $value['filename']
				   )
				{
					
					if( isset($value['deletefile']) && ($value['deletefile'] == 1 || $value['deletefile'] == 2) )
					{
						$count_files_to_attach++;
					}
					

					$explode_requesturi = explode('/',$_SERVER['REQUEST_URI']);
					//print_r($explode_requesturi);
					
					$explode_requesturi = explode('/',$_SERVER['SCRIPT_NAME']);
					//print_r($explode_requesturi);

					$inc_form_validation = $explode_requesturi[count($explode_requesturi)-2].'/'.$explode_requesturi[count($explode_requesturi)-1] ;

					$install_dir = str_replace($inc_form_validation,'',$_SERVER['SCRIPT_NAME']);
					
					
					
					$mail_body .= $this->mail_line_break.$this->mail_line_break.$value['elementlabel_value'].': '.$value['element_value'];
					
					// No file link if we delete the file after the upload
					// 1: File Attachment + Download Link
					// 2: File Attachment Only
					if( isset($value['deletefile']) && ($value['deletefile'] == 1 || $value['deletefile'] == 3) )
					{
						$mail_body .= $this->mail_line_break
											.'http://'.$_SERVER['SERVER_NAME']
											.str_replace('%2F', '/', rawurlencode($install_dir.'upload/'.$value['element_value']));
					}

				} 
				else{
					$mail_body .= $this->mail_line_break.$this->mail_line_break.$value['elementlabel_value'].': '.$value['element_value'];
				}
			}
		}
		
		$mail_body .= $this->mail_line_break.$this->mail_line_break.$this->dash_line;
		$mail_body .= $this->mail_line_break.'IP address: '.$_SERVER['REMOTE_ADDR'];
		$mail_body .= $this->mail_line_break.'Host: '.gethostbyaddr($_SERVER['REMOTE_ADDR']);
		
		if(preg_match('#html#', $this->mail_content_type_format_charset))
		{
			$mail_body = nl2br($mail_body);
		}
		
		if($this->demo != 1)
		{
			// for the admin: if the user provides his email address, it will appear in the "from" field
			$param['reply_emailaddress'] = (isset($param['reply_emailaddress']) && $param['reply_emailaddress'])?$param['reply_emailaddress']:$this->cfg['email_address'];
			
			// for the admin: if the user provides his email address, it will appear in the "reply-to" field
			$replyto_name = $param['reply_emailaddress']?$param['reply_emailaddress']:'';
			$replyto_address = $param['reply_emailaddress']?$param['reply_emailaddress']:'';
			
			$mailheaders_options = array(
														'from'=>array('name'=>$param['reply_emailaddress'], 'address'=>$param['reply_emailaddress']),
														'replyto'=>array('name'=>$replyto_name, 'address'=>$replyto_address),
														'cc'=>array('address'=>$this->cfg['email_address_cc']),
														'bcc'=>array('address'=>$this->cfg['email_address_bcc'])
													   );
			
			
			
			
			$mailheaders = $this->getMailHeaders($mailheaders_options);
			
			
			//if(!isset($param['uploads']) || !$param['uploads'])
			if(!$count_files_to_attach)
			{
				$mailheaders .= $this->mail_content_type_format_charset."\r\n";
				
				$mailmessage = $mail_body;
			} else
			{

				// boundary 
				$semi_rand = md5(time());
				$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
					 
				// headers for attachment 
				$mailheaders .= "MIME-Version: 1.0\n"
										."Content-Type: multipart/mixed;\n"
										." boundary=\"{$mime_boundary}\"";
					 
				// multipart boundary 
				
				$mailmessage = "This is a multi-part message in MIME format.\n\n"
										."--{$mime_boundary}\n"
										.$this->mail_content_type_format_charset."\n"
										."Content-Transfer-Encoding: 7bit\n\n"
										.$mail_body
										."\n\n";
									
				$mailmessage .= "--{$mime_boundary}\n";
					 
				// preparing attachments
				$count_attached_file = 0;
					
				foreach($this->merge_post as $value)
				{
						if(
							isset($value['element_type']) && $value['element_type'] == 'upload'
							&& isset($value['filename']) && $value['filename']
							&& isset($value['deletefile']) && ($value['deletefile'] == 1 || $value['deletefile'] == 2)																	   
						)
						{
							$count_attached_file++;
								
							$file = fopen('../upload/'.$value['filename'],"rb");
							$data = fread($file,filesize('../upload/'.$value['filename']));
							fclose($file);
								
							$data = chunk_split(base64_encode($data));
							
							$mailmessage .= 'Content-Type: {"application/octet-stream"};'."\n" . ' name="'.$value['filename'].'"'."\n" 
													.'Content-Disposition: attachment;'."\n" . ' filename="'.$value['filename'].'"'."\n" 
													.'Content-Transfer-Encoding: base64'."\n\n" . $data . "\n\n";
							
							// "--" must be added for the last file, or an empty file will be also attached in the message
							if($count_attached_file == $count_files_to_attach)
							{
								$mailmessage .= "--{$mime_boundary}--\n";
							} else{
								$mailmessage .= "--{$mime_boundary}\n";
							}
								
							// delete attached file?
							// this is different from deleting the file when the user deletes the file himself in the from: check form-validation.php for this (in form-validation.php because the file must be deleted even if sendMail() is not called - when there are errors for example)
							if(isset($value['deletefile']) && $value['deletefile'] == 2)
							{
								@unlink('../upload/'.$value['filename']);
							}
						}
				} // foreach
			} // if(!$count_files_to_attach)
			
			@mail($this->cfg['email_address'], $this->cfg['adminnotification_subject'], $mailmessage, $mailheaders);
			
		}
	}
	
	
	function sendMailReceipt($value)
	{
		if($this->demo != 1)
		{
			
			$mailheaders_options = array(
														'from'=>array('name'=>$this->cfg['email_from'], 'address'=>$this->cfg['email_address']),
														'replyto'=>array('name'=>$this->cfg['email_from'], 'address'=>$this->cfg['email_address'])
													   );
			
			$mailheaders = $this->getMailHeaders($mailheaders_options)
									.$this->mail_content_type_format_charset_usernotification."\r\n"
									;
			
			$mail_body = '';
			$mail_body .= $this->cfg['usernotification_message'];
			
			if($this->cfg['usernotification_insertformdata'])
			{
				$mail_body .= $this->mail_line_break_usernotification."--------------------------------------------------------";
				
				foreach($this->merge_post as $form_data)
				{
					$mail_body .= $this->mail_line_break_usernotification.$this->mail_line_break_usernotification.$form_data['elementlabel_value'].': '.$form_data['element_value'];
				}
			}
			
			if(preg_match('#html#', $this->mail_content_type_format_charset_usernotification))
			{
				$mail_body = nl2br($mail_body);
			}

			@mail($value['email_address'], $this->cfg['usernotification_subject'], $mail_body, $mailheaders);
		}
	}
	
	function mergePost($value)
	{
		$this->merge_post[$this->merge_post_index]['element_id'] = $value['element_id'];
		$this->merge_post[$this->merge_post_index]['element_value'] = $this->quote_smart(trim($value['element_value']));
		$this->merge_post[$this->merge_post_index]['elementlabel_value'] = $this->quote_smart(trim($value['elementlabel_value']));
		$this->merge_post[$this->merge_post_index]['elementlabel_id'] = $this->quote_smart(trim($value['elementlabel_id']));
		
		if(isset($value['element_type']) && $value['element_type'])
		{	// if element_type == upload, we add the download link in the mail body message
			$this->merge_post[$this->merge_post_index]['element_type'] = trim($value['element_type']);
		}
		
		if(isset($value['filename']) && $value['filename'])
		{
			$this->merge_post[$this->merge_post_index]['filename'] = $this->quote_smart(trim($value['filename']));
		}
		
		if(isset($value['deletefile']) && $value['deletefile'])
		{
			$this->merge_post[$this->merge_post_index]['deletefile'] = trim($value['deletefile']);
		}
		
		$this->merge_post_index++;
	}
	

	function isEmail($email)
	{
		$atom   = '[-a-z0-9\\_]';   // authorized caracters before @
		$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // authorized caracters after @
									   
		$regex = '/^' . $atom . '+' .   
		'(\.' . $atom . '+)*' .         
										
		'@' .                           
		'(' . $domain . '{1,63}\.)+' .  
										
		$domain . '{2,63}$/i';          
		
		// test de l'adresse e-mail
		return preg_match($regex, trim($email)) ? 1 : 0;
		
	}
	
	
	function quote_smart($value)
	{
		if(get_magic_quotes_gpc())
		{
			$value = stripslashes($value);
		}
		
		return $value;
	}
	
	
	
	function getMailHeaders($mailheaders_options)
	{
		$mailheaders_options['from']['name'] = isset($mailheaders_options['from']['name'])?$mailheaders_options['from']['name']:$mailheaders_options['from']['address'];
		
		$mailheaders_options['cc']['address'] = isset($mailheaders_options['cc']['address'])?$mailheaders_options['cc']['address']:'';
		
		$mailheaders_options['bcc']['address'] = isset($mailheaders_options['bcc']['address'])?$mailheaders_options['bcc']['address']:'';


		$from_name = $mailheaders_options['from']['name']?$mailheaders_options['from']['name']:$mailheaders_options['from']['address'];
		
		
		if($this->isEmail($from_name))
		{
			// 	From: user@domain.com <user@domain.com> is invalid => user@domain.com
			$mail_header_from = 'From: '.$from_name."\r\n";
			$mail_header_replyto = 'Reply-To: '.$from_name."\r\n";
		} else
		{
			$mail_header_from = 'From: '.$from_name.'<'.$mailheaders_options['from']['address'].'>'."\r\n";
			$mail_header_replyto = 'Reply-To: '.$from_name.'<'.$mailheaders_options['from']['address'].'>'."\r\n";
		}
		
		
		$mail_header_cc = '';
		if($mailheaders_options['cc']['address'])
		{
			
			$explode_email = explode(',', $mailheaders_options['cc']['address']);
			
			$cc = '';

			foreach($explode_email as $email_value)
			{
				$cc .= $email_value.",";
			}
			
			$mail_header_cc .= 'Cc: '.substr($cc, 0, -1)."\r\n";
		}
		
		$mail_header_bcc = '';
		if($mailheaders_options['bcc']['address'])
		{
			$explode_email = explode(',', $mailheaders_options['bcc']['address']);
			
			$bcc = '';

			foreach($explode_email as $email_value)
			{
				$bcc .= $email_value.",";
			}
			
			$mail_header_bcc .= 'Bcc: '.substr($bcc, 0, -1)."\r\n";

		}
		
		$mailheaders = 	$mail_header_from
								.$mail_header_cc
								.$mail_header_bcc
								.$mail_header_replyto
								.'MIME-Version: 1.0'."\r\n"
								.'X-Mailer: PHP/'.phpversion()."\r\n"						;
		/*
		Examples of headers that should work would be:
			From: user@domain.com will work
			From: "user" <user@domain.com>
		
		Examples of headers that will NOT work:
			From: "user@domain.com"
			From: user @ domain.com
			From: user@domain.com <user@domain.com>								
		*/
		
		// 	echo $mailheaders;
		return($mailheaders);
	}	
}
/**
 * NO SPACES AFTER THIS LINE TO PREVENT
 * Warning: Cannot modify header information
 */
?>
</code>
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 17 oct. 2014 à 16:00
(re) j'essaie d'avancer ..

Lorsque je submit le formulaire html (> captcha> envoyer) et j'ouvre préalablement l'outil de développement de FireFox sur l'onglet > réseau et paramètres , j'obtiens ceci :

form-validation.php / méthode POST / domaine ***.eu

Puis dans les paramètres :
captcha_image : "1"
catcha_input : "1gq78"
form_value_array[0][element_id] : "cfg-element-35-11"
form_value_array[0][element_value] : "Madame"
form_value_array[0][elementlabel_id] : "cfg-element-35-11-label"
form_value_array[0][elementlabel_value] : ""

form_value_array[1][element_id] : ""cfg-element-35-7""
form_value_array[1][element_value] : "Monsieur"
form_value_array[1][elementlabel_id] : "cfg-element-35-7-label"
form_value_array[1][elementlabel_value] : ""

et ainsi de suite jusqu' à 11 pour toutes mes variables de formulaires.

form_value_array[11][element_id] : "cfg-element-35-30"
..
c'est une collection de form_.. et les [ ] sont des index ?
Ce sont bien les "identifiants" de mes variables ? je me trompe ? je peux les extraire ? et les travailler avec un require_once de connection bd + enregistrement ? dans le fichier form-validation.php ?

Ça serait valide comme cela ? $nom, $prenom = champs table bd
$prenom,$nom,.. = array('cfg-element-35-11','cfg-element-35-7',..');

Dan
Commenter la réponse de Dbl35
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 18 oct. 2014 à 01:44
0
Utile
Visiblement... il suffit juste de faire :
$mavaleur = isset($_POST['cfg-element-35-7'])?$_POST['cfg-element-35-7']:'';

$_POST contenant l'ensemble des champs envoyés par ton formulaire...


Commenter la réponse de jordane45
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 22 oct. 2014 à 14:53
0
Utile
Bonjour Jordane,

je te recontacte sous 48 h, j'essaie de finir une autre méthode php/pdo avec laquelle j'ai aussi qq difficultés d'envoi des datas qui n'apparaissent pas lorsque je teste avec l'outil de développement de FF ==> réseau / paramètres = rien, bref un autre "chapitre"...

Concernant ce que tu m'indiques :
<code>mavaleur = isset($_POST['cfg-element-35-7'])?$_POST['cfg-element-35-7']:''
</code>

Effectivement je pense que cela récupère l'ensemble des données du formulaire.

Je me demande ou je dois placer mes codes, du fait que la validation se fait après la validation par la captcha et après la validation de chaque donnée obligatoire.

J'ai déjà mon fichier php de connexion bd (qui fonctionne),de telle sorte que je puisse le rappeler sans refaire la connexion à chaque enregistrement.

Voilà ou j'en suis,
Je reviens donc vers toi sous peu.
Merci bien de ton concours
Dan
Commenter la réponse de Dbl35
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 23 oct. 2014 à 18:36
0
Utile
3
bonjour Jordane,

Voila ou j'en suis, si tu veux une petite synthése de nos échanges précédents, je te ferai un retour.
Dans le validation form.php
<code>/ enregistrement bd
$nomprenom = isset($_POST['cfg-element-35-7'])?$_POST['cfg-element-35-7']:'';
$DSN_string='mysql:host=********.eu.mysql;dbname=***********_eu';
$USER_string='************_eu';
$PWD_string='***********';
try {
$PDOInstance = new PDO($DSN_string, $USER_string, $PWD_string);
$PDOInstance->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
}
catch (PDOException $e){print 'PDO_err : '.$e->getMessage();}
// entree data
$result=$PDOInstance->query("INSERT INTO matable (nomprenom) VALUES ('$nomprenom')");
</code>

Le problème, je constate l'enregistrement dans ma table, mais vide..
dan
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 23 oct. 2014 à 21:48
Ajoute un petit message dans la déclaration du $nomprenom ... ainsi tu pourra voir si le souci ne serait pas dans la "récupération" de tes données...

$nomprenom = isset($_POST['cfg-element-35-7'])?$_POST['cfg-element-35-7']:'No_Value';


Si dans ta BDD tu as : No_Value qui apparait .. c'est que la variable
$_POST['cfg-element-35-7']
n'existe pas.... et dans ce cas.. on en revient encore une fois à ton script JQUERY .... C'est lui qui envoie récupère les données du formulaire pour les transmettre au fichier...

Après relecture du Jquery... il semble qu'il stocke les différents éléments de ton formulaire dans une variable "form_value_array"
.. mais essayer de récupérer juste les variables que tu souhaites.. risque d'être très compliqué...

Il vaudrait mieux gerer tes propres variables...


=> Lors de l'envoie des données... il faut ajouté TA variable

var TaVar = $("#cfg-element-35-7").val();

		jQuery.post('cfg-contactform-35/inc/form-validation.php',
//****************************************************************************************************************				{ 
				'captcha_img':captcha_img,
				'captcha_input':captcha_input,
				'form_value_array':form_value_array,
				'deleteuploadedfile':deleteuploadedfile_value,
                                'taVariable':TaVar
				},



Dans ton code PHP
$nomprenom = isset($_POST['taVariable'])?$_POST['taVariable']:'no-value';
Dbl35 72 Messages postés mardi 19 novembre 2013Date d'inscription 11 juillet 2015 Dernière intervention - 24 oct. 2014 à 16:45
(RE)
ça marche, il suffisait de mettre une ligne de code avant le "delette".

<code> var TaVar = $("#cfg-element-35-7").val();
  jQuery.post('cfg-contactform-35/inc/form-validation.php',
    { 
    'captcha_img':captcha_img,
    'captcha_input':captcha_input,
    'form_value_array':form_value_array,
    'taVariable':TaVar,
    'deleteuploadedfile':deleteuploadedfile_value
    },
</code>

et le php :
<code>$nomprenom = isset($_POST['taVariable'])?$_POST['taVariable']:'pas de valeur nomprenom';
$DSN_string='mysql:host=************.eu.mysql;dbname=***********_eu';
$USER_string='***********_eu'; 
$PWD_string='************';
try {
$PDOInstance = new PDO($DSN_string, $USER_string, $PWD_string);
$PDOInstance->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
}
catch (PDOException $e){print 'PDO_err : '.$e->getMessage();}
// entree data
$result=$PDOInstance->query("INSERT INTO confid (nomprenom) VALUES ('$nomprenom')");

</code>

merci infiniment, mais j'ai pas fini.
dan
jordane45 20558 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 19 avril 2018 Dernière intervention - 24 oct. 2014 à 16:51
ça marche, il suffisait de mettre une ligne de code avant le "delette".

Devant ou derrière.. peu importe.. et si tu regardes.. c'est ce que j'avais fait...

PS: si ta question est résolue.. merci de clore le sujet.
Commenter la réponse de Dbl35

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

enregistrement de données formulaire dans mysql - page 2