Afficher un message d'erreur avec l'Ajax [Résolu/Fermé]

Signaler
Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016
-
Messages postés
28946
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2020
-
Salut à tous,

J'ai une petite question en Ajax, j'ai fais un chat qui envoie les messages en Ajax à mon document send.php

Mais le soucis c'est que je ne peux plus afficher les messages d'erreur avec echo "..."; puisque la page ne se rafraîchie plus, j'aimerai donc savoir comment faire pour afficher les messages d'erreurs, on m'a dit de faire une requête Ajax mais je gère pas du tout ça, merci à vous, je précise aussi que je ne peux pas vérifier en jQuery si tout est bon puisque j'ai pas mal de fonctionnalités dessus

3 réponses

Messages postés
28946
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2020
2 613
Mieux..

Par contre :
Le premier code js ... (utilisé avec le second code (php)) sert à ajouter des messages en BDD... ok.

Mais ton troisième code ... celui que tu veux pouvoir visiblement utiliser en ajax .... comment est-il déclenché ?
Lors de l'appuie sur un bouton ?
Dans ce cas, li va falloir que tu mettes un ONCLICK sur ce bouton (au lieu de faire un submit) pour appeller une fonction javascript qui ira, en ajax, faire appel à un fichier php contenant le script suivant :
  <?php
 //Affichage des erreurs php
 error_reporting(E_ALL);
 
       // Ne pas oublier d'inclure ton fichier de connexion à la bdd
       require_once 'cnxBdd.php';

 //récupération propre des variables
 $users = isset($ban['1']) ?  trim(addslashes($ban['1']) : NULL;
 
 $result = array(); //Initialisation de la variable de sortie
 
 if($users){
  
  $sql = 'SELECT * FROM users WHERE username = :username';
  $datas = array(':username' => stripslashes($users));
  try{
    $infoUsersReq = $db->prepare($sql);
    $infoUsersReq->execute($datas);
    $infoUsers = $infoUsersReq->fetch();
  }catch(Exception $e){
    //en cas d'erreur dans la requete
    $result['error'] = $e->getMessage();
  }
  
  if($infoUsers){
    if($username != $infoUsers['username']) {
      if($infoUsers['grade'] != 'administrateur') {
        if($infoUsers['chatban'] == '0'){
          $banUsersChatReq = $db->prepare('...');
          $banUsersChatReq->execute(array(...));
                    // ICI ON CHANGE LE STATUT DU MEMBRE POUR LE BANNIR
        } else {
          $result['message'] = "Le membre est déjà banni !";
        }
      } else{
        $result['message'] =  "Vous ne pouvez pas bannir un administrateur !";
      }
    } else{
      $result['message'] =  "Vous ne pouvez pas vous bannir !";
    }
  } else {
    $result['message'] =  "Le membre n'existe pas !";
  }
 }
 
 //On converti en JSON pour pouvoir l'utiliser dans le javascript
 echo json_encode($result);



Côté javascript ajax

function ban(user){
  // les données à transmettre au script ajax php
  var data = {user:user}; 
  //appel ajax
  $.ajax({ 
        type: "POST",
        url: urlAjx,
        data: data,
        async: async,
        dataType: "json",
        success: function(reponse){
           // reponse est un objet json contenant les infos retournées par la page php
           console.log(reponse); //affiche le résultat dans la console du navigateur.
           var error = (typeof(reponse.error) !='undefined' && reponse.error!=null) ? reponse.error : null;
           if(error){
             alert("Erreur lors de l'exécution de la requete ! " + error);
           }
           var message =  (typeof(reponse.message) !='undefined' && reponse.message!=null) ? reponse.message : null;
           if(message){
             alert(message); 
           }
         },
        error:function(jqXHR, textStatus){
             alert('error');
             console.log(jqXHR); //affichage dans la console du navigateur              
        }
   }); 
}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60180 internautes nous ont dit merci ce mois-ci

Messages postés
28946
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2020
2 613 >
Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016

Normalement ..... nouvelle question = Ouverture d'une nouvelle Discussion !

Mais bon...
Pour connaitre l'IP d'un visiteur : http://php.net/manual/fr/reserved.variables.server.php
 $ip = $_SERVER['REMOTE_ADDR'];
Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016

Je sais ça, mais pour afficher les personnes qui ont la même IP's d'inscription, je stock déjà en base de donnée, mais la requête je vois pas trop quoi faire là je t'avoue .. ^^

désolé pour la création d'un nouveau post, je le ferai la prochaine fois
Messages postés
28946
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2020
2 613
Tu fais un WHERE tonchampIP = $_SERVER['REMOTE_ADDR'] tout simplement. ....
mais comme je te l'ai déjà dit. ... c'est une nouvlle question... ouvre une nouvelle DISCUSSION !!
Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016

Mais j'ai plusieurs IP justement, je veux pas vérifier une seule IP, je le fait après que tu ais répondu à ça promis x)
Messages postés
28946
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2020
2 613 >
Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016

Non la c'est vraiment totalement une autre question. ..
je clos celle la
Messages postés
28946
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2020
2 613
Bonjour,

Sans voir ton code ... IMPOSSIBLE de t'aider.
Par contre... tu parles de faire un echo.... mais.... en ajax.. c'est avec le JAVASCRIPT que tu affiches les informations....

Pour ce qui est d'avoir un exemple d'ajax, en voici un (qui utilise JQUERY) : https://forums.commentcamarche.net/forum/affich-33258760-remplir-un-formulaire-dynamiquement-en-fonction-d-une-combobox#2
Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016

La vérification je l'effectue au clique du bouton poussoir, on envoie une requête Ajax qui va vers un fichier PHP ailleurs (comme tu l'as dis), dans ton exemple et j'avais pas pensé à ton exemple :o Mais j'ai d'autres trucs en PHP que je vérifie, comme si le membre est banni ou pas, si il a bien attendu 5 secondes avant de mettre un nouveau message .. ^^

