AJAX - probleme envoi d'un POST

payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 17 févr. 2010 à 11:52
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 - 23 févr. 2010 à 09:32
Bonjour,

Je vais essayer d'etre précis dans ma demande sachant que je suis débutant en AJAX.
Je construis actuellement une page d'album photo que j'essaye déséspérément de mettre en AJAX. j'ai un Select qui sélectionne un album photo (sur la page "gestion_photos.php"), et les photos s'affichent en ajax, en dessous de chaque photo j'ai un lien "supprimer"

voici mon lien :
echo "Supprimer


Ma fonction Supp :
function supp(Var1)
{
  var xhr = GetXHR();
  xhr.onreadystatechange = function()
  {
    if(xhr.readyState 4 && xhr.status 200)
    {
      leselect = xhr.responseText;
      document.getElementById('suppDIV').innerHTML = leselect;
    }
  }
  url = "/html/requete-ajax.php";
  xhr.open("POST",url,false);
  
  alert(Var1);
  xhr.send('idphoto=' + 'Var1');
}


Et c'est dans "requete-ajax.php" que j'ai tout mon traitement au niveau de la BDD, mais tout en haut de mon fichier je teste
if( isset( $_POST['idphoto'] ) )
et il me renvoie toujours FALSE ! :'( snif

Alors que mon alert dans mon script PHP est toujours niquel.
Sans l'envoi de ce post je suis completement bloqué.

Comment faire svp ?

Merci

14 réponses

Vonscott Messages postés 61 Date d'inscription vendredi 6 janvier 2006 Statut Membre Dernière intervention 19 septembre 2011
17 févr. 2010 à 13:44
As tu essayé dans ton php

echo '[# Supprimer]';

à la place de :

echo "Supprimer
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
17 févr. 2010 à 14:10
Bonjour et merci de ta réponse.
Oui j'ai essayé, j'ai meme essayé

Supprimer


Mais le $_POST['idphoto'] ne marche pas

en début de page "requete-ajax.php" j'ai mis
if (isset( $_POST['idphoto'] ))
{
echo "OK";
}
else
{
echo "NAN";
}

Et il me marque toujours "NAN"

au niveau de mon code javascript, on m'a conseillé de faire ma fonction 'supp' comme suivant :
function supp(Var1)
{
  var xhr = GetXHR();
  url = "/html/requete-ajax.php";
  xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  xhr.open("POST",url,false);
  alert(Var1);
  xhr.send('idphoto=' + Var1);
}
mais ça ne change rien. Je ne comprends pas
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
17 févr. 2010 à 21:02
Salut,

- Conserve le setRequestHeader()
- Passe ton false à true dans le xhr.open

.... ça devrait le faire.


Cordialement,

Kohntark -
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
18 févr. 2010 à 09:22
hello ! Non ça ne marche pas.
J'ai ma page, ou j'ai ma fonction 'Supp'
function supp(Var1)
{
  var xhr = GetXHR();
  url = "/html/requete-ajax.php";
  xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  xhr.open("POST",url,true);
  xhr.send('idphoto=' + Var1);
  alert(Var1);
}code]

Et donc dans ma page "requete-ajax.php" j'ai juste mis en haut de page : 
[code=php]if( isset( $_GET['idphoto'] ) && $_GET['idphoto'] != "" )
{
echo "OUAIIIIIIIIIIIIIIIIIIIIIIIIIIS";
}
else
{
echo "NAAAAAAAAAAAAAAAAAAAAAAAAAAN";
}

Mais il m'affiche toujours "NAAAAAAAAAAAAAAAAAAAAAAAAAAN"
J'ai remarqué qu'il y avait une ereur Javascript qui tombe sur la ligne du header. C'est peut être mon probleme moais je ne vois pas d'où ça peut venir.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
18 févr. 2010 à 10:03
Non ça ne marche pas.

... pourtant chez moi si

Ce que je voulais dire c'est reprendre ta première fonction, pas la seconde qui dans l'état actuelle n'est pas prête de te retourner quelque chose.
Tu y ajoutes "xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');"
Tu passes ton false à true


Ton "alert(Var1);" tel qu'il est placé t'informe uniquement que ta fonction est exécutée, ce qui n'apporte pas grand chose.

