S'abonner :  Newsletters    Magazines
Avis sur les produits Avis sur les logiciels Avis sur les jeux Actualités A propos de 01net
540 utilisateurs connectés

Utilisation base sql pour un formulaire mail

guilich le 01 septembre 2008 à 15h21
Bonjour, je recréé un post ici parce que je n'arrivais pas à répondre en entier au dernier

Bonjour,

je reviens vers vous après de nombreuses modifications.

en effet, j'ai tenté l'ajax, et j'ai à peu près réussi mon opération.

il mem anque quelques petits points à éclaircir avant d'avoir complété le travail.

je vous donne les codes avant de m'expliquer



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Document sans nom</title>
<script src="js.js" language="javascript"> </script>
</head>

<body>
<div align="center">
<form method="post" action="mail.php">
<div align="center">
<table>
<input type="hidden" name="subject" value="Commande"/>
<tr>
<td> Votre société: </td>
<td width="180"><input type="text" name="Societe" size="30" />
</td>
</tr>
<tr>
<td> Votre Email: </td>
<td><input type="text" name="Email" size="30" />
</td>
</tr>
<tr>
<td> Objet: </td>
<td><input type="text" name="Sujet" size="30" />
</td>
</tr>
<tr>
<td> Informations complémentaires: </td>
<td><p>
<textarea name="Informations" cols="30" rows="3"></textarea>
</p></td>
</tr>
</table>
</div>
<form method="post" onsubmit="" action="">
<table width="434" border="0" align="center" cellspacing="0">
<tr>
<td width="64">Reference:</td>
<td width="72">
<input name="Ref" id="Ref" type="text" size="6" onchange="maFonctionAjax(this.value,'Nom');return false";return false">
</td>
<td width="70">D&eacute;signation</td>
<td width="132"><input name="Nom" id="Nom" type="text" size="22" /></td>
<td width="54">Quantite:</td>
<td width="54"><input name="Quantite" id="quantite" type="text" size="2" /></td>
</tr>
</table>
<div align="center"></div>
<div align="center"></div>
<div align="center">
<input type="submit" value="Envoyer" />
-
<input type="reset" value="Annuler" />
</div>
</form>
<div id="msg"></div>
</body>
</html>



_________________________________________________________________________

<?

define('LOGIN', "");
define('PASSWORD', "");
define('SERVER', "");
define('BASE', "");


$connexion = mysql_connect (SERVER, LOGIN, PASSWORD) ;

if(!$connexion) {
$message = "Le serveur ".SERVER." ne répond pas correctement. Merci de bien vouloir réessayer dans quelques instants." ;

}

if(!mysql_select_db(BASE, $connexion)) {
$message = "Le base ".BASE." ne répond pas correctement. Merci de bien vouloir réessayer dans quelques instants." ;

}



//TA REQUETE SQL
$requete = "SELECT * FROM guigui WHERE ref='".$_GET['id']."'" ;
$result = mysql_query($requete, $connexion) ;
if(!$result) echo mysql_error();
//TEST DU NOMBRE DE RESULTAT DE TA REQUETE
if (mysql_num_rows($result)>0){
while($news = mysql_fetch_object($result)) {
$resultat = $news->prod; }
//SI IL N'Y A PAS DE RESULAT
}else{$resultat = 'aucune produit ne correspond';}

echo $resultat;

?>



________________________________________________________________________

function maFonctionAjax(Id, Nom)
{
var OAjax;
if (window.XMLHttpRequest) OAjax = new XMLHttpRequest();
else if (window.ActiveXObject) OAjax = new ActiveXObject('Microsoft.XMLHTTP');
//LANCE LE FICHIER PHP AVEC LA VALEUR DU CHAMP ref
OAjax.open('GET',"maPageDeRequPHP.php?id="+Id,true);
OAjax.onreadystatechange = function()
{
if (OAjax.readyState == 4 && OAjax.status==200)
{
if (document.getElementById)
{
//AFFICHE LA REPONSE DANS LE CHAMP nom
document.getElementById('Nom').value=OAjax.responseText;
}
}
}
OAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
OAjax.send('Id='+Id+'&Nom='+Nom);
}




__________________________________________________________________________________

<?php
$to = "";

$from = "From: " . $TO;

$subject = "commande";
$message="";

