begin process at 2012 05 31 00:12:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Web 2.0

 > 

Ajax

 > 

input file avec aJAX


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

input file avec aJAX

mercredi 1 septembre 2010 à 16:20:58 | input file avec aJAX

ju0123456789

Bonjour,

J'ai une page qui permet de pouvoir ajouter des photos dans un albums, sur mon site. ça marche tres bien... en PHP !

Mais je voudrais éviter tout rechargement de page et donc le faire en AJAX.
Le probleme, est "comment recuperer toutes les valeurs du fichier en ajax ?"

Voici mon programme d'origine en PHP qui fonctionne bien :
Code PHP :

if( isset( $_POST['ajout_photo'] ) )
{
  if( $_FILES['inser_photo']['name'] == "" )
  {
    $ErreurPhoto = "<font face='arial' size='1' color='red'>Euh, si t'ajoutes une photo, autant que tu en s&eacute;lectionne une !! arf ^^</font>";
  }
  if( $_POST['albums'] == "NoAlbum" )
  {
    $ErreurPhoto = "<font face='arial' size='1' color='red'>Tu dois ranger la photo dans un album</font>";
  }
  
  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'];
      $ElementsPhoto = pathinfo($NomPhoto);
      $Extension = $ElementsPhoto['extension'];
      $ExtMaj = strtoupper($Extension);
      if( $ExtMaj != 'JPG' && $ExtMaj != 'GIF' && $ExtMaj != 'TIF' && $ExtMaj != 'BMP' )
      // 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')
      {
        $ErreurPhoto = "<font face='arial' size='1' color='red'>Format de photo non support&eacute; !</font>";
      }
      elseif($_FILES['inser_photo']['size'] > '4000000')
      {
        $SizeEnTropKo = ($_FILES['inser_photo']['size'] - 4000000)/1024;
        $SizeEnTropKo = sprintf('%.02f',$SizeEnTropKo);
        $TailleKo = $_FILES['inser_photo']['size']/1024;
        $TailleKo = sprintf('%.02f',$TailleKo);
        $ErreurPhoto = "<br /><span class='Erreur'>Taille trop importante, il y <b>".$SizeEnTropKo."Ko en trop</b>. [".$TailleKo."Ko]</span>";
      }
      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);
        $sql = "select CODE_SORTIE from albums where CODE_DOSSIER = '".$PostInserCodeAlbum."' ";
        $res = mysql_query($sql);
        while($data = mysql_fetch_assoc($res))
        {
          $CodeSortie_by_CodeAlbum = $data['CODE_SORTIE'];
        }
        mysql_close($Conn);
        $EmplacementPhoto = "..".$CheminPhotos.$CodeSortie_by_CodeAlbum."/".$PostInserCodeAlbum."/";

        if(move_uploaded_file($_FILES['inser_photo']['tmp_name'], $EmplacementPhoto.$NomPhoto))
        {
          $Conn = mysql_connect($host,$user,$pwd);
          mysql_select_db($bdd,$Conn);
          mysql_query("SET NAMES 'UTF-8'");

          $sql= "select PHOTO,ALBUM from photos";
          $res = mysql_query($sql);
          while($data = mysql_fetch_assoc($res))
          {
            $PhotoInBase = $data['PHOTO'];
            $AlbumInBase = $data['ALBUM'];

            if( ( $PhotoInBase == $NomPhoto ) && ( $AlbumInBase == $PostInserCodeAlbum ) )
            {
              $DoublonPhoto = "<font size='1' color='red'>Il y a d&eacute;j&agrave; une photo nomme <b>".$PhotoInBase."</b> dans l'album <b>".$AlbumInBase."</b></font>";
            }
          }

          if ( !isset( $DoublonPhoto ) )
          {
            // ** S'il n'y a pas de doublons sur le nom de photo dans un mme album, ***************************************** //
            // ** On verifie 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);
            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);
            mysql_close($Conn);

            $ValidePhoto = "<span class='Petit'><font color='green'>Photo t&eacute;l&eacute;charg&eacute;e avec succ&egrave;s.</font></span>"; 

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



Pour préparer mon AJAX, mon input de type submit s'est transformé en type BUTTON, où j'appelle ma fonction AJAX nommée AjoutPhoto().
Cette fonction donne :
Code Javascript :
function AjoutePhoto()
{
  var xhr = GetXHR();
  xhr.onreadystatechange = function()
  {
    if(xhr.readyState == 4 && xhr.status == 200)
    {
      leselect = xhr.responseText;
      document.getElementById('DIVAjoutPhoto').innerHTML = leselect;
    }
  }
  url = "../html/requete-ajax.php" ;
  xhr.open("POST",url,false);
  xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  sel = document.getElementById('inser_photo');
  Photo = sel.value;
  xhr.send('foto=' + Photo);
}


LA variable "foto" renvoi bien le nom de la photo contenue dans l'input file, mais ensuite, comment dois-je faire pour executer correctement mon programme sur ma page "requete-ajax.php" appelée par ma fonction AjoutPhoto() ?

Merci bcp d'avance.

Ju'
mercredi 20 octobre 2010 à 13:28:04 | Re : input file avec aJAX

jediNoobiewan

Réponse acceptée !
Bonjour,

Il est à ma connaissance impossible de faire de l'upload de fichier en Ajax, si tu veux éviter le rechargement de la page il faut passer par une iframe.



@++
mercredi 20 octobre 2010 à 14:19:55 | Re : input file avec aJAX

ju0123456789

Oui merci c'est ce que j'ai vu. Et est-il possible de sélectionner plusieurs fichiers ?
mercredi 20 octobre 2010 à 14:39:02 | Re : input file avec aJAX

jediNoobiewan

Les inputs file classique ne te permettent pas de sélectionner plusieurs fichiers, tu es obligé de passer par des mini-applis flash ou silverlight.
Il existe un truc vraiment bien pour du multiupload : FancyUpload va voir sur google ;)
Je l'ai déjà utilisé ya un moment et ça fait ce que tu recherches.



