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] Blob mysql et ajax affiche des caractères incompréhensibles aulieu de photo


Sujet :

AJAX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut [AJAX] Blob mysql et ajax affiche des caractères incompréhensibles aulieu de photo
    Voila mon problème .

    Quand on se rend sur une page profil, ajax récupère les données du profil sur un autre fichier php .

    Dedans, j'affiche la photo du membre, et la sa cloche, sa m'affiche des caractères par milliers et incopréhensibles ...

    Que faire ?

    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
    17
    18
     
    $photo=mysql_query("SELECT * FROM em_photos WHERE id_membre='$profil'");
    			$num_photo=mysql_num_rows($photo);
    			$p=mysql_fetch_assoc($photo);
     
    			// Le compte existe et est validé !
     
    			if ($num_photo==0)
    				{
    				header ("Content-type: ".$p['extension']);
     
    				echo '<img id="focus" src="css/images/pas_photo.jpg" style="width:200px;height:auto;float:left;clear:both;margin:0px 10px 10px 0px;" onMouseOver="affiche_img()" onMouseOut="cache_img()" />';
    				}
    			else
    				{
    				echo $p[id];
    				echo '<img id="focus" src="profil.php?'.$p['id'].'" style="width:200px;height:auto;float:left;clear:both;margin:0px 10px 10px 0px;" onMouseOver="affiche_img()" onMouseOut="cache_img()" />';
    				}
    Donc en l'occurence, c'est la partie else {} qui coince ...

    La table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CREATE TABLE `em_photos` (
       `id` INT NOT NULL AUTO_INCREMENT,
       `photo` BLOB NOT NULL,
       `extension` VARCHAR(25) NOT NULL,
       PRIMARY KEY (`id`)
    )
    Voila, si il vous manque certaines informations, n'hésitez pas .
    Merci par avance pour votre aide .

    PS : Pour entrer sur le site, il faut cliquer sur je suis majeur ...

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    je ne sais pas ce que tu mets dans le content-type, mais dans la mesure où tu transfert un tag HTML, il s'agit de texte simple (pas de header de type image, donc)

    Pour faire ce genre de mise à jour, une solution est de créer à l'avance le tag <img> (en le masquant par défaut), puis de ne récupérer que l'url de l'image via Ajax (toujours du texte).
    Il suffit ensuite de mettre à jour le src de l'image puis d'afficher cette dernière.

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    Merci de la reponse, mais aurais tu un tit exemple stp ?

    Merci beaucoup

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    ou sinon serais-ce un problème d'encodage ?

    Pour les modos : Peut etre que mon sujet aurait plus de succès dans le forum php/mysql .

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par cuisto44000 Voir le message
    ou sinon serais-ce un problème d'encodage ?
    Relis ce que je t'ai écrit

    Tu as vérifié ? Essayé ?
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  6. #6
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Hello,

    Si je présume que tu stock en base ton image et non son URL ?

    Si tel est bien le cas lorsque tu appels ta page PHP (réponse) ton image s'affiche correctement.
    Mais lorsque tu fais ton push Ajax de la réponse php dans la balise HTML voulu tu n'obtiens soit rien (une belle erreur) soit du texte.

    Dis moi si j'ai juste ou si je m'égare
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  7. #7
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Comme te l'a dit E.Bzzz, ajax ne traite QUE du texte, donc ce que tu souhaites faire n'est pas possible en l'état.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    llaffont : pas faux

    E.bzz : Je n'ai pas testé car besoin d' un exemple comme demandé précedement

  9. #9
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Alors pour t'expliquer clairement ce que veulent dire DoubleU & E.bzz

    Pour reconstituer ton image sur ta page réponse php tu dois t'y prendre comme suit :

    Récupération de la data blob (ton image) qui à une gueule de chaine de caractère

    Puis l'afficher via un echo qui est précédé d'un "header ("Content-type: image/jpg");"

    Quand tu fais appel à ta fonction ajax celle-ci viendrait à faire un truc de ce style sur ta page PHP réponse.

    Elle remplace "header ("Content-type: image/jpg");" par "header ("Content-type: text/html");" donc tu te retrouve avec simplement ton echo. c'est à dire du texte.

    En conclusion il t'est impossible de récupérer une images Blob via une fonction Ajax.

    Par contre tu peux faire une fonction Ajax qui demande à PHP de généré l'image temporaire dur dans un répertoire et de te retourner l'URL de l'image.
    Puis une seconde fonction Ajax qui détruit l'image quand tu quittes la page.

    En tout cas bon courage
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  10. #10
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    Citation Envoyé par llaffont Voir le message
    Elle remplace "header ("Content-type: image/jpg");" par "header ("Content-type: text/html");" donc tu te retrouve avec simplement ton echo. c'est à dire du texte.
    Non elle ne touche pas au header, mais on ne peut pas traiter un flux binaire en javascript, donc on ne peut rien faire de l'image.

    Je ne comprends pas l'exemple que tu demandes à E.Bzz ; dans ton script initial, tu ajoutes bien un tag img avec un src profil.php ; la seule chose que je vois, c'est que tu concatènes l'id de ton record, mais sans paramètre ce qui ne fait que corser sa récupération... Au delà de ça, si ta page profil.php positionne bien le header qu'il faut, tout devrait bien se passer...

    La notion AJAX ici n'a rien à voir puisque la requete AJAX qui affiche le tag imag est complètement décorélée du pocessus qui va télécharger l'image au final...
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 450
    Points : 123
    Points
    123
    Par défaut
    Bon cela me paraissait un peu compliqué, donc j' explique ce que j'ai fait sa peut certainement interesser des gens :

    le membre upload sa photo

    je renomme la photo au nom du membre pour une gestion plus simple par la suite
    on test si le membre avait deja une photo
    -si non => alors on insere la photo dans un dossier et en parallele dans un mysql on insere le nom du fichier

    -si oui => alors on supprime l' ancienne photo du dossier, puis on y integre la nouvelle : pas besoin de modifier la valeur du champ photo puisque de toute façon elle est nommée par le pseudo du membre . donc on modifie juste la photo dans le dossier

    De cette maniere, le membre peut changer sa photo à sa guise, l' ancienne photo est supprimée pour éviter d' encombrer le serveur .

    Et comme cela, effectivement, l' ajax renvoi que du text et donc sa s'affiche correctement .

    J' espere avoir été assez clair .

    Merci pour votre aide malgré tout .

  12. #12
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    That Good News

    Plus qu'a résoudre le post
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser Ajax et PHP SQL pour afficher des images BDD
    Par kaspar Knox dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/02/2016, 18h48
  2. Réponses: 1
    Dernier message: 02/03/2008, 16h16
  3. JLabel - afficher des caractères Unicode asiatiques
    Par Nicolas_75 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 25/02/2007, 12h38
  4. Afficher des caractères et leur code ASCII
    Par hamada_10 dans le forum Pascal
    Réponses: 8
    Dernier message: 26/12/2006, 19h38
  5. [ImageMagick] Mon image affiche des caractères étranges
    Par renaud26 dans le forum Bibliothèques et frameworks
    Réponses: 14
    Dernier message: 17/03/2006, 17h37

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