Inerrer une photo dans une base de donne mysql et afficher les photos

Signaler
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013
-
Messages postés
2
Date d'inscription
mardi 23 novembre 2010
Statut
Membre
Dernière intervention
16 juin 2011
-
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: quand je click sur envoyer rien ne s'inserre dans la base de donnée .
de plus rien ne s'affiche duand j'execute apercu .on met 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>



<?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 'L insertion s\'est bien déroulée !
';
}
}
}
}
?>

Envoyer une image

<form enctype="multipart/form-data" action="" method="post">

<label for="nom">Nom : </label>

<label for="description">Description : </label><textarea name="description" id="description" rows="10" cols="50"></textarea>

<label for="image">Image : </label>

<label for="validation">Valider : </label>


</form>
<form action="galerie.php" method="post">




</form>


</html>


--------------------------------------------------------------------------------------
apercu.php

-------------------------------------------------------------------------------------------

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>



<?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 !';
?>




</html>

-------------------------------------------------------------------------------------------------
galerie.php
--------------------------------------------------------------------------------------------------

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>



<?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 !';
?>




</html>

5 réponses

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
bonsoir

ton champs dans la table est de type blob ?
est si c'est le cas as tu quelques chose dans
la base dans le dit champs

pourquoi ne pas uploader l'image dans un répertoire et mettre le lien
dans la base tu gagnes de la place dans la table


Bonne programmation !
Messages postés
229
Date d'inscription
lundi 2 août 2010
Statut
Membre
Dernière intervention
25 juillet 2013

oui le champs est du type blob .
et il y a bien quelque chose dedans .
aidez moi svp
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
re
voilà j'ai bricolé ça
ça fonctionne tu as plus
qu'a adapter
a++

<?php
/*
-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Jeu 02 Juin 2011 à 23:52
-- Version du serveur: 5.1.36
-- Version de PHP: 5.2.11

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de données: `a`
--

-- --------------------------------------------------------

--
-- Structure de la table `upload`
--

CREATE TABLE IF NOT EXISTS `upload` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) NOT NULL,
  `type` varchar(30) NOT NULL,
  `size` int(11) NOT NULL,
  `content` mediumblob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Contenu de la table `upload`
--
*/

if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName  = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

$fp      = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

if(!get_magic_quotes_gpc())
{
    $fileName = addslashes($fileName);
}
mysql_connect('localhost','root','');
mysql_select_db('a');
$query = "INSERT INTO upload (name, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
mysql_query($query) or die('Error, query failed'); 
mysql_close();
echo "
File $fileName uploaded
";
} 
?>
<html>
<head>
<title>Download File From MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<form method="post" action="" enctype="multipart/form-data">

,


</form>

<?php
mysql_connect('localhost','root','');
mysql_select_db('a');
$query = "SELECT id,name FROM upload";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
echo "Database is empty 
";
} 
else
{
while(list($id,$name) = mysql_fetch_array($result))
{
echo '';
echo '
';
echo '[voir.php?id='.$id.' '.$name.'] 
';
echo '<hr>';
}
}
mysql_close(); 
?>

</html>



voir.php

<?php
if(isset($_GET['id'])){
$id=$_GET['id'];
mysql_connect('localhost','root','');
mysql_select_db('a');
$query="SELECT name, type, size, content FROM upload WHERE id='".$id."' limit 1";
$result = mysql_query($query) or die('Error, query failed');
$file=list($name, $type, $size, $content)=mysql_fetch_array($result);
mysql_close();
//header("Content-length: $size");
//header("Content-type: $type");
//header("Content-Disposition: attachment; filename=$name");
//echo $content;
//print_r($file);
echo $file[3];
}else{
}  
?>

Bonne programmation !
Messages postés
2
Date d'inscription
mardi 23 novembre 2010
Statut
Membre
Dernière intervention
16 juin 2011

Messages postés
2
Date d'inscription
mardi 23 novembre 2010
Statut
Membre
Dernière intervention
16 juin 2011

oui meme probleme pr moi