@++
mercredi 20 octobre 2010 à 16:05:06 | Re : input file avec aJAX

ju0123456789

Merci énormément, malgré avori cherché je n'ai aps trouvé réponse à cette question. Maintenant que j'ai le nom d'un petit soft ça devrait gérer.

Merci encore bonne journée
Ju'


Cette discussion est classée dans : mysql, photo, inser, nomphoto, if


Répondre à ce message

Sujets en rapport avec ce message

Soucis input file qui marche pas [ par ju0123456789 ] Bonjour, je suis assez embeté, mon input file ne marche pas, il ne me renvoit rien, je me prends al tete depuis ce matin, je comprends pas ce qu'il se probleme formuliare [ par jinin ] Bonjours à Tous, j'ai fait un script php pour un formulaire d'inscription dans dans ma base données avec envoie d'email <div align="center" style="w plusieur condition avec if [ par guilstunt ] Bonjour tout le monde, dans ma requete j'ai 2 conditions mais je n'arrive pas a les effectuer. En fait ma premiere condition est que le combat soit impossible de se connecter a la base sur mon systeme virtuel mais en ligne cela fonctionne [ par lorant59 ] bnnjour à tous et à toutes! jai mon fichier qui permet de valider mon formulaire mais impossible de se connecter à la base lorsque je suis sur mon sys inserrer des fichier ou images dans ma base de donne o en php (base mysql) [ par msi079 ] salut je veux insérer des images des victimes ( la base est créer pour identifier et enregistrer des victimes de guerre ) de guerre mais j'arrive pas. problème avec une requète [ par boubeuch1 ] Bonjour, Voilà je souhaite effectuer c'est requète SQl pour modifier les caractéristique et la photo d'une voiture: <?php $id_v=$_GET['id_v']; $mar probléme avec mes fonction mysql [ par jinin ] Salut j'ai essayer de faire une script qui affiche page par page des article que moi l'admin je poste sur ma partie index de mon site voici mes erreur Optimisation d'une requête complexe via boucle for() [ par monoski ] J'ai une requête qui affiche une certaine récurrence, mais j'ai du mal à inventer une incrémentation de type +1 dans des noms de variables php est-ce problème upload d'une image dans le bon dossier de destination [ par rachoup ] Bonjour , voilà quelques jours que je plante sur un souci qui peut être serait tout bête si kelk'un m'aidait en y jetant un coup. j'ai lu et relu mon sauvegarde automatique d'une table dans une BD Mysql [ par hamzvb ] bonjour, je travail sur un site web en php et je veux dans l'espace administrateur ajouter une interface qui lui permet de lancer une sauvegarde autom


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales