18041 sujets
Questions générales et questions de débutants
@Zelalsan
Aucun souci, je me doutais c'était une erreur d'inattention, on en fait tous
@etienne69
Sinon si tu ne veux pas trop te prendre la tête, tu peux utiliser une librairie utilitaire pour réaliser ton appel Ajax.
jQuery par exemple, te permet de le faire aussi simplement que ça :
Aucun souci, je me doutais c'était une erreur d'inattention, on en fait tous
@etienne69
Sinon si tu ne veux pas trop te prendre la tête, tu peux utiliser une librairie utilitaire pour réaliser ton appel Ajax.
jQuery par exemple, te permet de le faire aussi simplement que ça :
$(function(){
// Cette fonction s'execute une fois tous les éléments de ta page chargés
$("#tonInput").change(function(){
// cette fonction s'execute au changement de valeur de ton input
var saisie = $(this).val(); // récupération de la valeur saisie par l'utilisateur
$.post("monFichierDeTraitement.php", { "valeurSaisie" : saisie })
.done(function( data ){
// cette fonction est executée au succès de l'appel ajax
// => elle prend en param le contenu de la réponse
})
.fail(function(){
// cette fonction est executée en cas d'echec de l'appel
});
});
});
J'arrive toujours pas à croire comment j'ai pu zappé un truc aussi basic !
Je pense qu'un truc du genre marcherait aussi
Je pense qu'un truc du genre marcherait aussi
function check(response, status){
if (status != 200) {
// ... Mauvais
}else {
// ... Bon
}
}
function process(){
xhr.onreadystatechange = function(){
if (xhr.readyState == 4) check(xhr.responseText, xhr.status);
}
xhr.open("POST", "traitement.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send("Variable="+input.value);
}
var xhr = new XMLHttpRequest (),
input = document.getElementById("nom");
input.addEventListener("change", process, false);
Merci à vous deux pour votre aide !
Si j'intègre la solution de Freez (que j'arrive mieux à lire car moins
de JavaScript ?) et aussi parce que j'ai déjà chargé jQuery pour faire
un filtre sur une table (jQuery Filter Table Plugin) j'ai du mieux !
En effet si la page "verifaliment.php" n'existe pas, j'arrive à déclencher
un alert('Vérification de saisie impossible actuellement !'); par exemple !
Par contre je n'arrive toujours pas à afficher de message d'erreur si
l'aliment est déjà présent dans la base !
Modifié par etienne69 (06 Dec 2014 - 15:27)
Si j'intègre la solution de Freez (que j'arrive mieux à lire car moins
de JavaScript ?) et aussi parce que j'ai déjà chargé jQuery pour faire
un filtre sur une table (jQuery Filter Table Plugin) j'ai du mieux !
En effet si la page "verifaliment.php" n'existe pas, j'arrive à déclencher
un alert('Vérification de saisie impossible actuellement !'); par exemple !
Par contre je n'arrive toujours pas à afficher de message d'erreur si
l'aliment est déjà présent dans la base !
<script src="/js/jquery.js"></script>
<label for="nom">Désignation : </label>
<input type="text" name="nom" id="nom" size="60" maxlength="60" value="" required /><br /><div id="namebox"></div> <br /><br />
<script type="text/javascript">
$(function(){
// Cette fonction s'execute une fois tous les éléments de ta page chargés
$("#nom").change(function(){
// cette fonction s'execute au changement de valeur de ton input
var saisie = $(this).val(); // récupération de la valeur saisie par l'utilisateur
$.post("verifaliment.php", { "valeurSaisie" : saisie })
.done(function(data){
// cette fonction est executée au succès de l'appel ajax
// => elle prend en param le contenu de la réponse
if (data == 1) {
document.getElementById("namebox").innerHTML = "Attention : cet aliment a déjà été créé" ;
}
else if (data == 2) {
document.getElementById("namebox").innerHTML = "" ;
}
})
.fail(function(){
// cette fonction est executée en cas d'echec de l'appel
alert('Vérification de saisie impossible actuellement !');
});
});
});
</script>
Modifié par etienne69 (06 Dec 2014 - 15:27)
Merci beaucoup pour ces infos etui galaxy tab 4 etui samsung galaxy tab 4 10.1
Modifié par sdf46946df (12 Dec 2014 - 09:43)
Modifié par sdf46946df (12 Dec 2014 - 09:43)
Après pas mal de galères, j'ai refais ma page de traitement PHP et tout fonctionne maintenant :
Voici pour ceux que ça intéresse comment je m'en suis sorti :
Le champ concerné dans le formulaire :
Le script de traitement, sur la même page que le formulaire of course :
Et la page 'verifaliment.php' qui sert à jeter un œil dans la base de données :
Modifié par etienne69 (15 Mar 2015 - 21:15)
Voici pour ceux que ça intéresse comment je m'en suis sorti :
Le champ concerné dans le formulaire :
<input type="text" name="nom" id="nom" size="60" maxlength="60" value="" required /><br /><div id="namebox"></div> <br />
Le script de traitement, sur la même page que le formulaire of course :
<script type="text/javascript">
$(function(){
// Cette fonction s'execute une fois tous les éléments de ta page chargés
$("#nom").change(function(){
// cette fonction s'execute au changement de valeur de ton input
var saisie = $(this).val(); // récupération de la valeur saisie par l'utilisateur
$.post("verifaliment.php", { "valeurSaisie" : saisie })
.done(function(data){
// cette fonction est executée au succès de l'appel ajax
// => elle prend en param le contenu de la réponse
if (data == 1) {
document.getElementById("namebox").innerHTML = 'Attention : cet aliment a déjà été créé' ;
}
else if (data == 2) {
document.getElementById("namebox").innerHTML = ' ';
}
})
.fail(function(){
// cette fonction est executée en cas d'echec de l'appel
alert('Vérification de saisie impossible actuellement !');
});
});
});
</script>
Et la page 'verifaliment.php' qui sert à jeter un œil dans la base de données :
<?php
if (isset($_POST['valeurSaisie'])){
// Connexion à la base de données :
require ('connexion.php');
// Formatage de la saisie utilisateur :
$nom = strtoupper($_POST['valeurSaisie']);
// Requête vérification dans bdd si aliment déjà présent :
$requete = $bdd->prepare('SELECT aliment_id FROM menu_aliments WHERE aliment_nom = :nom LIMIT 1');
$requete->execute(array('nom' => $nom));
$count = $requete->rowCount();
if($count > 0){ // L'aliment existe déjà dans la base
$data = 1;
}
else { // L'aliment n'existe pas
$data = 2;
}
// Fermeture connexion
$requete->closeCursor();
echo $data;
}
?>
Modifié par etienne69 (15 Mar 2015 - 21:15)