J'essaye de mettre à jour mon application web avec ajax ou xajax.
J'ai fais une interface web pour envoyer des emails composés par php.
Du style on selectionne le genre d'email et avec les variables remplies dans les champs du formulaire, le mail est généré, affiché, stocké dans une base mysql et envoyé aux destinataire.
Les champs les plus importants pour mon problème sont ip, customer, email, cc.
J'aimerais pouvoir
1) Dès que le champ IP commence à être remplie (plutôt après un minimum de 5 caractères) une fonction javascript fasse appel à ajax pour rechercher une liste d'ip correspondantes.
2) Créer une liste déroulante avec les ip trouvées avec en face le nom du client auquel elle correspond (sans répétitions de la même).
3) Si l'utilisateur fait une sélection dans la liste déroulante, alors les champs customer, email et cc du formulaire seront remplies avec les données récupérées dans la base de donnée.
C'est un projet ambitieux, je serai très heureux si vous pouviez m'accorder vos aides/idées tout au long du chemin.
J'ai un niveau correct en PHP, le javascript simple ça va aussi.
J'ai réussi à créer le comportement basique du script et à peupler les champs.
Pour l'instant je sèche sur la liste déroulante.. quelqu'un a une idée?
index.php simplifié
Code : Tout sélectionner
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>IP to Customer and email using XmlHttpRequest</title>
<script language="javascript" type="text/javascript">
var url = "verifip.php?param="; // The server-side script
function handleHttpResponse() {
if (http.readyState == 4) {
if (http.responseText.indexOf('invalid') == -1) {
// Split the comma delimited response into an array
results = http.responseText.split(",");
document.getElementById('customer').value = results[0];
document.getElementById('email').value = results[1];
document.getElementById('cc').value = results[2];
isWorking = false;
}
}
}
var isWorking = false;
function verifip() {
if (!isWorking && http) {
var ipValue = document.getElementById('ip').value;
http.open("GET", url + escape(ipValue), true);
http.onreadystatechange = handleHttpResponse;
isWorking = true;
http.send(null);
}
}
function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}
var http = getHTTPObject(); // We create the HTTP Object
</script>
</head>
<body>
<form action="post">
<p>
IP:
<input type="text" size="15" name="ip" id="ip" onKeyUp="verifip();" />
</p>
Customer:
<input type="text" size="45" name="customer" id="customer" />
Email:
<input type="text" size="35" name="email" id="email" /><br>
Cc:
<input type="text" size="35" name="cc" id="cc" />
<input name="reset" type="reset" id="reset" value="Erase it!">
</form>
</body>
</html>
<?php
/**
* Connects to the database.
* Return false if connection failed.
* Be sure to change the $database_name. $database_username , and
* $database_password values to reflect your database settings.
*/
function db_connect() {
$database_name =
'database'
; // Set this to your Database Name
$database_username =
'login'
; // Set this to your MySQL username
$database_password =
'password'
; // Set this to your MySQL password
$result = mysql_pconnect('localhost',$database_username, $database_password);
if (!$result) return false;
if (!mysql_select_db($database_name)) return false;
return $result;
}
$conn = db_connect(); // Connect to database
if ($conn) {
$ip = $_GET['param']; // The parameter passed to us
$query = "select * from emails where ip LIKE '$ip' ORDER BY id DESC";
$result = mysql_query($query,$conn);
$count = mysql_num_rows($result);
if ($count > 0) {
$customer = mysql_result($result,0,'customer');
$email = mysql_result($result,0,'email');
$cc = mysql_result($result,0,'cc');
}
}
if (isset($customer) && isset($email) && isset($cc)) {
$return_value = $customer . "," . $email . "," . $cc;
}
else {
$return_value = "invalid".",".$_GET['param']; // Include IPfor debugging purposes
}
echo $return_value; // This will become the response value for the XMLHttpRequest object
?>