Si tu veux savoir ce qu'il se passe pendant l'exécution de la requête tu peux ajouter un alert juste après function(){ :
alert("Etat de la requête : "+xhr.readyState);

(cf google pour les correspondances)


Si tu n'as aucune alert postes ta fonction GetXHR() et dis nous quel navigateur tu utilises.

Il faut également que tu saches ce que tu veux :
- soit tu procèdes en GET, et tu récupères avec $_GET
- soit tu utilises POST, et tu récupères via $_POST
Dans ton dernier exemple tu mélanges les deux.

Cordialement,

Kohntark -
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
18 févr. 2010 à 12:34
Ok merci effectivement j'ai fait qq boulettes.
J'ai décidé de mettre tout en POST

J'ai donc modifié mon ficheir "requete-ajax" comem ceci :
if( isset( $_POST['idphoto'] ) && $_POST['idphoto'] != "" )
{
  echo "OUAIIIIIIIIIIIIIIIIIIIIIIIIIIS";
}
else
{
  echo "NAAAAAAAAAAAAAAAAAAAAAAAAAAN";
}


J'ai également remis ma fonction "supp" comme suivant :
function supp(Var1)
{
  var xhr = GetXHR();
  xhr.onreadystatechange = function()
  {
    if(xhr.readyState 4 && xhr.status 200)
    {
      leselect = xhr.responseText;
      document.getElementById('suppDIV').innerHTML = leselect;
    }
  }
  url = "/html/requete-ajax.php";
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xhr.open("POST",url,false);
  xhr.send('idphoto=' + Var1);
  alert("Etat de la requête : " + xhr.readyState);
}


Mais j'ai apparemment un erreur JS au niveau de la ligne
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");


Et voici ma fonction GetXHR :
function GetXHR()
{
  var xhr = null; 

  if(window.XMLHttpRequest)
  {
    xhr = new XMLHttpRequest();
  }
  else if(window.ActiveXObject)
  {
    try
    {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  else
  {
    alert("Votre navigateur ne supporte pas l\'ajax..."); 
    xhr = false; 
  }
  return xhr;
}


Il y a t-il quelque chose d'anormal ?

Merci bcp.

Ju'
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
18 févr. 2010 à 20:53
Il y a t-il quelque chose d'anormal ?

Oui :
Mais j'ai apparemment un erreur JS au niveau de la ligne

Quelle erreur ??

- pourquoi ne tiens tu pas compte de ça :
Tu passes ton false à true


Si tu veux savoir ce qu'il se passe pendant l'exécution de la requête tu peux ajouter un alert juste après function(){ :
Code Javascript :

alert("Etat de la requête : "+xhr.readyState);


(cf google pour les correspondances)

=> ton alert n'est pas placé au bon endroit et surtout tu ne dis pas ce que ça donne dans l'exécution de ton code (quels rapports d'états affichés) hors c'est le meilleur moyen de débugger.

Et puis :
url "/html/requete-ajax.php";
>
essaie de remplacer par 'url = "html/requete-ajax.php";' et assure toi que le chemin soit valide à partir de la page d'appel.

Cordialement,


Kohntark -
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
19 févr. 2010 à 09:42
L'erreur JS fournie par IE
"erreur non spécifiée Ligne 79"
cette ligne est la ligne de l'header de la fonction Supp()

J'ai passé à False car j'avais mal lu, il m'avait semblé lire qu'il fallait que je passe à False, désolé. J'ai corrigé, mais toujorus le même souci.

En ce qui concerne l'état de la requete, elle est à 1, donc ça doi pas être bon alors :(

Concernant le chemin de la page d'appel est bon, pour être sûr j'ai mis "../html/" au lieu de "/html/"



Je reviens vite fait sur cette histoire de "true" et "false", mon état de la requete devient 4 si je mets false, et reste à 1 sur je mets true. 4 c'est bon je crois, mais sur l'autre par je ne recoi visiblmement rien en POST.

Si vraiment tu ne vois pas mon probleme, ça m'embeterais mais j'ai quand meme trouvé une alternative en PHP. Pas en AJAX comme je l'aurais voulu mais bon... S'il n'y a que ça je prendrai :)

C'est quand meme chiant quand ça marche pas lol
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
19 févr. 2010 à 23:04
Pas en AJAX comme je l'aurais voulu mais bon... S'il n'y a que ça je prendrai :)

tu ne vas pas te laisser faire par une petite requête ajax tout de même ?

Je te propose de reposter l'intégralité de ton code (celui réellement nécessaire) afin de repartir sur une base claire.
Je viens de faire un test avec IE8 => fonctionne sans pb (ainsi que FF 3.5.8)
Quelle version de IE te donne cette erreur ?

Concernant le mode asynchrone (true) et synchrone (false) je reste un peu perplexe.
Ton script tel qu'il est, et surtout en considérant ton but, gagnerait je pense à être en asynchrone.

Cordialement,

Kohntark -
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
22 févr. 2010 à 09:42
Bonjour Kohntark !
Alors j'ai IE8.

Bon, je vais poster l'intégralité de mon code.
Voici ma page gestion_photos.php, l'affichage du div où doivent être affichées les photos et le Select où se passe l'interaction avec le javascript est aussi à la fin, j'ai mis une balise commentaire HTML pour que tu puisses reconnaitre facilement.
<?php
include_once('fonctions-systemes.php');
include_once('constantes.php');

// Redirection vers la page d'accueil dans le cas o un utilisateur non loggu et malveillant voudrais accder  cette page
if( !isset( $_SESSION['login'] ) )
{
  header("location:/index.php");
  exit();
}

$SessionLogin =  $_SESSION['login'];

// ****************************************************************************************************************** //
// ******************************************* TRAITEMENT D'AJOUT D'ALBUM ******************************************* //
// ****************************************************************************************************************** //
if( isset( $_POST['ajout_album'] ) )
{
  if( isset( $_POST['nom_album'] ) && $_POST['nom_album'] == "" )
  {
    $ErreurAlbum = "Il faut que tu remplisses ce champs !";
  }
  if( isset( $_POST['sorties'] ) && $_POST['sorties'] == "rien" )
  {
    $ErreurSortie = "Il faut que tu sélectionne ce champs !";
  }
  if( ( isset( $_POST['sorties'] ) && $_POST['sorties'] != "rien" ) && ( isset( $_POST['nom_album'] ) && $_POST['nom_album'] != "" ) )
  {
    $PostCodeSortie = $_POST['sorties'];
    $PostAlbum = $_POST['nom_album'];
function filtre( $string )
    {
      $string = str_replace("", "A", $string );
      $string = str_replace("", "A", $string );
      $string = str_replace("", "A", $string );
      $string = str_replace("", "A", $string );
      $string = str_replace("", "A", $string );
      $string = str_replace("", "A", $string );
      $string = str_replace("", "C", $string );
      $string = str_replace("", "E", $string );
      $string = str_replace("", "E", $string );
      $string = str_replace("", "E", $string );
      $string = str_replace("", "E", $string );
      $string = str_replace("", "I", $string );
      $string = str_replace("", "I", $string );
      $string = str_replace("", "I", $string );
      $string = str_replace("", "I", $string );
      $string = str_replace("", "O", $string );
      $string = str_replace("", "O", $string );
      $string = str_replace("", "O", $string );
      $string = str_replace("", "O", $string );
      $string = str_replace("", "O", $string );
      $string = str_replace("", "U", $string );
      $string = str_replace("", "U", $string );
      $string = str_replace("", "U", $string );
      $string = str_replace("", "U", $string );
      $string = str_replace("", "Y", $string );
      $string = str_replace("", "a", $string );
      $string = str_replace("", "a", $string );
      $string = str_replace("", "a", $string );
      $string = str_replace("", "a", $string );
      $string = str_replace("", "a", $string );
      $string = str_replace("", "a", $string );
      $string = str_replace("", "c", $string );
      $string = str_replace("", "e", $string );
      $string = str_replace("", "e", $string );
      $string = str_replace("", "e", $string );
      $string = str_replace("", "e", $string );
      $string = str_replace("", "i", $string );
      $string = str_replace("", "i", $string );
      $string = str_replace("", "i", $string );
      $string = str_replace("", "i", $string );
      $string = str_replace("", "o", $string );
      $string = str_replace("", "o", $string );
      $string = str_replace("", "o", $string );
      $string = str_replace("", "o", $string );
      $string = str_replace("", "o", $string );
      $string = str_replace("", "o", $string );
      $string = str_replace("", "u", $string );
      $string = str_replace("", "u", $string );
      $string = str_replace("", "u", $string );
      $string = str_replace("", "u", $string );
      $string = str_replace("", "y", $string );
      $string = str_replace("", "y", $string );
      return $string;
    }
    $PostAlbum = filtre($PostAlbum);
    $PostCodeAlbum = str_replace(" ", "_", $PostAlbum );

    $Conn = mysql_connect($host,$user,$pwd);
    mysql_select_db($bdd,$Conn) or die ("ERREUR");
mysql_query("SET NAMES 'utf8'");
// Verification de doublon
    $sql "select CODE_DOSSIER from albums where CODE_DOSSIER '".$PostCodeAlbum."' ";
    $res = mysql_query($sql) or die('Erreur SQL ! 
'.$sql.'
'.mysql_error());
    $num = mysql_num_rows($res); 
    if( $num > 0 )
{
  $ErreurAlbum = "Un album porte déjà ce nom. Utilise en un autre stp.";
    }
    else
    {
      $sql = "insert into albums (CODE_DOSSIER,DOSSIER,CODE_SORTIE,AJOUTE_PAR,DATE_AJOUT,IP_AJOUT) values ";
  $sql.= "('$PostCodeAlbum','$PostAlbum','$PostCodeSortie','$SessionLogin','$date','$ip') ";
      $res = mysql_query($sql) or die('Erreur SQL ! 
'.$sql.'
'.mysql_error());

      $AlbumFolder = "..".$CheminPhotos.$PostCodeSortie."/".$PostCodeAlbum;
    
      // Apres Insertion du dossier dans la BDD, copie physique de ce dossier sur le serveur
      if(!is_dir($AlbumFolder)) 
      {
        mkdir($AlbumFolder);
        $FolderCreated = "<center> Dossier copié et enregistré avec succès. </center>";
      }
}
   mysql_close($Conn);
  // traitement de copie du dossier de l'album, dans le dossier du type de sortie correspondante
  }
}

// ***************************************************************************************************************** //
// *************************************** TRAITEMENT DE SUPPRESSION D'ALBUM *************************************** //
// ***************************************************************************************************************** //
if( isset( $_POST['del_album'] ) )
{
  // On controle qu'un album a bien t slectionn
  if( isset( $_POST['albums'] ) && $_POST['albums'] ! = "default" )
  {
    $DeletedAlbum =  $_POST['albums'];
    $Conn = mysql_connect($host,$user,$pwd);
    mysql_select_db($bdd,$Conn) or die ("ERREUR");

// On vient chercher dans la base le nom de la sortie  laquelle est rattach l'album, afin de pouvoir supprimer le dossier
    $sql "select CODE_SORTIE from albums where CODE_DOSSIER '".$DeletedAlbum."' ";
    $res = mysql_query($sql) or die('Erreur SQL ! 
'.$sql.'
'.mysql_error());
    while($data = mysql_fetch_assoc($res))
    {
      $RecupCodeSortie = $data['CODE_SORTIE'];
    }

    // Suppression de l'enregistrement dans la BDD
    $sql "delete from albums where CODE_DOSSIER '".$DeletedAlbum."' ";
    $res = mysql_query($sql) or die('Erreur SQL ! 
'.$sql.'
'.mysql_error());

    // Suppression du fichier
    $ImgFolder = "..".$CheminPhotos.$RecupCodeSortie."/".$DeletedAlbum;
echo $ImgFolder;
mysql_close($Conn);
    if(is_dir($ImgFolder)) 
    {
      clearDir($ImgFolder);
      $FolderDeleted = "<center>Dossier supprimé et tout son contenu avec succès.</center>";
    }
  }
  else
  {
$ErreurAlbumDeleted = "Sélectionne un dossier si tu veux que cela marche !";
  }
}

// ***************************************************************************************************************** //
// ****************************************** TRAITEMENT D'AJOUT DE PHOTO ****************************************** //
// ***************************************************************************************************************** //
// traitement si il existe un $_POST['ajout_photo']
if( isset( $_POST['ajout_photo'] ) )
{
  if( $_FILES['inser_photo']['name'] == "" )
  {
    $ErreurPhoto = "Euh, si t'ajoutes une photo, autant que tu en sélectionne une !! arf ^^";
  }
  if( $_POST['albums'] == "NoAlbum" )
  {
    $ErreurPhoto = "Tu dois ranger la photo dans un album";
  }
  
  if( $_FILES['inser_photo']['name'] != "" && $_POST['albums'] != "NoAlbum" )
  {
    $PostInserCodeAlbum = $_POST['albums'];

    // on teste la prsence de l'envoi du bouton d'ajout de photo
    if( $_FILES['inser_photo']['name'] != "" )
    {
      $NomPhoto = $_FILES['inser_photo']['name'];
      // renvoi 'image/gif'  ... donc on prend 'image' et si les 5 premiers caracteres du type ne forment pas "image" c'est que ce n'est pas une image
      if(substr($_FILES['inser_photo']['type'],0,5) != 'image')
      {
        // CONTROLE QUI NE MARCHE PAS ! A VOIR PK !!!
        $ErreurPhoto = "Format de photo non supporté !";
      }
      elseif($_FILES['inser_photo']['size'] > '100000')
      {
        $SizeEnTropKo = ($_FILES['inser_photo']['size'] - 100000)/1024;
        $SizeEnTropKo = sprintf('%.02f',$SizeEnTropKo);
        $TailleKo = $_FILES['inser_photo']['size']/1024;
        $TailleKo = sprintf('%.02f',$TailleKo);
        $ErreurPhoto = "
Taille trop importante, il y  ".$SizeEnTropKo."Ko en trop . [".$TailleKo."Ko]";
      }
      else
      {
        // on remplace certains caractres spciaux par leur correspondant en ASCII - Caractre normal autoris pour l'enregistrement correct du fichier
        $NomPhoto  = strtr($NomPhoto, '', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');

        //on remplace chacun de ces caractres par '_'
        $NomPhoto =  preg_replace('/([^.a-z0-9]+)/i', '_', $NomPhoto);

        // on remplace les espaces que peuvent contenir les fichiers par '_'
        $NomPhoto = str_replace(" ", "_", $NomPhoto );
    $Conn = mysql_connect($host,$user,$pwd);
        mysql_select_db($bdd,$Conn) or die ("ERREUR");
        $sql "select CODE_SORTIE from albums where CODE_DOSSIER '".$PostInserCodeAlbum."' ";
        $res = mysql_query($sql) or die('Erreur SQL ! 
'.$sql.'
'.mysql_error());
        while($data = mysql_fetch_assoc($res))
        {
          $CodeSortie_by_CodeAlbum = $data['CODE_SORTIE'];
        }
mysql_close($Conn);
$EmplacementPhoto = "..".$CheminPhotos.$CodeSortie_by_CodeAlbum."/".$PostInserCodeAlbum."/";

        //Copie dans le repertoire du script
        if(move_uploaded_file($_FILES['inser_photo']['tmp_name'], $EmplacementPhoto.$NomPhoto))
        {
          $ElementsPhoto = pathinfo($NomPhoto);
          $Extension = $ElementsPhoto['extension'];
          $Conn = mysql_connect($host,$user,$pwd);
          mysql_select_db($bdd,$Conn) or die ("ERREUR");
  mysql_query("SET NAMES 'utf8'");

          $sql= "select PHOTO,ALBUM from photos";
          $res = mysql_query($sql) or die('Erreur SQL ! 
'.$sql.'
'.mysql_error());
          while($data = mysql_fetch_assoc($res))
          {
            $PhotoInBase = $data['PHOTO'];
            $AlbumInBase = $data['ALBUM'];

if( ( $PhotoInBase $NomPhoto ) && ( $AlbumInBase $PostInserCodeAlbum ) )
{
              $DoublonPhoto = "Il y a déjà une photo nomme  ".$PhotoInBase."  dans l'album ".$AlbumInBase."";
            }
          }
          // ************************************************************************************************** //
          // ************************************************************************************************** //
          // ************************************************************************************************** //
  
          if ( !isset( $DoublonPhoto ) )
          {
            // ** S'il n'y a pas de doublons sur le nom de photo dans un mme album, ***************************************** //
            // ** On vrifie que le GUID que l'on va gnrer existe dj ou non, si oui (quasi impossible), on en recr un ** //
            $GUIDPhoto  = Random(32);
            $sql_VerifGuid "select ID_PHOTO from photos where ID_PHOTO '".$GUIDPhoto."' ";
            $res_VerifGuid = mysql_query($sql_VerifGuid) or die('Erreur SQL ! 
'.$sql_VerifGuid.'
'.mysql_error());
            if( mysql_num_rows( $res_VerifGuid ) > 0 )
            {
              $GUIDPhoto = Random(32);
              $res_VerifGuid = mysql_query($sql_VerifGuid);
            }
            $sql = "insert into photos (ID_PHOTO,PHOTO,EXTENSION,ALBUM,AJOUTE_PAR,DATE_AJOUT,IP_AJOUT) values ";
    $sql.= "('$GUIDPhoto','$NomPhoto','$Extension','$PostInserCodeAlbum','$SessionLogin','$date','$ip') ";
            $res=mysql_query($sql) or die ("ERREUR ! Impossible d'ajouter la photo !");
            mysql_close($Conn);

            $ValidePhoto = "Photo téléchargée avec succès."; 

            // permet la visualisation des l'album apres l'ajout de la photo
            $IndiceAjoutPhoto = $PostInserCodeAlbum;
          }
        }
        else
        {
          echo "Le fichier n'a pas été uploadé (trop gros ?) ou ";
  echo "Le déplacement du fichier temporaire a échoué" - " ";
          echo "vérifiez l'existence du répertoire ".$CheminPhoto."";
        }
      }
    }  
    else
    {
      $ErreurPhoto = "Euh... tu voulais pas insérer une photo ?";
    }
  }
}

// ****************************************************************************************************************** //
// ********************************** VERIFICATION DES DROITS ADMIN ET MODERATEUR *********************************** //
// ****************************************************************************************************************** //
$Conn = mysql_connect($host,$user,$pwd);
mysql_select_db($bdd,$Conn) or die ("ERREUR");
$sql "select ADMIN,MODERATEUR from utilisateurs where LOGIN '".$SessionLogin."' ";
$res = mysql_query($sql) or die('Erreur SQL ! 
'.$sql.'
'.mysql_error());
while($data = mysql_fetch_assoc($res))
{
  $DroitAdmin = $data['ADMIN'];
  $DroitModerateur = $data['MODERATEUR'];
}
mysql_close($Conn);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><!-- InstanceBegin template="/Templates/template.dwt" codeOutsideHTMLIsLocked="false" -->
<head>
<!-- InstanceBeginEditable name="doctitle" -->
<title>Gestion des photos</title>
<SCRIPT language="JavaScript" SRC="/includes/fonctions-ajax.js"></SCRIPT> 
<!-- InstanceEndEditable -->
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="/includes/menu.css" rel="stylesheet" type="text/css">
<link href="/includes/style-general.css" rel="stylesheet" type="text/css">
<!-- InstanceBeginEditable name="head" -->
<!-- InstanceEndEditable -->
<script type="text/javascript">
var gaJsHost (("https:" document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try
{
  var pageTracker = _gat._getTracker("UA-12965411-1");
  pageTracker._trackPageview();
}
catch(err) {}
</script>
</head>

(CLIQUEZ-ICI
 si vous voulez etre redirigé 
vers l'ancienne page d'accueil)
<form action="/connexion.php" method="POST" name="log" id="log"><?php include_once('menu.php'); ?></form>,
<center>
 Le Clan Paye te souhaite la bienvenue !

</center>,

----

<!-- InstanceBeginEditable name="Corps" -->
<form action="gestion_photos.php" method="post" enctype="multipart/form-data" id="form_photos" name="form_photos"><center>
<?php if( isset( $FolderCreated ) && $FolderCreated != "" ) echo $FolderCreated;
if( isset( $FolderDeleted ) && $FolderDeleted != "" ) echo $FolderDeleted; ?>
<table width='98%' class='Normal' border=0>
----, Ajout un nouvel album ... :  >

<?php if(isset($ErreurAlbum) && $ErreurAlbum != \"\") echo $ErreurAlbum; ?></td>... dans la rubrique :

<select name='sorties' id='sorties'>
<option value='rien'>--Toutes les rubriques--</option>
<?php
$Conn = mysql_connect($host,$user,$pwd);
mysql_select_db($bdd,$Conn) or die ("ERREUR");

$sql = "select CODESORTIE,SORTIE from sorties";
$res = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
while($data = mysql_fetch_assoc($res))
{
$LaSortie = $data['SORTIE'];
$CodeDeLaSortie = $data['CODESORTIE'];
echo "<option value='".$CodeDeLaSortie."'>".$LaSortie."</option>";
}
mysql_close($Conn);
?>
</select><?php if(isset($ErreurSortie) && $ErreurSortie != "") echo "
".$ErreurSortie; ?>, ,

----

<hr size=1 color='#CCCCCC'>,

----

Ajoute une photo...

<?php
if( isset( $ErreurPhoto ) && ( $ErreurPhoto != "" ) )
{
echo "
".$ErreurPhoto;
}
elseif( isset( $ValidePhoto ) && ( $ValidePhoto != "" ) )
{
echo "
".$ValidePhoto;
}
elseif( isset( $DoublonPhoto ) && ( $DoublonPhoto != "" ) )
{
echo "
".$DoublonPhoto;
}
?>,
... dans un des albums existants :

<!-- ********************************************************************************************************************** -->
<!-- *************** DEBUT traitement AJAX de l'affichage de des photos quand on selectionne un album ********************* -->
<!-- ********************************************************************************************************************** -->
<select name='albums' id='albums' onchange='go()'>
<option value='NoAlbum'>-- Tous les albums --</option>
<?
$Indicateur = 0;
$Conn = mysql_connect($host,$user,$pwd);
mysql_select_db($bdd,$Conn) or die ("ERREUR");
$sql = "select CODE_DOSSIER,DOSSIER from albums order by DOSSIER";
$res = mysql_query($sql) or die('Erreur SQL au niveau des albums!
'.$sql.'
'.mysql_error());
$NbAlbums = mysql_num_rows($res);
while($data = mysql_fetch_assoc($res))
{
echo "<option value='".$data["CODE_DOSSIER"]."'";
if( $data['CODE_DOSSIER'] == $_GET['ida'] )
{
echo "selected='selected'";
$Indicateur = 1;
}
echo ">".$data["DOSSIER"]."</option>";
}
mysql_close($Conn);
?>
</select><?php if(isset($ErreurAlbumDeleted) && $ErreurAlbumDeleted != "") echo "
".$ErreurAlbumDeleted; ?>,

/>,

----

Il y a <?php echo "".$NbAlbums.""; ?> albums photos.

<!-- **************** FIN traitement AJAX de l'affichage de des photos quand on selectionne un album ********************** -->
<!-- ********************************************************************************************************************** -->

    </center></form>
    <!-- InstanceEndEditable --></td>
  </tr>
</table>

<!-- InstanceEnd --></html>
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
22 févr. 2010 à 09:47
Voici ensuite mon code javascript étant dans m'include "fonctions-ajax.js"

function GetXHR()
{
  var xhr = null; 

  if(window.XMLHttpRequest) // Firefox et autres
  {
    xhr = new XMLHttpRequest();
  }
  else if(window.ActiveXObject)
  { // Internet Explorer 
    try
    {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  else
  { // XMLHttpRequest non supporté par le navigateur 
    alert("Votre navigateur ne supporte pas l\'ajax..."); 
    xhr = false; 
  }
  return xhr;
}


function go()
{
  var xhr = GetXHR();
  // On défini ce qu'on va faire quand on aura la réponse
  xhr.onreadystatechange = function()
  {
    // On ne fait quelque chose que si on a tout reçu (readystate) et que le serveur est ok (status)
    if(xhr.readyState 4 && xhr.status 200)
    {
      leselect = xhr.responseText;
      // On se sert de innerHTML pour rajouter les options a la liste
      document.getElementById('photoDIV').innerHTML = leselect;
    }
  }
  // Ici on va voir comment faire du post
  url = "/html/requete-ajax.php" ;
  xhr.open("POST",url,true);
  // ne pas oublier ça pour le post
  xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  // ne pas oublier de poster les arguments
  // ici, l'id de l'album
  sel = document.getElementById('albums');
  ID = sel.options[sel.selectedIndex].value;
  xhr.send('idAlbum=' + ID);
}

function supp(Var1)
{
  var xhr = GetXHR();
  xhr.onreadystatechange = function()
  {
    if(xhr.readyState 4 && xhr.status 200)
    {
      leselect = xhr.responseText;
      document.getElementById('suppDIV').innerHTML = leselect;
    }
  }
  url = "../html/requete-ajax.php";
  //xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xhr.open("POST",url,false);
  xhr.send('idphoto=' + Var1);
  alert("Etat de la requête : " + xhr.readyState);
}


Et voici pour finir mon fichier "requete-ajax.php"
<?php
include_once('fonctions-systemes.php');
include_once('constantes.php');

if( isset( $_POST['idphoto'] ) && $_POST['idphoto'] != "" )
{
echo "OUAIIIIIIIIIIIIIIIIIIIIIIIIIIS";
}
else
{
echo "NAAAAAAAAAAAAAAAAAAAAAAAAAAN";
}

if( isset( $_POST['idAlbum'] ) && $_POST['idAlbum'] != "" ) $IDAlbum = $_POST['idAlbum'];

echo "";

if($IDAlbum != "")
{
  $Conn = mysql_connect($host,$user,$pwd);
  mysql_select_db($bdd,$Conn) or die ("ERREUR");
  $sql "select ID_PHOTO,PHOTO from photos where ALBUM '".$IDAlbum."' order by PHOTO";
  $res = mysql_query($sql) or die('Erreur SQL au niveau des photos ! 
'.$sql.'
'.mysql_error());
  $NbPhotos = mysql_num_rows($res);
  if( $NbPhotos != 0 )
  {
    echo "voici les ".$NbPhotos." photos intégrées : 

";
    echo "\";
$Col = 1;
$Ligne = 1;
}

$Modulo = $NbPhotos % 4; // S'il y a un modulo, il faut rajouter une ligne à la fin avec autant de colonnes que le modulo
$NbLignes = ( ( $NbPhotos - $Modulo ) / 4 ) + 1;

while($row = mysql_fetch_assoc($res))
{$sqlSortie \"select CODE_SORTIE from albums where CODE_DOSSIER '\".$IDAlbum.\"' \";
$resSortie = mysql_query($sqlSortie) or die('Erreur SQL au niveau de la sortie !
'.$sqlSortie.'
'.mysql_error());
$Sortie = mysql_result($resSortie, 0);

// Generation des lignes et colonnes
$ID = $row[\"ID_PHOTO\"];

if( $Ligne <= $NbLignes )
{
if( $Col == 1 )
{
echo \"----

";
echo "Supprimer";
$Col++;
}
elseif( $Col == 4 )
{
echo ", 
\";
echo \"Supprimer\";
echo \"</td>\";
$Col = 1;
$Ligne++;
}elseif( $Col 3 || $Col 2 )
{
echo \"
";
echo "Supprimer, \";
$Col++;
}
else
{
// erreur à traiter
echo \"

ERREUR DE TABULATION SANS MODULO !

\";
}
}
elseif ( $Modulo == 1 && ( $Ligne > $NbLignes ) )
{
if( $Col == 1 )
{
echo \"----

";
echo "Supprimer";
echo ", \";
$Col++;
}
else
{
// erreur à traiter
echo \"

ERREUR DE TABULATION AVEC LE MODULO 1 !

\";
}
}
elseif ( $Modulo == 2 && ( $Ligne > $NbLignes ) )
{
if( $Col == 1 )
{
echo \"----

";
echo "Supprimer, \";
$Col++;
}
elseif( $Col == 2 && ( $Ligne > $NbLignes ) )
{
echo \"
";
echo "Supprimer, \";
}
else
{
echo \"

ERREUR DE TABULATION AVEC LE MODULO 2 !

\";
}
}
elseif ( $Modulo == 3 && ( $Ligne > $NbLignes ) )
{
echo \"----
<table border=0>";
if( $Col == 1 )
{
echo "----, 
\";
echo \"Supprimer</td>\";
$Col++;
}
elseif( $Col == 2 && ( $Ligne > $NbLignes ) )
{
echo \"
";
echo "Supprimer, \";
$Col++;
}
elseif( $Col == 3 && ( $Ligne > $NbLignes ) )
{
echo \"
";
echo "Supprimer, \";
}
else
{
// erreur à traiter
echo \"

ERREUR DE TABULATION AVEC LE MODULO 3 !

\";
}
      echo "
</td></tr>";
    }
    else
    {
      // erreur à traiter
      echo "

ERREUR DE GENERALE TABULATION !

";
    }
  }
  if( $NbPhotos == 0 )
  {
    echo "il n'y a aucune photo dans cet album ! Insère en une
";
    echo "<tr><td> </td></tr>"; // au cas où il n'u aura pas de resultat, j'initialise au moins une cellule de tableau
  }
  echo "</table>";
  mysql_close($Conn);
}
echo "

";
if( isset( $FolderDeleted ) && $FolderDeleted != "" ) echo $FolderDeleted;
if( isset( $FileDeleted ) && $FileDeleted != "" ) echo $FileDeleted;
?>



Voici donc tout mon code utile. JE ne sais pas s'il te sera d'un grande utilité.

Merci.


Ju'
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
22 févr. 2010 à 20:46
Re,

Il est inutile de recréer un post sur le sujet (ça surcharge inutilement et surtout les autres intervenants ne vont rien comprendre)
Je te réponds sur le premier : http://www.phpcs.com/forum/sujet-AJAX-PROBLEME-ENVOI-POST_1407262.aspx?p=2


Kohntark -
0
kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
22 févr. 2010 à 21:06
Oulaa, excuse moi, j'ai cru que tu avais réouvert un autre post ... au temps pour moi.
les vacances se font grandement attendre ...


Quelques remarques à la va vite :

- quel est le but de ta fonction filtre() ??? (j'me doute un peu et ça m'effraye )

- ton code HTML comporte de nombreuses erreurs, tu devrais t'aider du validateur W3C pour les corriger (http://validator.w3.org/)
C'est un aspect trop souvent négligé car les navigateurs sont très "laxistes", mais un code HTML valide peut éviter bien des bugs.

- <SCRIPT language="JavaScript" SRC="/includes/fonctions-ajax.js"></SCRIPT>
> <script type"text/javascript" src="/includes/fonctions-ajax.js"></script>

- <?
=> le tag d'ouverture d'un script php est <?php

- tu as du code en doublon :
$Conn = mysql_connect($host,$user,$pwd);
mysql_select_db(...
=> 1 seule connexion à la DB devrait être suffisante

- et bien d'autres ...

A dire vrai j'ai du mal à te suivre : un peu partout dans ton code tu as des erreurs, que ce soit en HTML, en PHP ou en JS, que tu écris correctement ailleurs .
Soit ça relève du copié/collé hasardeux, soit d'inattentions. Dans tous les cas tu gagnerais à harmoniser et corriger tout ça.

Par exemple ta fonction JS go() semble correcte ... puis tu réécris la même (ou presque) avec des erreurs.

Ta fonction supp() devrait ressembler à cela (idem que go() au final) :

<script type="text/javascript">
 function supp(Var1) {
        var xhr = GetXHR();

        xhr.onreadystatechange = function() {

            if (xhr.readyState == 4) {
                if (xhr.status == 200) {
                    leselect = xhr.responseText;
                    document.getElementById('suppDIV').innerHTML = leselect;
                }
                // else si autre code (404 par ex) => affichage de l'erreur
            }
        }
        url = "../html/requete-ajax.php";
        xhr.open("POST",url,true);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.send('idphoto=' + Var1);
    }
</script>


D'ailleurs tu devrais scinder ces 2 fonctions en une seule, puisque 90% du code est commun. Pour cela il suffirait de passer un argument "action" qui permettrait à ton script de savoir quoi poster et mettre à jour.


Cordialement,


Kohntark -
0
payetonju Messages postés 436 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 2 juillet 2014 4
23 févr. 2010 à 09:32
Bonjour !

Et bien j'ai appris tout seul donc ça en m'étonnes pas qu'il y ait des ereur. la moitié sont des erreurs d'inattention, l'autre moitié je ne savais pas tout ce que tu viens de me dire :/

Est-ce qu'il est mieux, dans un ficheir PHP, d'ouvrir la base dès le début du fichier, et de la refermer tout à la fin, sans avoir à le refaire plusieurs fois dans le meme fichier ?

Pour la fonction JS ok je vois tout à fait ce que tu veux dire, je vais la refaire.

Et en ce qui concerne la fonction filtre, normalement ça remplacait les caracteres spéciaux comme "à" par "a", "é" par "e" etc... mais tous els caracteres spéciaux ont disparu... etrange...

Et pour le W3C , ne je sais pas ce que c'est je vais voir.

Sinon pour toi l'AJAX devrait marcher là ?
0