Afficher une image stockée dans ma bd
msi79
Messages postés
537
Statut
Membre
-
msi79 Messages postés 537 Statut Membre -
msi79 Messages postés 537 Statut Membre -
salut a tous !
je voudrais que les visiteurs de mon site puisseent enregeistrer leur photo dans la base de donnée et ensuite afficher ses photos .
mais je n'arrive pas.
alors je voudrais une aide svp .
merci de bien vouloir m'aider .
NB:
rien ne s'affiche quand j'execute apercu.php .on me met :Vous n avez pas sélectionné d image !
voici mon code :
------------------------------------------------------------------------------------------
image.php
-------------------------------------------------------------------------------------------
<head>
<title>Envoyer une image</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
label {
display:block;
width:150px;
float:left;
}
</style>
</head>
<body>
<?php
if(isset($_POST['validation'])) {
//Indique si le fichier a été téléchargé
if(!is_uploaded_file($_FILES['image']['tmp_name']))
echo 'Un problème est survenu durant l opération. Veuillez réessayer !';
else {
//liste des extensions possibles
$extensions = array('/png', '/gif', '/jpg', '/jpeg');
//récupère la chaîne à partir du dernier / pour connaître l'extension
$extension = strrchr($_FILES['image']['type'], '/');
//vérifie si l'extension est dans notre tableau
if(!in_array($extension, $extensions))
echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg.';
else {
//on définit la taille maximale
define('MAXSIZE', 300000);
if($_FILES['image']['size'] > MAXSIZE)
echo 'Votre image est supérieure à la taille maximale de '.MAXSIZE.' octets';
else {
//on se connecte (remplacer les paramètres de connexion)
$connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
$database = mysql_select_db("go&ga") or exit (mysql_error());
//récupération des infos saisies
$nom = mysql_escape_string($_POST['nom']);
$description = mysql_escape_string($_POST['description']);
//Lecture du fichier. On doit utiliser la fonction mysql_escape_string car les données binaires contiennent des caractères spéciaux.
$image = mysql_escape_string(file_get_contents($_FILES['image']['tmp_name']));
//Il ne reste qu'à insérer tout ça dans notre table.
mysql_query("INSERT INTO images(nom, description, img, extension) VALUES('".$nom."', '".$description."', '".$image."', '".$_FILES['image']['type']."')") or exit (mysql_error());
mysql_close();
echo '<h3>L insertion s\'est bien déroulée !</h3>';
}
}
}
}
?>
<h1>Envoyer une image</h1>
<form enctype="multipart/form-data" action="" method="post">
<p>
<label for="nom">Nom : </label><input type="text" name="nom" id="nom" /><br />
<label for="description">Description : </label><textarea name="description" id="description" rows="10" cols="50"></textarea><br />
<label for="image">Image : </label><input type="file" name="image" id="image" /><br />
<label for="validation">Valider : </label><input type="submit" name="validation" id="validation" value="Envoyer" />
</p>
</form>
<form action="galerie.php" method="post">
<p>
<input type="submit" name="validation" value="image" />
</p>
</form>
</body>
</html>
--------------------------------------------------------------------------------------
apercu.php
-------------------------------------------------------------------------------------------
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<?php
//si nous avons une image
if(!empty($_GET['id_img'])) {
//connexion à la base de données
$connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
$database = mysql_select_db("go&ga")or exit (mysql_error());
//on sécurise notre donnée
$idImg = intval($_GET['id_img']);
//la requète qui récupère l'image à partir de l'identifiant
$apercu = mysql_query("SELECT extension, img FROM images WHERE id_img = ".$idImg) or exit (mysql_error());
//si le résultat est différent de 1
if(mysql_num_rows($apercu) != 1)
echo 'L image n existe pas !';
else {
//on stocke les données dans un tableau
$reponse = mysql_fetch_assoc($apercu);
//on indique qu'on affiche une image
header ("Content-type: ".$reponse['extension']);
//on affiche l'image en elle même
echo $reponse['img'];
}
mysql_close();
} else
echo 'Vous n avez pas sélectionné d image !';
?>
</body>
</html>
-------------------------------------------------------------------------------------------------
galerie.php
--------------------------------------------------------------------------------------------------
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<?php
//si nous avons une image
if(!empty($_GET['id_img'])) {
//connexion à la base de données
$connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
$database = mysql_select_db("go&ga")or exit (mysql_error());
//on sécurise notre donnée
$idImg = intval($_GET['id_img']);
//la requète qui récupère l'image à partir de l'identifiant
$apercu = mysql_query("SELECT extension, img FROM images WHERE id_img = ".$idImg) or exit (mysql_error());
//si le résultat est différent de 1
if(mysql_num_rows($apercu) != 1)
echo 'L image n existe pas !';
else {
//on stocke les données dans un tableau
$reponse = mysql_fetch_assoc($apercu);
//on indique qu'on affiche une image
header ("Content-type: ".$reponse['extension']);
//on affiche l'image en elle même
echo $reponse['img'];
}
mysql_close();
} else
echo 'Vous n avez pas sélectionné d image !';
?>
</body>
</html>
je voudrais que les visiteurs de mon site puisseent enregeistrer leur photo dans la base de donnée et ensuite afficher ses photos .
mais je n'arrive pas.
alors je voudrais une aide svp .
merci de bien vouloir m'aider .
NB:
rien ne s'affiche quand j'execute apercu.php .on me met :Vous n avez pas sélectionné d image !
voici mon code :
------------------------------------------------------------------------------------------
image.php
-------------------------------------------------------------------------------------------
<head>
<title>Envoyer une image</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
label {
display:block;
width:150px;
float:left;
}
</style>
</head>
<body>
<?php
if(isset($_POST['validation'])) {
//Indique si le fichier a été téléchargé
if(!is_uploaded_file($_FILES['image']['tmp_name']))
echo 'Un problème est survenu durant l opération. Veuillez réessayer !';
else {
//liste des extensions possibles
$extensions = array('/png', '/gif', '/jpg', '/jpeg');
//récupère la chaîne à partir du dernier / pour connaître l'extension
$extension = strrchr($_FILES['image']['type'], '/');
//vérifie si l'extension est dans notre tableau
if(!in_array($extension, $extensions))
echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg.';
else {
//on définit la taille maximale
define('MAXSIZE', 300000);
if($_FILES['image']['size'] > MAXSIZE)
echo 'Votre image est supérieure à la taille maximale de '.MAXSIZE.' octets';
else {
//on se connecte (remplacer les paramètres de connexion)
$connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
$database = mysql_select_db("go&ga") or exit (mysql_error());
//récupération des infos saisies
$nom = mysql_escape_string($_POST['nom']);
$description = mysql_escape_string($_POST['description']);
//Lecture du fichier. On doit utiliser la fonction mysql_escape_string car les données binaires contiennent des caractères spéciaux.
$image = mysql_escape_string(file_get_contents($_FILES['image']['tmp_name']));
//Il ne reste qu'à insérer tout ça dans notre table.
mysql_query("INSERT INTO images(nom, description, img, extension) VALUES('".$nom."', '".$description."', '".$image."', '".$_FILES['image']['type']."')") or exit (mysql_error());
mysql_close();
echo '<h3>L insertion s\'est bien déroulée !</h3>';
}
}
}
}
?>
<h1>Envoyer une image</h1>
<form enctype="multipart/form-data" action="" method="post">
<p>
<label for="nom">Nom : </label><input type="text" name="nom" id="nom" /><br />
<label for="description">Description : </label><textarea name="description" id="description" rows="10" cols="50"></textarea><br />
<label for="image">Image : </label><input type="file" name="image" id="image" /><br />
<label for="validation">Valider : </label><input type="submit" name="validation" id="validation" value="Envoyer" />
</p>
</form>
<form action="galerie.php" method="post">
<p>
<input type="submit" name="validation" value="image" />
</p>
</form>
</body>
</html>
--------------------------------------------------------------------------------------
apercu.php
-------------------------------------------------------------------------------------------
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<?php
//si nous avons une image
if(!empty($_GET['id_img'])) {
//connexion à la base de données
$connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
$database = mysql_select_db("go&ga")or exit (mysql_error());
//on sécurise notre donnée
$idImg = intval($_GET['id_img']);
//la requète qui récupère l'image à partir de l'identifiant
$apercu = mysql_query("SELECT extension, img FROM images WHERE id_img = ".$idImg) or exit (mysql_error());
//si le résultat est différent de 1
if(mysql_num_rows($apercu) != 1)
echo 'L image n existe pas !';
else {
//on stocke les données dans un tableau
$reponse = mysql_fetch_assoc($apercu);
//on indique qu'on affiche une image
header ("Content-type: ".$reponse['extension']);
//on affiche l'image en elle même
echo $reponse['img'];
}
mysql_close();
} else
echo 'Vous n avez pas sélectionné d image !';
?>
</body>
</html>
-------------------------------------------------------------------------------------------------
galerie.php
--------------------------------------------------------------------------------------------------
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<?php
//si nous avons une image
if(!empty($_GET['id_img'])) {
//connexion à la base de données
$connexion = mysql_connect("localhost", "root", "") or exit (mysql_error());
$database = mysql_select_db("go&ga")or exit (mysql_error());
//on sécurise notre donnée
$idImg = intval($_GET['id_img']);
//la requète qui récupère l'image à partir de l'identifiant
$apercu = mysql_query("SELECT extension, img FROM images WHERE id_img = ".$idImg) or exit (mysql_error());
//si le résultat est différent de 1
if(mysql_num_rows($apercu) != 1)
echo 'L image n existe pas !';
else {
//on stocke les données dans un tableau
$reponse = mysql_fetch_assoc($apercu);
//on indique qu'on affiche une image
header ("Content-type: ".$reponse['extension']);
//on affiche l'image en elle même
echo $reponse['img'];
}
mysql_close();
} else
echo 'Vous n avez pas sélectionné d image !';
?>
</body>
</html>
A voir également:
- Afficher une image stockée dans ma bd
- Légender une image - Guide
- Image iso - Guide
- Frédéric cherche à faire le buzz sur les réseaux sociaux. il a ajouté une image d’ours polaire sur une image de plage. retrouvez l'image originale de la plage. que cache l'ours polaire ? - Forum Graphisme
- Reduire taille image - Guide
- Afficher toutes les lignes masquées excel ✓ - Forum Excel
22 réponses
Salut,
Il y'a trop de chose pour être analyser et vérifié (pour ma part en tout cas).
En revanche, pour le nombre et le contenu de tes commentaires afin de nous faciliter la lecture, je dis GG ;)
En revanche, je vois 4 choses :
-Ce n'est peut être pas possible selon l'avancement du site, mais un passage du mysql au pdo me semble être crucial.
-Je ne comprend pas comment tu souhaites afficher la photo en question et si il peut y'en avoir plusieurs par utilisateurs.
-La variable $_GET['id_img'] vient d'ou ?
-Je trouve ca vraiment complexe comme code pour récupérer et afficher une image stocké dans une BDD. Dans un premier temps, as tu essayer de simplifier le code au maximum et voir si l'image s'affiche ?
Il y'a trop de chose pour être analyser et vérifié (pour ma part en tout cas).
En revanche, pour le nombre et le contenu de tes commentaires afin de nous faciliter la lecture, je dis GG ;)
En revanche, je vois 4 choses :
-Ce n'est peut être pas possible selon l'avancement du site, mais un passage du mysql au pdo me semble être crucial.
-Je ne comprend pas comment tu souhaites afficher la photo en question et si il peut y'en avoir plusieurs par utilisateurs.
-La variable $_GET['id_img'] vient d'ou ?
-Je trouve ca vraiment complexe comme code pour récupérer et afficher une image stocké dans une BDD. Dans un premier temps, as tu essayer de simplifier le code au maximum et voir si l'image s'affiche ?
Ton code est pas DU TOUT securisé...
Pour les upload mieux vaut verifier les header (MIME) plutot que l'extention, et renommer systematiquement.
ensuite les mysql_* c'est deprecated.... Il faut utiliser PDO
Pour les upload mieux vaut verifier les header (MIME) plutot que l'extention, et renommer systematiquement.
ensuite les mysql_* c'est deprecated.... Il faut utiliser PDO
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
quelqu'un peut il reecrire mon code pour moi et faire les corrections necessaires.
merci d'avance.
je suis nouvo en php
merci d'avance.
je suis nouvo en php
Tu peu pas stocker un fichier dans une base de donnée ;) Enfin pas une SQL, le SQL c'est pour le texte ou les nombres, mais au final c'est du texte aussi ^^ ou le texte est nombre plutot... lol dsl je part dans mes delire ^^
mysql_query("INSERT INTO images(nom, description, img, extension) VALUES('".$nom."', '".$description."', '".$image."', '".$_FILES['image']['type']."')") or exit (mysql_error());
mysql_close();
Ca ca ne fait rien, a par inserer le nom de l'image et le chemin d'acces sur ton serveur.
Avec PHP il faut que tu deplace le fichier dans un dossier et ensuite pour afficher l'image tu met le chemin relatif dans une balise <img> :)
mysql_query("INSERT INTO images(nom, description, img, extension) VALUES('".$nom."', '".$description."', '".$image."', '".$_FILES['image']['type']."')") or exit (mysql_error());
mysql_close();
Ca ca ne fait rien, a par inserer le nom de l'image et le chemin d'acces sur ton serveur.
Avec PHP il faut que tu deplace le fichier dans un dossier et ensuite pour afficher l'image tu met le chemin relatif dans une balise <img> :)
Je veux savoir comment il stock les infos dans sa bdd et pour moi un screen est plus parlant que du texte ^_^
msi79, désolé mais je n'ai pas le temps de lire, comprendre et réécrire ton code.
Tout ce que je peux faire, c'est te conseiller...
Déja, quitte à apprendre le PHP, abandonne mysql et apprend le PDO
Pour ce faire, le site du zéro est parfait pour les bases voir plus ;)
Bon courage
msi79, désolé mais je n'ai pas le temps de lire, comprendre et réécrire ton code.
Tout ce que je peux faire, c'est te conseiller...
Déja, quitte à apprendre le PHP, abandonne mysql et apprend le PDO
Pour ce faire, le site du zéro est parfait pour les bases voir plus ;)
Bon courage
Dr.W : oui je vois . je pense que c'est ce que j'ai fais . mais comment faire pour afficher les images
Ok une fois que tu a le chemin d'acces de l'image sur ton serveur (en faisant un SELECT sur ta BDD), dison que tes images soit dans: /img
tu fais:
echo '<img src="'.$LE_RESULTAT_DE_TA_REQUETE_SQL_QUI_CONTIENT_LE_CHEMIN_DACCES_AU_FICHIER_SUR_TON_SERVEUR.'"/>'
Où $LE_RESULTAT.... = un truc du genre "/img/lenomdelimage.jpg"
tu fais:
echo '<img src="'.$LE_RESULTAT_DE_TA_REQUETE_SQL_QUI_CONTIENT_LE_CHEMIN_DACCES_AU_FICHIER_SUR_TON_SERVEUR.'"/>'
Où $LE_RESULTAT.... = un truc du genre "/img/lenomdelimage.jpg"
Dr.W :: pardon je sais que je demande trop mais peux tu regarder mon code au dessus et rectifier pour moi .
je suis tres debutant donc vraiment je compprend pas
grand chose
je suis tres debutant donc vraiment je compprend pas
grand chose