[RESOLU] Formulaire upload image selon catégorie

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Formulaire upload image selon catégorie

Formulaire upload image selon catégorie

par cypat2 » 14 mai 2013, 14:25

Bonjour, j'essaie de faire un formulaire d'upload d'image.(selon un code que j'ai trouver sur le net il y a quelque temps)
J'ai des catégories qui sont gérer par mysql (le code pour insérer les images dans la BDD n'est pas encore fait).
Pour chaque rubrique, un dossier est créer dans un dossier "Galerie" si j'ai donc la rub1 et Rub2 j'aurais donc une arborescence qui ressemble a cela:
ROOT
-- Galerie
-- -- Rub1
-- -- -- mini
-- -- Rub2
-- -- -- mini

Mon souci est qu'au final je n'arrive pas a uploadé mes images (Le but premier du code quoi..) j'obtiens l'erreur:
Warning: imagejpeg(./Rub1/B811A.jpg): failed to open stream: No such file or directory in C:\Program Files\EasyPHP-DevServer-13.1VC9\data\localweb\Galerie - sql\galerie_img_add.php on line 108
Rub1(j'ai fait un echo afin de vérifier que j'ai ma variable qui est ok)
Warning: imagejpeg(./Rub1/mini/B811A.jpg): failed to open stream: No such file or directory in C:\Program Files\EasyPHP-DevServer-13.1VC9\data\localweb\Galerie - sql\galerie_img_add.php on line 110
l'erreur m'indique bien un mauvais chemin, mais je n'arrive pas à trouver d'où sa vient.
<?php
//connexion
//on insère le formulaire
?>
<form method="post" enctype="multipart/form-data" action="">
	  <input type="file" name="file" size="30">
	  <br/>
Rubrique:
<?php $query = "SELECT id, titre FROM Rubrique ORDER BY titre DESC";
$result = mysql_query($query) or die("ERROR"); ?>
<select name='select_rubrique'>
<?php
$Selected = 0;
while ($row = mysql_fetch_array($result))
{
  if($Selected == 0)
  {
    echo '<option value="', $row[0], '" selected="selected">', $row[1], 
'</option>';
    $Selected = 1;
  }
  else
  {
    echo '<option value="', $row[0], '">', $row[1], '</option>';
  }
}
echo '</select>
	<br/><br/>
	<input type="submit" name="upload" value="Envoyer"> 
	</form>';




    function getExtension($str)
    {
    $i = strrpos($str,".");
    if (!$i) { return ""; }
    $l = strlen($str) - $i;
    $ext = substr($str,$i+1,$l);
    return $ext;
    }
    if(isset($_POST['upload']))
    {
    define ("MAX_SIZE", "3000");
	$id = $_POST['select_rubrique'];
$query = "SELECT id, titre FROM Rubrique WHERE id='".$id."'";
$result = mysql_query($query) or die('erreur de sql'.$sql.'<br>'.mysql_error());; 
while ($grp = mysql_fetch_array($result))
    {
	$rub_name = $grp['titre'];
	}


	echo "<br/><br/> ID: ".$row[0]." ou ".$id."<br/><br/> titre:".$rub_name."";
    $errors = 0;
    $filename = $_FILES["file"]["name"];
    $uploadedfile = $_FILES['file']['tmp_name'];
    $type_file = $_FILES['file']['type'];
    if ($filename)
    {
    if( !is_uploaded_file($uploadedfile) )
    {
    exit("Le fichier est introuvable");
    }
    // on vérifie maintenant l'extension
    elseif( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'png') && !strstr($type_file, 'gif') )
    {
    exit("Le fichier n'est pas une image");
    }
    else
    {
    $size = filesize($_FILES['file']['tmp_name']);
    if ($size > MAX_SIZE*1024)
    {
    exit ("verifier la taille de votre image!!");
    $errors=1;
    }
    $extension = getExtension($filename);
    $extension = strtolower($extension);
    if($extension=="jpg" || $extension=="jpeg" )
    {
    $uploadedfile = $_FILES['file']['tmp_name'];
    $src = imagecreatefromjpeg($uploadedfile);
    }
    else if($extension=="png")
    {
    $uploadedfile = $_FILES['file']['tmp_name'];
    $src = imagecreatefrompng($uploadedfile);
    }
    else
    $src = imagecreatefromgif($uploadedfile);
    list($width,$height) = getimagesize($uploadedfile);
    $newwidth = 800;
    $newheight = ($height/$width)*$newwidth;
    $tmp = imagecreatetruecolor($newwidth,$newheight);
    $newwidth1 = 100;
    $newheight1 = ($height/$width)*$newwidth1;
    $tmp1 = imagecreatetruecolor($newwidth1,$newheight1);
    imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
    imagecopyresampled($tmp1, $src, 0, 0, 0, 0, $newwidth1, $newheight1, $width, $height);
    $filename = "". $_FILES['file']['name'];
    $filename1 = "". $_FILES['file']['name'];
    imagejpeg($tmp,"./".$rub_name."/".$filename."",100);
	echo $rub_name;
    imagejpeg($tmp1,"./".$rub_name."/mini/".$filename1."",100);
    imagedestroy($src);
    imagedestroy($tmp);
    imagedestroy($tmp1);
    echo '<p>Miniature: <img src="./'.$rub_name.'/mini/'.$filename1.'"/><br/><br/>';
    echo 'Image originale: <a href="./'.$rub_name.'/'.$filename.'"><img src="./'.$rub_name.'/'.$filename.'" width="120 height="120"/></a></p>';

    }
    }
    }
    
	echo '<br/><br/> <a href="index.php?page=Galerie">Retour</a>';
?>
En vous remerciant d'avance pour votre aide, d'autant plus que le code est très "lourd" et surement très mal optimisé,

Cordialement,

Cypat2



EDIT: JE viens de m'apercevoir que j'avais oublier /Galerie/ dans mes chemins >< 2H de recherche pour ça :x
Ceci dit si vous pouvez me conseiller deux trois truc pour un code plus "propre" je dit pas non.


Cordialement,