Menu

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

Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016
- - Dernière réponse : jordane45
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
- 1 juin 2016 à 21:58
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
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
1666
1
Merci
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              
        }
   }); 
}

Dire « Merci » 1

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

CCM 45535 internautes nous ont dit merci ce mois-ci

jordane45
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
1666 > BlaBiks
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'];
BlaBiks
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
jordane45
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
1666 -
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 !!
BlaBiks
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)
jordane45
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
1666 > BlaBiks
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
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
1666
0
Merci
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) : http://www.commentcamarche.net/forum/affich-33258760-remplir-un-formulaire-dynamiquement-en-fonction-d-une-combobox#2
BlaBiks
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
jordane45
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
1666 > BlaBiks
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');        
        }
     }); 
BlaBiks
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 ? ^^
jordane45
Messages postés
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
1666 > BlaBiks
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
BlaBiks
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
25817
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 juin 2019
1666
0
Merci
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...
BlaBiks
Messages postés
22
Date d'inscription
mercredi 25 mai 2016
Statut
Membre
Dernière intervention
1 juin 2016
-
c