if(isset($_POST['subject'])){

$message.=" Societe: ".$_POST['Societe']."\n";
$message.=" Email: ".$_POST['Email']."\n";
$message.=" Objet: ".$_POST['Sujet']."\n";

$message.="Information complementaire: ".$_POST['Informations']."\n";

$Ref=$_POST['Ref'];
$Quantite=$_POST['Quantite'];
$Nom=$_POST['Nom'];
for($i=0;sizeof($Ref)>$i;$i++){
if($Ref[$i]!="" && $Quantite[$i]!="" && $Nom[$i]!="") $message .=" Ref :".$Ref[$i]." quantite ".$Quantite[$i]." Nom ".$Nom[$i]."\n";
}

}
mail($to, $subject, $message, $from);

Header("Location: l");

?>






voilà, mon problème actuel étant que je n'arrive pas à mettre plusieurs lignes pour la commande, lorsque je les dupplique, quand j'entre la référence dans la deuxième ligne, la désignation apparait dans la première.

il faudrait donc réussir à recréer cette première ligne, mais de manière autonome, et lorsque je reçois le mail de commande, je reçois ceci


Societe: entreprise
Email: email
Objet: commande :)
Information complementaire: hello
Ref :9 quantite 3 Nom p

enfait, je ne reçois qu'un caractère concernant la ligne de produits !

auriez-vous une idée ?

merci d'avance
guilich le 02 septembre 2008 à 09h16
no idea ? :(
guilich le 08 septembre 2008 à 09h19
Bonjour, nouvelle évolution, à présent j'ai un bouton qui ouvre bien des lignes, et je reçois le mail correctement.

en revanche, j'ai toujours mes deux lignes désignation qui sont remplies identiquement. je suppose qu'il faut ajouter une variable, mais je ne sai spas du tout laquelle. je refournis les codes

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta name="generator" content="HTML Tidy for Windows (vers 14 February 2006), see www.w3.org">
<title></title>
</head>
<body>
<form method="post" action="mail.php">
<input type="hidden" name="subject" value="Commande"/>
<table>
<tbody>
<tr>
<td>Votre soci&eacute;t&eacute;</td>
<td width="180">
<input type="text" name="Societe" size="30" />
</td>
</tr>
<tr>
<td>Votre Email</td>
<td>
<input type="text" name="Email" size="30" />
</td>
</tr>
<tr>
<td>Objet</td>
<td>
<input type="text" name="Sujet" size="30" />
</td>
</tr>
<tr>
<td>Informations compl&eacute;mentaires</td>
<td>
<p>
<textarea name="Informations" cols="30" rows="3"></textarea>
</p>
</td>
</tr>
</tbody>
</table>
<table id="articles">
<tbody>
<tr>
<th width="91"><div align="left">R&eacute;f&eacute;rence</div></th>
<th width="218"><div align="left">D&eacute;signation</div></th>
<th width="66"><div align="left">Quantit&eacute;</div></th>
</tr>
</tbody>
</table>
<table width="390" border="0">
<tr>
<td width="178"><div align="right">
<input type="button" onclick="addLigne('articles');" value="Ajouter un article" />
</div></td>
<td width="196"><input type="submit" value="Envoyer" /></td>
</tr>
</table>
</form>

<script type="text/javascript">
/*
retourne une liste des nodes correspondantes
fonctions applicables sur la sortie :
snapshotLength : retourne le nombre d'elements
snapshotItem(i): retourne l'element i
*/
function getByAt(parent, balise, attribut, valeur) {
if (valeur!="") {
return document.evaluate(
"//"+balise+"[@"+attribut+"=\""+valeur+"\"]",
parent,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null);
}else{
return document.evaluate(
"//"+balise+"[@"+attribut+"]",
parent,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null);
}
}

function makeXHR(){
var xmlHttp;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
return xmlHttp;
}

function maFonctionAjax(obj){
var xhr = makeXHR();
var input_nom = getByAt(obj.parentNode.parentNode, "input", "name", "Nom[]");

//LANCE LE FICHIER PHP AVEC LA VALEUR DU CHAMP ref
xhr.open('GET',"maPageDeRequPHP.php?id="+encodeURIComponent(obj.value), true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status==200){
if (document.getElementById){
//AFFICHE LA REPONSE DANS LE CHAMP nom
for (var i=0; i<input_nom.snapshotLength; i++){
input_nom.snapshotItem(i).value = xhr.responseText;
}
}
}
}
//xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.send(null);
return null;
}