Donc ton exemple marchera pas puisque je recharge pas la page
Messages postés
28946
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2020
2 613 >
Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016

On en revient encore à la même chose....
COMMENT retournes tu les données issues de ta requête AJAX sur le fichier php ?

Car ensuite, il suffit de faire un IF sur ces données retournées dans ta page courante .....

Si tu veux que je t'en dise plus... il faut que tu me montres :
Le code du script JS (celui qui effectue l'appel ajax)
Le code du fichier PHP appelé par ton script ajax

Ensuite... ça ne sera qu'une question de mise en forme du code et l’introduction d'un IF.... mais je ne peux pas te répondre en aveugle...... (tant que tu ne l'auras pas compris.... on n'avancera pas..... surtout que je suis persuadé que tu aurais déjà pu avoir ta réponse depuis longtemps si ça avait été le cas......)

Je vais quand même tenter quelque chose :
Dans ta page php appelée via ton script ajax .... tu retournes les différentes données dont tu as besoin sous forme d'un array converti en JSON.

Côté php :
<?php
$resultat = array();
$resultat['grade'] = .... // par exemple le résultat d'une requete
$resultat['nom]' = ...    // par exemple le résultat d'une requete
//etc...



//on convertit en json pour pouvoir l'utiliser dans le retour de l'ajax côté javascript
echo json_encode($resultat);



Côté javascript :
var data = {id:id}; // les données à transmettre au script ajax (que je ne connais pas vu que tu ne nous montres rien....)

//appel ajax
$.ajax({ 
      type: "POST",
      url: urlAjx,
      data: data,
      async: async,
      dataType: "json",
      success: function(reponse){
          // reponse est un objet json contenant les infos retournées par la page php
          if(reponse.grade =='administrateur'){
                alert( "On ne banni pas un administrateur");
           } 
       },
      error:function(jqXHR, textStatus){
              alert('error');        
        }
     }); 
Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016

Ok je vois, donc aulieu de mettre
$alert = "blablabla"; je met 

$alert = array();
$resultat['notBanAdmin'] = "notBanAdmin";


Mais je comprend pas la partie Ajax, je met où ce code ? Puis

var data = {id:id}; // les données à transmettre au script ajax (que je ne connais pas vu que tu ne nous montres rien....)


Je dois te montrer quoi pour ça ? ^^
Messages postés
28946
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2020
2 613 >
Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016

Je répète (pour la dernière fois après j'abandonne....)
Si tu veux que je t'en dise plus... il faut que tu me montres :
Le code du script JS (celui qui effectue l'appel ajax)
Le code du fichier PHP appelé par ton script ajax
Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016

Le Js : https://gyazo.com/1ecc9d7b1a47b2547656c548fc00866d

Le PHP est beaucoup trop long, mais j'ai ça sur ma page chat.php https://gyazo.com/b2ee371052d56149180fd133a4558da2

Je vois pas ce qu'il te faut d'autre mis à part les else { echo ..} que j'ai déjà
Messages postés
28946
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 juillet 2020
2 613
Peux tu, comme je te l'ai déjà demandé, COLLER le code directement sur le forum au lieu d'en mettre des images ?
(les deux-mêmes bouts de code ça ira).
Par contre... quelle genre d'erreur veux tu pouvoir afficher ? Je ne trouve pas de correspondance entre l'exemple donné ( le grade = administrateur...) et les deux bouts de code que tu viens de nous donner...
Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016

c