25-09-2009, 07:05 PM
J'avais remarqué cet oubli et je l'ai corrigé. Cependant le noeud semble se dénouer. En effet après avoir corriger le code PHP je n'ai plus qu'une petite erreur d'index.
Voici le tout corriger:
Page oXHR.js:
Page du Formulaire:
Page de Traitement:
Voici le tout corriger:
Page oXHR.js:
Code :
function getXMLHttpRequest() {
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
} else {
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}
return xhr;
}
Page du Formulaire:
Code :
<html>
<head>
<script type="text/javascript" src="includes/oXHR.js"></script>
<script type="text/javascript">
<!--
function submitForm(email){
var xhr= new getXMLHttpRequest();
xhr.open("POST", "t_newsletter.php", true);
xhr.onreadystatechange= function() {
if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status== 0)) {
if(document.getElementById){
if(xhr.responseText == 'true') { //envoi OK
document.getElementById("msg").innerHTML= "Inscription à la Newsletter réussie !";
}else{
document.getElementById("msg").innerHTML= xhr.responseText;
}
}
}
}
xhr.setRequestHeader('Content-type','application/x-www-form-unlencoded');
xhr.send('Email='+email);
}
//-->
</script>
</head>
<body>
<form method="POST" action="" onsubmit="submitForm(this.email.value);return false">
Email:<input type="text" name="email" id="email">
<input type="submit" value="S'inscrire"/>
</form>
<div id="msg"></div>
</body>
</html>
Page de Traitement:
Code PHP :
<?php
session_start();
mysql_connect("localhost","root","");
mysql_select_db("newsletter");
$mysql_query= mysql_query("SELECT email FROM newsletter");
$mysql_data= mysql_fetch_array($mysql_query);
$erreurs= array(); //tableau des erreurs
$email= $_POST['email'];
if(!empty ($email)){
if(!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email'])){
$erreurs[]= 'Cette adresse E-mail est invalide';
}else{
if($_POST['email'] == $mysql_data['email']){
$erreurs[]= 'Cette adresse E-mail existe déjà';
}else{
mysq_query("INSERT INTO newsletter VALUES('','".$_POST['email']."'")or die("L'envoi des données a échoué");
}
}
}else{
$erreurs[]= 'Veuillez entrer une adresse E-mail';
}
if(count($erreurs) == 0){
echo "true";
}else{
for($i=0; $i<count($erreurs); $i++){
echo $erreurs[$i].'<br/>';
}
}
?>
Le dernier problème qui persiste vient du code php. Voici ce qui s'affiche lors de la validation du formulaire:
Citation :Notice: Undefined index: email in C:\Program Files\EasyPHP\www\FoxStudio\t_newsletter.php on line 10
Je précise que l'erreur s'affiche bien sous ce message .
Merci à toi Maz pour ton aide et merci à ceux qui rejoindraient la conversation .
Reaven