Problème AJAX

Résolu/Fermé
TheBleedz - 4 janv. 2012 à 22:34
 TheBleedz - 5 janv. 2012 à 22:21
Bonsoir,
Voila je me lance dans le sombre univers de l'AJAX. J'ai commencé mon script hier mais j'ai déjà un soucis que j'arrive pas à comprendre. Ca fait 1h que je cherche le problème, j'espère trouver de l'aide ici.
J'ai essayer de faire propre pour que vous comprenez. Merci d'avance et bonne nuit à tous.
PS : Si je répond pas ce soir ces que je dors ^^ Je reviendrais demain.

Voici le code HTML de ma page INDEX.php

  <div id="menu_1">
      <fieldset>
        <legend>Ajout d'une nouvelle catégorie</legend>
       <p class="mef_form"> <label>Nom de votre nouvelle catégorie :</label><input type="text" name="nouvelle_categorie" id="nouvelle_categorie" /></p><br />
        <label>&nbsp;</label><input type="button" value="Ajouter" onclick="nom=document.getElementById('nouvelle_categorie').value ; ajouter_cat(nom)"/><br />
      </fieldset>
      <div id="reponse_1"></div>
  </div>


Et la fonction AJAX qui me permet d'envoyé les informations vers la page de traitement PHP :

function ajouter_cat(nom) {
    var xmlhttp = getHTTPObject();
    var element1 = document.getElementById('reponse_1');
    element1.innerHTML = "Patienter pendant la création de votre catégorie";
    xmlhttp.open("GET", 'ajouter_categorie.php?nouvelle_categorie='+nom);
    vider_cache(xmlhttp);
    xmlhttp.onreadystatechange = function() {
           if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
           element1.innerHTML = xmlhttp.responseText;
           }
       }
     xmlhttp.send(null);
}


Et enfin le code PHP du traitement de la page INDEX :

<?php
// fonction permettant de supprimer les caractères spéciaux ainsi que les espace accents...
function epurer_nom($nom_cat) {
  // remplacement des accents par leur lettre équivalente
  $nom_cat=strtr($nom_cat,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËéèêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"
  ,"AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
  // suppression des espaces et passage en minuscule
  $nom_cat=strtolower(trim($nom_cat));
  // remplacement de tous les caractères non alpha numérique par "_"
  $nom_cat=ereg_replace("[^0-9a-z_]","",$nom_cat);
  // on retourne la chaine épurer 
  return ($nom_cat);

}

if (isset($_GET['nouvelle_categorie'])){
   // on ecchape tous les caractère spéciaux
   //$categorie = htmlentities($_GET['nouvelle_categorie'],ENT_QUOTES);
   $categorie = $_GET['nouvelle_categorie'];
   // on va vérifier que la nouvelle catégorie n'existe pas déja
   if (!is_dir("photo/$categorie/") && !is_dir("photo/$categorie/mini/")){

      // puis on créer les 2 dossiers, qui contiendront les originaux et les miniatures
      // avec tous les droits ( écriture, lecture , suppression )
      @mkdir("photo/$categorie/",0777);
      @mkdir("photo/$categorie/mini/",0777);
      // on fait une vérification sur la création pour le retour à l'utilisateur
      if (is_dir("photo/$categorie/") && is_dir("photo/$categorie/mini/")){
         echo "<p>Votre nouvelle catégorie : $categorie, a bien été ajouté</p>";
      }
      else{
          echo "<p>Une erreur est survenu durant la création de votre catégorie </br> Veuillez contacter votre administrateur</p>";
      }
   }
   else{
       echo "<p>Le nom de votre catégorie : $categorie, est déja utilisé !</p>";
   }
}
?>


Et voici l'erreur qu'il m'affiche :

Votre nouvelle catégorie : $categorie, a bien été ajouté

"; } else{ echo "

Une erreur est survenu durant la création de votre catégorie
Veuillez contacter votre administrateur
"; } } else{ echo "

Le nom de votre catégorie : $categorie, est déja utilisé !
"; } } ?> 


4 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
5 janv. 2012 à 09:07
une petite modif qui n'a rien a voir avec ton pb, mais c'est dommage de mettre des instructions JS dans le onclick alors que tu as une fonction JS dans laquelle tu peux la mettre:

<script type="text/javascript">
function ajouter_cat(id) {
	var nom=document.getElementById(id).value ;
    var xmlhttp = getHTTPObject();
    var element1 = document.getElementById('reponse_1');
    element1.innerHTML = "Patienter pendant la création de votre catégorie";
    xmlhttp.open("GET", 'ajouter_categorie.php?nouvelle_categorie='+nom);
    vider_cache(xmlhttp);
    xmlhttp.onreadystatechange = function() {
           if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
           element1.innerHTML = xmlhttp.responseText;
           }
       }
     xmlhttp.send(null);
}
</script>


<div id="menu_1">
      <fieldset>
        <legend>Ajout d'une nouvelle catégorie</legend>
       <p class="mef_form"> <label>Nom de votre nouvelle catégorie :</label><input type="text" name="nouvelle_categorie" id="nouvelle_categorie" /></p><br />
        <label>&nbsp;</label><input type="button" value="Ajouter" onclick="ajouter_cat('nouvelle_categorie');"/><br />
      </fieldset>
      <div id="reponse_1"></div>
  </div>


pour ton pb on a l'impression que le </ du </p> est interprété comme un tag de fin de php il me semble avoir déja vu un pb comme ça sur le forum.

Voir encodage de ton fichier php aNSI ou UTF8 ?
0
Bonjour,
Tout d'abord merci de votre réponse et excusez-moi de ne pas avoir répondu plus vite.
J'ai corrigé mon code avec le votre mais ne fonctionne toujours pas. Mon code PHP et en UTF8. J'avais oublié de rajouter cette ligne dans le sujet :
header ('Content-type: text/html; charset=utf-8');

Je comprend vraiment pas, tout devrais marché normalement =/ Mais parement on peut voir que ces un problème soit du coter HTML (JS) qui envoie la variable ou soit du AJAX qui envoie la variable sur la bonne page. Car le PHP ne c'est pas donnée de valeur à la variable $categorie. Enfin, je vais m'y mettre a fond là dessus ce soir, pour essayer de régler le problème aujourd'hui.
Merci a vous et bonne soirée.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
5 janv. 2012 à 21:06
quand je parlait d'encode c'est ce que tu vois dans ton editeur par le menu encodage lorsque que tu edite le fichier php
0
Ah sorry, en ANSI =)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
5 janv. 2012 à 21:52
et si dans tes message du fichier php tu remplaces:
echo "<p>Votre nouvelle catégorie : $categorie, a bien été ajouté</p>";

par
echo "Votre nouvelle catégorie : ".$categorie.", a bien été ajouté";
0
Ah merci quel c** moi xD Ca va j'ai corrigé tout mon script et tout marche =) merci beaucoup de m'avoir lancé la perche =)
Bonne soirée
0