function addLigne(table) {
var parent = document.getElementById(table);
if (parent.getElementsByTagName("tbody"))
parent = parent.getElementsByTagName("tbody")[0];

var new_tr = document.createElement("tr");
var td1 = document.createElement("td");
var td2 = document.createElement("td");
var td3 = document.createElement("td");
var td4 = document.createElement("td");

td1.innerHTML = '<input type="text" name="Ref[]" value="" size="6" onchange="return maFonctionAjax(this);" />';
td2.innerHTML = '<input type="text" name="Nom[]" value="" size="30" />';
td3.innerHTML = '<input type="text" name="Quantite[]" value="" size="6" onchange="checkQuantity(this);" />';
td4.innerHTML = '<input type="button" onclick="this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);" value="Enlever" />';

new_tr.appendChild(td1);
new_tr.appendChild(td2);
new_tr.appendChild(td3);
new_tr.appendChild(td4);

parent.appendChild(new_tr);
}
</script>

</body>
</html>

<?php
$to = "";

$from = "From: " . $_POST['Email'];

$subject = $_POST['subject'];
$message="";

if(isset($_POST['subject'])){

$message.=" Societe: ".$_POST['Societe']."\n";
$message.=" Email: ".$_POST['Email']."\n";
$message.=" Objet: ".$_POST['Sujet']."\n";
$message.="Information complementaire: ".$_POST['Informations']."\n";

foreach($_POST['Ref'] as $key => $value){
$message .=" Ref :".$_POST['Ref'][$key]." quantite ".$_POST['Quantite'][$key]." Nom ".$_POST['Nom'][$key]."\n";
}

mail($to, $subject, $message, $from);
header("Location: l");
}
?>


<?

define('LOGIN', "");
define('PASSWORD', "");
define('SERVER', "");
define('BASE', "");


$connexion = mysql_connect (SERVER, LOGIN, PASSWORD) ;

if(!$connexion) {
$message = "Le serveur ".SERVER." ne répond pas correctement. Merci de bien vouloir réessayer dans quelques instants." ;

}

if(!mysql_select_db(BASE, $connexion)) {
$message = "Le base ".BASE." ne répond pas correctement. Merci de bien vouloir réessayer dans quelques instants." ;

}



//TA REQUETE SQL
$requete = "SELECT * FROM guigui WHERE ref='".$_GET['id']."'" ;
$result = mysql_query($requete, $connexion) ;
if(!$result) echo mysql_error();
//TEST DU NOMBRE DE RESULTAT DE TA REQUETE
if (mysql_num_rows($result)>0){
while($news = mysql_fetch_object($result)) {
$resultat = $news->prod; }
//SI IL N'Y A PAS DE RESULAT
}else{$resultat = 'aucun produit ne correspond';}

echo $resultat;

?>



function maFonctionAjax(Id, Nom)
{
var OAjax;
if (window.XMLHttpRequest) OAjax = new XMLHttpRequest();
else if (window.ActiveXObject) OAjax = new ActiveXObject('Microsoft.XMLHTTP');
//LANCE LE FICHIER PHP AVEC LA VALEUR DU CHAMP ref
OAjax.open('GET',"maPageDeRequPHP.php?id="+Id,true);
OAjax.onreadystatechange = function()
{
if (OAjax.readyState == 4 && OAjax.status==200)
{
if (document.getElementById)
{
//AFFICHE LA REPONSE DANS LE CHAMP nom
document.getElementByIdId.value('Nom').value=OAjax.responseText;
}
}
}
OAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
OAjax.send('Id='+Id+'&Nom='+Nom);
}


merci beaucoup :)
guilich le 09 septembre 2008 à 10h06
Bonjour, je viens de reprendre mon code, je vous le donne ici

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Bon de commande</title>
<script src="js.js" language="javascript"> </script>
</head>

<body>
<script>var numLign = 0;</script>
<form method="post" action="mail.php">
<p><img src="http://www.forfirespirit.com/5.1/logo_BDI-retrace.jpg" /><br />
<img src="http://www.forfirespirit.com/5.1/Dmpib.jpg" /><br />
<input type="hidden" name="subject" value="Commande"/>
</p>
<table>
<tbody>
<tr>
<td>Votre soci&eacute;t&eacute;</td>
<td width="180">
<input type="text" name="Societe" size="30" />
</td>
</tr>
<tr>
<td>Votre Email</td>
<td>
<input type="text" name="Email" size="30" />
</td>
</tr>
<tr>
<td>Objet</td>
<td>
<input type="text" name="Sujet" size="30" />
</td>
</tr>
<tr>
<td>Informations compl&eacute;mentaires</td>
<td>
<p>
<textarea name="Informations" cols="30" rows="3"></textarea>
</p>
</td>
</tr>
</tbody>
</table>

<form method="post" onsubmit="" action="">
<table border="0" cellspacing="0" id='articles'><tr><td>Référence:</td><td>Désignation:</td><td>Quantité:</td></table>

<div id="msg">
<input type="button" onclick="addLigne('articles');" value="Ajouter un article" />
-
<input type="submit" value="Transmettre la commande" /><br />
</form>
<script type="text/javascript">
//LA FONCTION QUI FAIT PEUR UN PEU PUISQU'ELLE UTILISE DES PROTOCOLES ACTIVEX -> L'AJAX !!
function maFonctionAjax(Id, Nom)
{
var OAjax;
if (window.XMLHttpRequest) OAjax = new XMLHttpRequest();
else if (window.ActiveXObject) OAjax = new ActiveXObject('Microsoft.XMLHTTP');
//LANCE LE FICHIER PHP AVEC LA VALEUR DU CHAMP ref
OAjax.open('GET',"maPageDeRequPHP.php?id="+Id.value,true);
OAjax.onreadystatechange = function()
{
if (OAjax.readyState == 4 && OAjax.status==200)
{
if (document.getElementById)
{
//AFFICHE LA REPONSE DANS LE CHAMP nom
document.getElementById('Nom'+Nom).value=OAjax.responseText;
}
}
}
OAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
OAjax.send('Id='+Id+'&Nom='+Nom);
}

function addLigne(table) {
numLign++;
var parent = document.getElementById(table);


var new_tr = document.createElement("tr");
var td1 = document.createElement("td");
var td2 = document.createElement("td");
var td3 = document.createElement("td");
var td4 = document.createElement("td");

td1.innerHTML = '<input type="text" name="Ref" value="" size="8" id="ref01" onchange="return maFonctionAjax(this,'+numLign+');" />';
td2.innerHTML = '<input type="text" name="Nom'+numLign+'" id="Nom'+numLign+'" value="" size="30" />';
td3.innerHTML = '<input type="text" name="Quantite" value="" size="8" onchange="checkQuantity(this.value);" />';
td4.innerHTML = '<input type="button" onclick="this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);" value="Enlever" />';

new_tr.appendChild(td1);
new_tr.appendChild(td2);
new_tr.appendChild(td3);
new_tr.appendChild(td4);

parent.appendChild(new_tr);
}
</script>
</body>
</html>




et le fichier qui envoie le mail

<?php
$to = "";

$from = "From: " . $TO;

$subject = "commande";
$message="";

if(isset($_POST['subject'])){

$message.=" Societe: ".$_POST['Societe']."\n";
$message.=" Email: ".$_POST['Email']."\n";
$message.=" Objet: ".$_POST['Sujet']."\n";

$message.="Information complementaire: ".$_POST['Informations']."\n";

$ref01=$_POST['ref01'];
$Quantite=$_POST['Quantite'];
$Designation=$_POST['Designation'];
for($i=0;sizeof($Ref)>$i;$i++){
if($ref01[$i]!="" && $Quantite[$i]!="" && $Designation[$i]!="") $message .=" ref01 :".$ref01[$i]." Quantite ".$Quantite[$i]." Designation ".$Designation[$i]."\n";
}

}
mail($to, $subject, $message, $from);

Header("Location: l");

?>




mon problème est que dans le mail que je reçois, je n'ai plus les lignes de désignation référence et quantité qui aparaissent.


PRODUITS

TÉLÉCHARGER - LOGICIELS

JEUX VIDÉOS

LOISIRS

01NET PRO

AVIS ET COMMENTAIRES

A PROPOS DE 01NET

publicité
> 01netPro :
Rubrique Emplois
Actualités et dernières offres mises en ligne.

Service 01net
Newsletters 01net
abonnez vous gratuitement !
  
01Informatique
01 INFORMATIQUE
L'hebdo de référence des décideurs informatiques.
Micro Hebdo
MICRO HEBDO
L'hebdo qui vous simplifie la micro
et Internet.
L'Ordinateur Individuel
L'ORDINATEUR INDIVIDUEL
Le mensuel informatique qui vous informe et vous conseille.
Nous contacter  |  Charte de confiance  |  Voir notice légale

01net.  -  01men  -  RMC  -  BFM Radio  -  BFM TV  -  TousLesPodcasts  -  01informatique.fr  -  Association RMC-BFM
Tous droits réservés © 1999 - 2009 Internext - 01net.