Pages :
(reprise du message précédent)

Bon fin de journée j'ai le cerveau en compote. On verra ça...
@Zelalsan
Aucun souci, je me doutais c'était une erreur d'inattention, on en fait tous Smiley cligne

@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 ! Smiley biggrin
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 ! Smiley decu

<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)
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 :
<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;
}
?>


Smiley biggrin
Modifié par etienne69 (15 Mar 2015 - 21:15)
Un grand merci à Zelalsan, Freez et Cyprien G(sur un autre forum) pour leurs
aides précieuses et surtout...leur patience !
Modifié par etienne69 (15 Mar 2015 - 21:04)
Pages :