IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Modification d'image profile avec ajax


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de simotaqi
    Inscrit en
    Février 2010
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 144
    Par défaut [AJAX] Modification d'image profile avec ajax
    bonjour,
    j'ai un probleme avec la modification de l'image du profile a l'aide de l'ajax,
    mon code contient une fonction getXHR() qui sert a créér un xmlhttprequest

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    function getXHR(){
    var req=null;
    try{
    req=new XMLHttpRequest();
    }
    catch(err1){
          try{
          req=new ActiveXObject("Msxml2.XMLHTTP");
          }
          catch(err2){
          try{
          req=new ActiveXObject("Microsoft.XMLHTTP");
          }
          catch(err3){
          req=null;
          }
          }
    }
    return req;
    }
    une fonction changeimage() pour l'envoie d'une requete au code php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    function changephoto(){
    var newphoto=document.getElementById('newphoto').value;
    var url4='message4.php?newphoto='+newphoto;
    req=new getXHR();
    req.open('GET',url4,true);
    req.onreadystatechange=function(){
    if (req.readyState==4){
    if (req.status==200){
    document.getElementById('photo').innerHTML=req.responseText;
    }
    }
    else {document.getElementById('photo').innerHTML='Loading...';}
    }
    req.send(null);
    }
    et un code php (cote serveur ) qui sert a supprimer l'image dont le nom et egale a celui du l'utilisateur connecté (c'est a dire $_SESSION['username'])
    , et copier la nouvelle image (celle de l' upload input dont name="newphoto")
    et de la renommer dans le serveur pour qu'on puisse l'afficher a l'utilisateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?php session_start();
    $uploadLocation="./";?>
    <?php
    $newphoto=$_FILES['newphoto'];
    $target=$_SERVER['DOCUMENT_ROOT'].'/profiles/';
    $oldphoto=$target.$_SESSION['username'].'.jpg';
    $target_path=$target.basename($newphoto['name']);
    if (move_uploaded_file($newphoto['tmp_name'],$target_path)){
    rename ($target_path,$oldphoto);
    unlink($oldphoto);
    $image_path='../profiles/'.$_SESSION['username'].'.jpg';
    $sizes=getimagesize($image_path);
    $largeur=$sizes[0];
    $hauteur=$sizes[1];
    $nlargeur=110;
    $nhauteur=$hauteur/($largeur/$nlargeur);
    echo '<image src="../profiles/'.$_SESSION['username'].'.jpg" height="'.$nhauteur.'" width="'.$nlargeur.'" alt="le profil de '.$_SESSION['username'].'"></image>';
    }
    else{
    echo 'l image n a pas pu etre modifier</br>';
    echo "oldphoto : ".$oldphoto."</br>";
    echo "newphoto : ".$newphoto."</br>";
    echo "target_path : ".$target_path;
    }
    ?>

    les dernieres echos (echo 'l'image n a pas pu etre....) sont des teste pour tracer les variable.

    -ici est ce qu'il est possible de travailler avec $_FILES['newphoto'] ?et comment l'integrer dans le code?

    et merci pour votre réponse

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Salut.

    Non, tu ne peux pas uploader de fichier via AJAX. La seule méthode d'upload est la soumission d'un formulaire.
    Une solution pourrait être de faire l'upload via une iframe cachée.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé Avatar de simotaqi
    Inscrit en
    Février 2010
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 144
    Par défaut
    merci pour votre réponse, je vais essayer le formulaire , pourtant qu'est ce que c'est que iframe caché.

Discussions similaires

  1. Réponses: 13
    Dernier message: 30/05/2011, 17h47
  2. [AJAX] Modification "inline" de données avec AJAX
    Par isa150183 dans le forum AJAX
    Réponses: 1
    Dernier message: 04/12/2009, 00h21
  3. [AJAX] modification "inline" de données avec un <select>
    Par aztec dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/05/2008, 20h11
  4. [AJAX] Afficher une image GD avec ajax
    Par darkvodka dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/06/2007, 00h43
  5. Réponses: 3
    Dernier message: 21/11/2006, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo