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

Langage PHP Discussion :

Récupération/affichage type BLOB d'une base de données


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant en Web dev
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Etudiant en Web dev

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Récupération/affichage type BLOB d'une base de données
    Bonjour,
    ça fait environ un mois que j'essaie en vain de gérer le stockage puis l'affichage de types BLOB (images au format .png ou .jpeg, et des PDF) qui doivent être uplaodés sur ma BDD (je sais que c'est une mauvaise idée, mais mon laps de temps m'empêche d'aller vers une autre solution plus adéquate).

    Je parviens à insérer une image sur la base de bonnée grâce à ce code :
    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
    if(is_uploaded_file($_FILES['img']['tmp_name']))
    		{
    			$imgData =addslashes(file_get_contents($_FILES['img']['tmp_name']));
    			$imageProperties = getimageSize($_FILES['img']['tmp_name']);
    		}
     
    /* .... */
     
    $req = $bdd->prepare("INSERT INTO actu(titre, contenu, position, imageType, imageData) VALUES(:titre, :contenu, :position, :imgType, :imgData)");
    		$req->execute(array(
    			'titre' => $titre,
    			'contenu' => $contenu_modifie,
    			'position' => $position,
    			'imgType' => $imageProperties['mime'],
    			'imgData' => $imgData
    			));
    Malheureusement la lecture du binaire est plus compliquée, j'ai suivi divers tutos et j'obtiens ce code, qui ne m'affiche rien:

    Le fichier de récupération du BLOB:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php 
    include("connexion.php");
    if(isset($_GET['im_id']))
    {
    	$getid = intval($_GET['im_id']);
    	$req2 = "SELECT id, imageType, imageData FROM actu WHERE id=" . $getid;
    	$bdd->query($req2);
    	while($row = $req2->fetch())
    	{
    		header("Content-type: " . $row['imageType']);
    		echo $row['imageData'];
    	}
    }?>
    et dans ma page d'actualités, voici la ligne correspondante qui devrait afficher l'image:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php if($actu['imageType'] != NULL)
    		{?>	
    			<div class="col-md-4">
    				<img class="img-responsive" src="imageView.php?im_id=<?php echo $actu['id']; ?>" alt="" />
    		        </div>
    		<?php }?>
    Si quelqu'un a une idée sur l'origine du problème, ou directement une solution, n'hésitez pas...

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà retire ton addslashes() dans le premier code.

    Concernant ton code de lecture, si tu enlèves le header() tu ne vois rien non plus ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Etudiant en Web dev
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Etudiant en Web dev

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Déjà retire ton addslashes() dans le premier code.

    Concernant ton code de lecture, si tu enlèves le header() tu ne vois rien non plus ?
    Ni l'un ni l'autre ne change quoi que ce soit... Rien ne s'affiche
    Pourquoi supprimer le addslashes ?

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    Vous devriez vérifier cela parce que quand vous utilisez le code "$req2->fetch()", $req2 n'est pas un objet donc vous devriez voir le message d'une erreur fatale qui bloque l'exécution du code.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi supprimer le addslashes ?
    Pourquoi le mettre ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Candidat au Club
    Homme Profil pro
    Etudiant en Web dev
    Inscrit en
    Août 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Etudiant en Web dev

    Informations forums :
    Inscription : Août 2017
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par mathieu Voir le message
    Vous devriez vérifier cela parce que quand vous utilisez le code "$req2->fetch()", $req2 n'est pas un objet donc vous devriez voir le message d'une erreur fatale qui bloque l'exécution du code.
    Un million de fois merci, au bout de 3 semaines ça marche enfin... En effet ça marche mieux quand c'est un objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    include("connexion.php");
    if(isset($_GET['id']))
    {
    	$getid = intval($_GET['id']);
    	$req2 = "SELECT id, imageType, imageData FROM actu WHERE id=" . $getid;
    	$allo = $bdd->query($req2);
    	while($row = $allo->fetch())
    	{
    		header("Content-type: " . $row['imageType']);
    		echo $row['imageData'];
    	}
    }?>

Discussions similaires

  1. affichages des données blob d'une base de données mysql
    Par free_01_binairy dans le forum VB.NET
    Réponses: 2
    Dernier message: 01/08/2014, 10h23
  2. Type BLOB depuis une base de données Oracle
    Par tunis71187 dans le forum Designer
    Réponses: 0
    Dernier message: 13/06/2011, 12h25
  3. [Joomla!] Insérer une image de type blob dans la base de données Joomla coding
    Par h.hassal dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 12/06/2010, 18h52
  4. [MySQL] Récupération de code php dans une base de données
    Par kitana dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/03/2006, 00h25
  5. Champs de type XML dans une base de données
    Par Flocodoupoil dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 07/07/2004, 18h57

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