photo dans BDD
Posté : 16 févr. 2011, 19:11
bonjour
Je souhaite rajouter des photos dans ma bdd, mais j'avoue ne pas maitriser.
le client se connecte par un formulaire ou il donne son id et son mot de passe
puis il doit pouvoir charger sa photo.
J'ai cherché des scripts et j'ai trouvé celui de damienalexandre.fr qui me convenait tout à fait
Après l"étude de quelques tutos, j'ai modifié le script comme ci après.
message d'erreur suivant
(Array ( [name] => graph.jpg [type] => image/jpeg [tmp_name] => /var/log/tmp/phposNVRw [error] => 0 [size] => 4629 )
Warning: move_uploaded_file(img/graph.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /homez.110/creditsr/www/photo.php on line 119
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/var/log/tmp/phposNVRw' to 'img/graph.jpg' in /homez.110/creditsr/www/photo.php on line 119
* Impossible d'uploader le fichier.
Veuillez vérifier que le dossier img/ existe avec un chmod 755 (ou 777).)
j'ai créé photo1 dans ma bdd en blob.
Je n'y comprends que dalle !!!
Les erreurs sont surement simples mais le débutant que je suis ne les trouve pas
merci de votre aide
Je souhaite rajouter des photos dans ma bdd, mais j'avoue ne pas maitriser.
le client se connecte par un formulaire ou il donne son id et son mot de passe
puis il doit pouvoir charger sa photo.
J'ai cherché des scripts et j'ai trouvé celui de damienalexandre.fr qui me convenait tout à fait
Après l"étude de quelques tutos, j'ai modifié le script comme ci après.
[php]<?php
session_start();
/**
* Script d'upload d'image PHP
* http://damienalexandre.fr/
* Novembre 2007 - v1.3
* http://damienalexandre.fr/Upload-d-image-en-PHP.html
*/
$db = mysql_connect(XXXX', 'XXXX', 'XXXX') or die('Erreur de connexion '.mysql_error());
// sélection de la base
mysql_select_db('XXXX',$db) or die('Erreur de selection '.mysql_error());
$sql="SELECT * FROM client WHERE id = '".$_REQUEST['id']."'";
$resultat=mysql_query($sql) or die("Erreur SQL : $sql<br/>".mysql_error());
$client = mysql_fetch_array ($resultat) ;
$photo1=$_POST['photo1'];
$id=$client['id'];
$dossier= $client['dossier'];
if ($_POST['id'] !== $id or $_POST['motdepasse'] !==$dossier)
{header("location: index.php");}
if ($_REQUEST['envoi']=="envoyer")
{
$sql="UPDATE client SET
photo1='$photo1'
WHERE id='".$_REQUEST['id']."'";
mysql_query ($sql);
echo mysql_error();
}
function get_extension($nom) {
$nom = explode(".", $nom);
$nb = count($nom);
return strtolower($nom[$nb-1]);
}
// --------------------- Options diverses //
// Extensions images autorisé (pour le moment, que du jpeg)
$extensions_ok = array('jpg', 'jpeg');
// MimeType autorisé
/* 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF, 5 = PSD, 6 = BMP, 7 = TIFF (Ordre des octets Intel), 8 = TIFF (Ordre des octets Motorola), 9 = JPC, 10 = JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF */
$typeimages_ok = array(2);
$taille_ko = 1024; // Taille en kilo octect (ko)
$taille_max = $taille_ko*1024; // En octects
$dest_dossier = 'img/'; // Creez ce dossier et chmoodez le !
print_r($_FILES['photo']);
if(isset($_FILES['photo'])) // Formulaire envoyé
{
// Les erreurs que PHP renvoi
if($_FILES['photo']['error'] !== "0") {
switch ($_FILES['photo']['error']) {
case 1:
$erreurs[] = "Votre image doit faire moins de $taille_ko Ko !";
break;
case 2:
$erreurs[] = "Votre image doit faire moins de $taille_ko Ko !";
break;
case 3:
$erreurs[] = "L'image n'a été que partiellement téléchargé.";
break;
case 4:
$erreurs[] = "Aucun fichier n'a été téléchargé.";
break; // Pas de 5, ne pas demander pourquoi ^^ (voir doc PHP)
case 6:
$erreur[] = "Un dossier temporaire est manquant.";
break;
case 7:
$erreurs[] = "Échec de l'écriture du fichier sur le disque.";
break;
}
}
// getimagesize arrive à traiter le fichier ?
if(!$getimagesize = getimagesize($_FILES['photo']['tmp_name'])) {
$erreurs[] = "Le fichier n'est pas une image valide.";
}
// on vérifie le type de l'image
if( (!in_array( get_extension($_FILES['photo']['name']), $extensions_ok ))
or (!in_array($getimagesize[2], $typeimages_ok )))
{
foreach($extensions_ok as $text) { $extensions_string .= $text.', '; }
$erreurs[] = 'Veuillez sélectionner un fichier de type '.substr($extensions_string, 0, -2).' !';
}
// on vérifie le poids de l'image
if( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreurs[] = "Votre fichier doit faire moins de $taille_ko Ko !";
}
// copie du fichier si aucune erreur !
if(!isset($erreurs) or empty($erreurs))
{
$dest_fichier = basename($_FILES['photo']['name']);
$dest_fichier = strtr($dest_fichier, 'ÀÃÂÃÄÅÇÈÉÊËÌÃÃŽÃÒÓÔÕÖÙÚÛÜÃà áâãäåçèéêëìÃîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// un chtit regex pour remplacer tous ce qui n'est ni chiffre ni lettre par "_"
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// pour ne pas ecraser un fichier existant
while(file_exists($dest_dossier . $dest_fichier)) {
$dest_fichier = rand().$dest_fichier;
}
// copie du fichier
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier)) {
$valid[] = "Image uploadé avec succés (<a href='".$dest_dossier . $dest_fichier."'>Voir</a>)";
} else {
$erreurs[] = "Impossible d'uploader le fichier.<br />Veuillez vérifier que le dossier ".$dest_dossier." existe avec un chmod 755 (ou 777).";
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<title>Upload d'image en PHP</title>
</head>
<body>
<form method="POST" action="" enctype="multipart/form-data">
<?php
if(!empty($erreurs)) {
echo '<ul class="erreur">';
foreach($erreurs as $erreur) {
echo '<li>'.$erreur.'</li>';
}
echo '</ul>';
}
if(!empty($valid)) {
echo '<ul class="validation">';
foreach($valid as $text) {
echo '<li>'.$text.'</li>';
}
echo '</ul>';
}
?>
<fieldset>
<legend>Envoi d'image</legend>
<p>
<label for="photo">Image : </label>
<input type="file" name="photo" id="photo" />
</p>
<p>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $taille_max; ?>" />
<input type="submit" name="envoi" value="Envoyer" />
</p>
</fieldset>
</form>
</body>
</html>
[/php]
Mais il ne marche pas !!!message d'erreur suivant
(Array ( [name] => graph.jpg [type] => image/jpeg [tmp_name] => /var/log/tmp/phposNVRw [error] => 0 [size] => 4629 )
Warning: move_uploaded_file(img/graph.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /homez.110/creditsr/www/photo.php on line 119
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/var/log/tmp/phposNVRw' to 'img/graph.jpg' in /homez.110/creditsr/www/photo.php on line 119
* Impossible d'uploader le fichier.
Veuillez vérifier que le dossier img/ existe avec un chmod 755 (ou 777).)
j'ai créé photo1 dans ma bdd en blob.
Je n'y comprends que dalle !!!
Les erreurs sont surement simples mais le débutant que je suis ne les trouve pas
merci de votre aide