bonjour :
je suis entrain de créer une galerie photo avec php/mysql et j'aimeria bien que vous me corriger le code si il ya des fautes, et une chose que je veus bien si si possible c'est comment fiare un lien au-dessus des images se lien permettre de supprimer l'image de la base de données.
voila les codes de chaque page :
la page ajout.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<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>
<h1>Envoyer une image</h1>
<form enctype="multipart/form-data" action="traitement.php" 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>
</body>
</html>
la page traitement.php
Code PHP :
<?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("tata") 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 !';
}
}
}
}
?>
la page apercu.php
Code PHP :
<?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("BASE")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 !';
?>
et la page final galerie.php
Code PHP :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Ma galerie d'images</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
body {
width: 95%;
}
div {
width: 22%;
float: left;
text-align: center;
border: 1px solid black;
margin: 5px;
padding: 5px;
}
p {
text-align: left;
}
a {
color: #000000;
text-decoration: none;
}
</style>
</head>
<body>
<h1>Ma galerie d'images</h1>
<?php
$connexion = mysql_connect("localhost", "root", "") or
exit (mysql_error());
$database = mysql_select_db("images") or
exit (mysql_error());
$affichage = mysql_query("SELECT id_img, nom, description FROM images") or
exit (mysql_error());
while($result = mysql_fetch_assoc($affichage)) {
echo '<div>';
echo '<a href="apercu.php?id_img='.$result[id_img
].'"><img src="apercu.php?id_img='.$result[id_img
].'" alt="'.$result[nom
].'" title="'.$result[nom
].'" /></a>';
echo '<p>Description : '.$result["description"].'</p>';
echo '</div>';
}
mysql_close();
?>
</body>
</html>
et voila la base "images" que j'ai créer :
CREATE TABLE `images` (
`id_img` INT NOT NULL AUTO_INCREMENT,
`nom` VARCHAR(50) NOT NULL,
`description` text NOT NULL,
`img` BLOB NOT NULL,
`extension` VARCHAR(25) NOT NULL,
PRIMARY KEY (`id_img`)
)
J 'attend une reponse et un aide
merci beaucoup
Edit modo : avec la colorisation du code c'est mieux, un wall serait parfait....