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

msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013 - 1 juin 2011 à 15:35
nejibgunner Messages postés 2 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 16 juin 2011 - 16 juin 2011 à 18:42
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

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
2 juin 2011 à 21:56
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 !
0
msi079 Messages postés 212 Date d'inscription lundi 2 août 2010 Statut Membre Dernière intervention 25 juillet 2013
2 juin 2011 à 22:13
oui le champs est du type blob .
et il y a bien quelque chose dedans .
aidez moi svp
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
2 juin 2011 à 23:57
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 !
0
nejibgunner Messages postés 2 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 16 juin 2011
16 juin 2011 à 18:41
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nejibgunner Messages postés 2 Date d'inscription mardi 23 novembre 2010 Statut Membre Dernière intervention 16 juin 2011
16 juin 2011 à 18:42
oui meme probleme pr moi
0
Rejoignez-nous