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

PHP & Base de données Discussion :

Insérer image dans ma page [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 52
    Points
    52
    Par défaut Insérer image dans ma page
    Bonjour,
    Voilà le souci :

    J'ai une BDD dans laquelle je stock mes images de la façon suivante:

    Ma fonction :
    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
    27
    28
    29
    30
    31
    32
    33
    function transfert ()
    {
    	$ret = false;
    	$img_blob = '';
    	$img_taille = 0;
    	$img_nom= '';
    	$taille_max = 250000;
     
    	$ret = is_uploaded_file ($_FILES['fic']['tmp_name']);
    	if(!$ret)
    	{
    		echo"Problème de transfert";
    		return false;
    	}
    	else
    	{
    		//le fichier a bien été reçu
    		$img_taille = $_FILES['fic']['size'];
    		if($img_taille > $taille_max)
    		{
    			echo "Fichier trop volumineux!";
    			return false;
    		}
    		$img_type = $_FILES['fic']['type'];
    		$img_nom1 = $_FILES['fic']['name'];
    		$img_nom = htmlspecialchars($img_nom1,ENT_QUOTES);
    		$img_blob = file_get_contents ($_FILES['fic']['tmp_name']);
     
    		$req = "insert into image ("."image_nom, image_taille,image_type, image_blob".") values ("."'".$img_nom."', "."'".$img_taille."', "."'".$img_type."', "."'".addslashes($img_blob)."')";	
    		$ret = mysql_query ($req) or die (mysql_error());
    		return true;
    	}
    };
    Et mon formulaire pour l'insertion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (isset($_FILES['fic']))
    							{
    								transfert();
    							}
    						echo"<form enctype='multipart/form-data' action='#' method='POST'>
    							<input type='hidden' name='max_file_size' value='250000'>
    							<input type='file' name='fic' size=50>
    							<input type='submit' value='Envoyer'>
    						</form>

    Voilà, mais après ça, je passe sur une autre page pour insérer d'autres données et j'aimerais que l'image y apparaisse...
    J'ai donc fait une fonction pour récupérer la dernière image que je viens d'ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //affichage d'une image
    function affiche_image()
    {
    	$result = mysql_query("select image_id, image_nom image_type, image_blob from image where image_id = 
    	(select max(image_id) from image);") or die (mysql_error());
    	$resultat = mysql_fetch_row($result);
    	return ($resultat);
    };
    Mais je ne sais pas comment afficher l'image sur ma page maintenant
    Vous pouvez m'aider ??

  2. #2
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    c'est pas une fonction qu'il faut que tu fasses pour afficher l'image, ou pour retourner le code de l'image. c'est une page php entière!

    cette page tu l'appellera comme ci dessous :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="affiche_img.php?id_image=124" />


    ton fichier affiche_img.php ne devra resortir qu'une seule données décodé sous cette forme :
    echo base64_decode($encodeddata);

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Ah oui ça je me doute bien ^^

    Là je récupérais juste l'identifiant de l'image que je souhaitais afficher (enfin c'était surtout pour ça)...


    M'enfin, je veux bien créer une page php pour appeller mon image, mais je sais pas bien comment faire

  4. #4
    Membre averti Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Points : 359
    Points
    359
    Par défaut
    Le meiux je pense est de stocker dans ta bdd que le chemin de l'image... comme ça l'affichage est beaucoup plus simple enfin je pense..

  5. #5
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    complètement, de toute façon c'est généralement déconseillé de stocker des fichiers en base de données, c'est lent

  6. #6
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Ben en fait je me base par rapport à un dossier que j'ai trouvé sur le net, qui est très bien fait... mais dont le résultat n'est pas là

    Ma page que j'ai nommé apercutest.php ressemble à ça

    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
     
    		if ( isset($_GET['id']) );
    		{
    			$id = intval ($_GET['id']);
     
    			$req = "select image_id, image_type, image_blob
    			from image where image_id = ".$id;
    			$ret = mysql_query($req) or die (mysql_error());
    			$col = mysql_fetch_row($ret);
     
    			if (!$col[0])
    			{
    				echo"bippp";
    			}
    			else
    			{
    				header("Content-type: ".$col[1]);
    				echo $col[2];
    			}
    		}
    Je vous ai fait grâce de la connexion à ma base, qui fonctionne ^^

    ça me ressort ça : http://localhost/Test/apercutest.php?id=28

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Hummmm ok... vu votre enthousiasme pour ma méthode, j'crois que je vais tenter d'adopter la votre

    Mais là je vais avoir besoin d'aide parce que d'une, il faut que je sache comment faire pour stocker le chemin de l'image (et savoir comment obtenir ce chemin via du code). Et de deux, il faut que je sache comment l'afficher, bien qu'à ce que je vois, ça soit le plus simple ^^

    Merci d'être dispo pour moi, c'est cool... j'espère me coucher moins bête ce soir

  8. #8
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    la page si tu l'appelle dans un navigateur ca n'a aucun interet!

    cette page il faut que tu l'apelle dans une balise image!

    comme ce que je t'ai écrit plus haut !



    et essaye de remplacer

    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo base64_decode($col[2]);

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    Alors,

    Ce que je souhaite, c'est afficher mon image avec le plus grand identifiant, soit ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //affichage d'une image
    function affiche_image()
    {
    	$result = mysql_query("select image_id, image_type, image_blob from image where image_id = 
    	(select max(image_id) from image);") or die (mysql_error());
    	$resultat= mysql_fetch_array($result);
    	return($resultat);
    };
    Elle me retourne très bien mon plus grand identifiant.

    J'ai alors ma page nommée suite.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ret = affiche_image();
    			$id = $ret['image_id'];
    			echo $id;
    				echo"<img src='apercutest.php?id_image=".$id."' />";
    Et ma page apercutest.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
    19
    20
    21
    if (strcmp($indic_result_connexion,'ok')==0)
    	{
    		if ( isset($_GET['id']) );
    		{
    			$id = intval ($_GET['id']);
     
    			$req = "select image_id, image_type, image_blob
    			from image where image_id = ".$id;
    			$ret = mysql_query($req) or die (mysql_error());
    			$col = mysql_fetch_row($ret);
     
    			if (!$col[0])
    			{
    				echo"bippp";
    			}
    			else
    			{
    				header("Content-type: ".$col[1]);
    				base64_decode($col[2]);
    			}
    		}

    ça me donne un joli petit carré comme quand une image veut pas s'afficher

  10. #10
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    Citation Envoyé par Erwan M. Voir le message
    Alors,

    Et ma page apercutest.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
    19
    20
    21
    if (strcmp($indic_result_connexion,'ok')==0)
    	{
    		if ( isset($_GET['id']) );
    		{
    			$id = intval ($_GET['id']);
    			
    			$req = "select image_id, image_type, image_blob
    			from image where image_id = ".$id;
    			$ret = mysql_query($req) or die (mysql_error());
    			$col = mysql_fetch_row($ret);
    			
    			if (!$col[0])
    			{
    				echo"bippp";
    			}
    			else
    			{
    				//header("Content-type: ".$col[1]);
    				echo base64_decode($col[2]);
    			}
    		}



    ça me donne un joli petit carré comme quand une image veut pas s'afficher
    essaye ca

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    ça me donne la même chose

    Par contre, peux-tu me dire à quoi sert cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id = intval ($_GET['id']);

  12. #12
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    si ton identifiant est en zerofill il va te supprimer les zero, c'est tout ce que ca va faire

    ou supprimer les virgules, mais un auto_increment ne peut pas incrementer un float.

    en gros les identifiants : 0002 deviennent 2

    inutile donc si tu as des identifiants qui sont déjà de la forme : 2,3,4...

  13. #13
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 80
    Points : 52
    Points
    52
    Par défaut
    OK merci pour l'info

    Mais du coup, dans ma page apercutest.php, $id ne contient rien dans ma requête ??

    EDIT : j'crois que j'ai dit une connerie ^^


    Tu vois pas comment je pourrais faire pour l'afficher correctement ??

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

Discussions similaires

  1. insérer une image dans une page JSP
    Par imen1986 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 17/04/2010, 12h35
  2. Réponses: 4
    Dernier message: 08/05/2008, 16h07
  3. actualisation d'une image dans ma page
    Par jack_1981 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/08/2006, 14h45
  4. [MySQL] insérer image dans bdd grace a un formulaire
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 14/03/2006, 08h34
  5. [DEBUTANT][HTML] affichage d'une image dans une page
    Par nimport nawak dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 12/04/2005, 19h50

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