lancer une fonction php à partir d'un bouton ("button")

labhalla1400

Nouveau membre
je veux lancer la fonction afficher() en cliquant sur le bouton envoyer de type button et non submit , j ai utiliser le code ci-dessous mais malheureusement ça marche pas!!! :fou: y a t il une solution!??
<?
function afficher(){
echo "bonjours";
}
?>
<input type"button" name="envoyer" value="envoyer" onclick="<? afficher(); ?>">
 

guillaumech

Expert

+1

Utilise JavaScript, le php ne s'utilise que côté serveur.
 

labhalla1400

Nouveau membre

non je peux pas utiliser javascript car ma fonction afficher() interroge le serveur pour recuperer une reponse et ça n'est possible q'avec php et non javascript.
j'est essayer d'utiliser ajax mais j ai rencontrer un pb de syncronisation j ai met:
xhr.open("Get","ajax.php?mail="+email,false); au lieu de xhr.open("Get","ajax.php?mail="+email,true);
mais rien à changer.

 

guillaumech

Expert
Donne tout le code englobant le problème. Certain pourront t'aider, pas moi, car je n'ai pas assez de connaissance en Ajax. Mais ton problème se résoudra en effet par l'Ajax.
 

labhalla1400

Nouveau membre
mon code se compose en trois fichier ajax.php et index.html le but est de saisir un email et d'afficher le mot de passe, à partir de ma base de données mysql, en cliquant sur le bouton afficher.
le fichier index.html
<html>
<head><title>Exemple</title></head>

<script language="JavaScript">
var motdepasse;
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr
}
function ret_motpasse(mail){
var xhr = getXhr()

xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
var rep =xhr.responseText; return rep;
}

}
xhr.open("Get","ajax.php?mail="+mail,true);
xhr.send(null);

}
function afficher(){
var email=document.form_aff.email.value;

motdepasse=ret_motpasse(email);
alert("votre mot de passe est :"+motdepasse);
}
</script>

<body>
<form name="form_aff" action="" method="post">
<input type="text" name="email" size="28">
<input type="button" value="afficher mot de passe" onClick="afficher()">
</form>
</body>
</html>

fichier ajax.php:
<?
include "connexion.php";
if(isset($_GET['mail'])){
$email=$_GET['mail'];
$req=mysql_query("select * from membres where email='$email'");
$nbr=mysql_num_rows($req);
if($nbr){
$ligne=mysql_fetch_array($req);
echo $ligne['motpasse'];
}
}
?>

mon probleme est que le variable motdepasse à la premier execution ne contient rien, pour la deuxieme clique sur le bouton afficher() il s'affiche le mot de passe de l'email de la premiere execution et ainsi de suite car l'instruction alert("votre mot de passe est :"+motdepasse); s'execute avant que la fonction ret_motpasse(email) termine son execution est ça mon problème !!y a t il une solution???
 

KangOl

Grand Maître
1/ utilise la balise
Code:
2/ le premier a de ajax veux dire "asynchrone" :o
3/ vive le sql injection
4/ mauvais html
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 131
Messages
6 717 957
Membres
1 586 383
Dernier membre
potofeu
Partager cette page
Haut