Récupérer le nom d'une photo

Résolu/Fermé
Sfc2000 - 7 oct. 2009 à 17:37
 BoOst - 7 oct. 2009 à 22:58
Bonjour,

J'ai trouvé un script qui me permets d'uploader une photo sur le server ca marche bien sauf que pour corser la chose, j'aimerais que le nom du fichier uploader s'inscrive dans une base.

Pouvez vous m'aider?

Voici mon script :

<?
require "includes/ezine_db.inc.php";
$ezine_db = ezine_connecte_db();

?>
    <?php
   
   mysql_query("INSERT INTO Article (Id,Nom,Prix,NomPhoto) VALUES ('','$Nom','$Prix','$NomPhoto') ") or die ("erreur insert ".mysql_error());

    mysql_close();

    $poids_max = 512000; // Poids max de l'image en octets (1Ko = 1024 octets)
    $repertoire = 'images/photos/'; // Repertoire d'upload
   
    if (isset($_FILES['fichier']))
    {
   
    // On vérifit le type du fichier
    if ($_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/JPG' && $_FILES['fichier']['type'] != 'image/jpeg' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/gif')
    {
    $erreur = 'Le fichier doit être au format *.jpeg, *.gif ou *.png .';
    }
   
     // On vérifit le poids de l'image
     elseif ($_FILES['fichier']['size'] > $poids_max)
     {
     $erreur = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.';
     }
   
     // On vérifit si le répertoire d'upload existe
     elseif (!file_exists($repertoire))
     {
     $erreur = 'Erreur, le dossier d\'upload n\'existe pas.';
     }
   
     // Si il y a une erreur on l'affiche sinon on peut uploader
     if(isset($erreur))
     {
     echo '' . $erreur . '<br><a href="javascript:history.back(1)">Retour</a>';
     }
     else
     {
   
    // On définit l'extention du fichier puis on le nomme par le timestamp actuel
     if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpeg'; }
     if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpg'; }
     if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.JPG'; }
     if ($_FILES['fichier']['type'] == 'image/png') { $extention = '.png'; }
     if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.gif'; }
     $nom_fichier = time().$extention;
   
     // On upload le fichier sur le serveur.
     if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier))
     {
     $url = 'www.documentmateriel.ch/'.$repertoire.''.$nom_fichier.'';
     echo 'Votre image à été uploadée sur le serveur avec succes!<br>Voici le lien: <input type="text" value="' . $url . '" size="60">';
    }
     else
     {
     echo 'L\'image n\'a pas pu être uploadée sur le serveur.';
     }
   
     }
   
     }
     else
     {
      

     ?>
<div align="left" class="body">
  <form method="post" enctype="multipart/form-data">
    <table border="0" cellpadding="0" cellspacing="0" class="texte">
      <tr>
        <td>&nbsp;</td>
        <td class="texte">&nbsp;</td>
      </tr>
      <tr>
        <td>Nom :
        </td>
        <td class="texte"><input name="Nom" type="text" /></td>
      </tr>
      <tr>
        <td>Prix :</td>
        <td class="texte"><input name="Prix" type="text" /></td>

      <tr class="texte">
        <td colspan="2" align="center"><input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $poids_max; ?>"><input type="file" name="fichier"></td>
      </tr>
      <tr class="texte">
        <td colspan="2" align="center"><input type="submit" name="submit" value="Valider" /></td>
      </tr>
    </table>
  </form>
</div>
     <?php
     }
     ?>


Mes autres données (Nom et Prix son récupérer dans la base, mais j'ai beau triffouiller le code dans tous les sens, je ne suis apparment pas assez bon pour récupérer le nom du fichier uploader pour le mettre dans la base.

Merci d'avance pour vos réponses
A voir également:

3 réponses

Salut,

Dans ta requete SQL, je ne comprends pas d'où provient ta variable "$NomPhoto" ?!

Alors lorsqu'un fichier est uploadé, il n'existe réellement qu'après avoir été déplacé du dossier temporaire vers le dossier final, ce que tu fait dans cette partie :

  
     if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpeg'; }
     if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpg'; }
     if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.JPG'; }
     if ($_FILES['fichier']['type'] == 'image/png') { $extention = '.png'; }
     if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.gif'; }
     $nom_fichier = time().$extention;

   // On upload le fichier sur le serveur.
     if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier))
     {
     $url = 'www.documentmateriel.ch/'.$repertoire.''.$nom_fichier.'';
     echo 'Votre image à été uploadée sur le serveur avec succes!<br>Voici le lien: <input type="text" value="' . $url . '" size="60">';
    }


Le nom du fichier d'origine n'est pas conservé dans ton code, tu lui génère un nouveau nom de type "1023453763.jpg", il vaut mieux donc faire ta requete sql dans ce bloc IF, car avant cela tu ne conais pas le nom et le fichier peut etre refusé (trop gros, etc..)

Voila ce que ca donnerai :

   // On upload le fichier sur le serveur.
     if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier))
     {
      // *** a partir d'ici, le fichier est réellement crée sur le serveur, sous le nom "$repertoire.$nom_fichier"
      mysql_query("INSERT INTO Article (Id,Nom,Prix,NomPhoto) VALUES ('','$Nom','$Prix','$nom_fichier') ") or   die ("erreur insert ".mysql_error());

     $url = 'www.documentmateriel.ch/'.$repertoire.''.$nom_fichier.'';
     echo 'Votre image à été uploadée sur le serveur avec succes!<br>Voici le lien: <input type="text" value="' . $url . '" size="60">';
    }


ps : Pas la peine de fermer la connexion sql avec "mysql_close", ca se fait tout seul a la fin de page.
0
Ah super sa marche.

Merci beaucoup, j'ai encore beaucoup a apprendre.

Merci encore

Bonne soirée
0
pas de quoi, et courage ca viendra :)
0