Recuperer le nom d'une photo

Recuperer le nom d'une photo - PHP - Programmation

Marsh Posté le 06-02-2007 à 15:44:36    

Voilà j'ai construit un formulaire d'upload en php/mysql avec envoi des photos dans un répertoire.
Je souhaiterai savoir s'il était possible d'introduire un champ masqué dans mon formulaire qui récupererai
le nom de la photo envoyée ( valeur de ce champ codé en php bien sur ).
 
Merci !

Reply

Marsh Posté le 06-02-2007 à 15:44:36   

Reply

Marsh Posté le 06-02-2007 à 15:45:55    

Quel nom?
Si c'est le nom du fichier, tu l'as déjà...


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 06-02-2007 à 15:53:26    

mwoui mais par quelle manip je peux le mettre dans une variable pour l'envoyer dans ma base ?
tu veux dire avec ca : $_FILES['userfile']['name'] ?
Mais je ne vois pas comment m'en servir..je débute en php


Message édité par endozen le 06-02-2007 à 15:56:48
Reply

Marsh Posté le 06-02-2007 à 15:57:46    

Ba tu l'as dans une variable de ce genre là :
$_FILES['fichier']['name']

 

Donc suffit de l'insérer dans ta bdd.

 

Edit : Ok je viens de voir la suite... Et bien tu insert cette variable dans une chaine qui va constituer ta requête puis tu envois le tout au sgbd. Si tu ne sais pas comment faire, je t'invite à aller apprendre les bases du langage avant de t'attaquer à trop compliqué. Et, comme je me plait à le dire, on ne met pas la charue avant les boeufs.


Message édité par dwogsi le 06-02-2007 à 18:10:41

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 06-02-2007 à 17:53:27    

bon j'ai plus au moins compris la théorie : mon image est en méthode POST vers une page upload.php qui vérifie sont contenu, et de même les champs titre/date/lieu ect... sont envoyé à cette même page via l'url ( je pense pas qu'on puisse définir deux méthodes dans un seul formulaire : vers une page php ET vers sql ). upload.php finira le travail en envoyant l'image dans un répertoire et les champs texte dans la base. Jme trompe sur l'enchainement des étapes ?

Reply

Marsh Posté le 06-02-2007 à 21:21:10    

Oula... Faut revoir les bases là...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 07-02-2007 à 09:18:10    

je te conseille de faire un petit tour sur lesiteduzero ou phpdebutant.
Ca te sera surement très utile et tu trouveras facilement les réponses a tes questions

Reply

Marsh Posté le 10-02-2007 à 21:27:12    

bref on est pas la pour discuter des mes pauvres compétences. J'aimerai juste savoir quelle philosophie je dois adopter : J'aimerai n'utiliser qu'un formulaire pour : completer une base de donnée + l'upload d'image dans un repertoire. Les deux marchent nickel chaucun de leur coté et j'aimerai savoir si je peux ne faire qu'un formulaire !

Reply

Marsh Posté le 11-02-2007 à 00:42:58    

Oui c'est possible.

Reply

Marsh Posté le 12-02-2007 à 17:46:55    

bon j'y suis arriver : j'ai créer un formulaire en méthode post vers une page php qui gère la photo et la gestion de la base de donnée.  
 
Je souhaite ajouter un 3eme script php dans cette page : celui de la création de la vignette. Le script est écrit et marche avec une image déjà sur le serveur. Seulement quand je teste avec une image que j'upload le code s'execute avant que l'upload ne soit fini, et il me retourne donc "no such file".
 
Je cherche donc une petite astuce qui permet de vérifier que l'upload est complet avant de lancer ce sript. J'ai pense a file_exist($file)..sans aboutir.
Quelqu'un aurait-il une idée ?

Reply

Marsh Posté le 12-02-2007 à 17:46:55   

Reply

Marsh Posté le 12-02-2007 à 17:52:12    

endozen a écrit :

Seulement quand je teste avec une image que j'upload le code s'execute avant que l'upload ne soit fini, et il me retourne donc "no such file".


[:roane]
 
Montre ton code.[:dawao]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 12-02-2007 à 18:06:14    

Voici la page upload.php qui recoit donc les variables du formulaire :

Code :
  1. <?php
  2. //[ Remplissage de la table ]
  3. $url=$_FILES['photo']['name'];
  4. $date=date('Y-m-d');
  5. mysql_query("INSERT INTO photo VALUES('','$titre','$date','$lieu','$commentaire','$retouche','$url','$categorie')" );
  6.  
  7. //[ Script d'upload ]
  8.  
  9. $dossier = 'upload/';
  10. $fichier = basename($_FILES['photo']['name']);
  11. $taille_maxi = 10000000;
  12. $taille = filesize($_FILES['photo']['tmp_name']);
  13. $extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPG', '.JPEG');
  14. $extension = strrchr($_FILES['photo']['name'], '.');
  15.  
  16. if(!in_array($extension, $extensions))
  17.     {
  18.          $erreur = 'type png, gif, jpg, jpeg...';
  19.     }
  20.     
  21. if($taille>$taille_maxi)
  22.     {
  23.          $erreur = '10mo maxi...';
  24.     }
  25.     
  26. if(!isset($erreur))
  27.     {    
  28.          $fichier = strtr($fichier,
  29.                   'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
  30.                   'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
  31.          $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
  32.          if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier))
  33.              {
  34.                   echo 'Upload effectué avec succès !';
  35.              }
  36.          else
  37.              {
  38.                   echo 'Echec de l\'upload !';
  39.              }
  40.     }
  41. else
  42.     {
  43.          echo $erreur;
  44.     }
  45.  
  46. //[ Script de création de la vignette ]
  47.  
  48. $nomfichier='upload/'.$url;
  49. $dest='upload/nails/'.$url;
  50.     
  51. $source = imagecreatefromjpeg($nomfichier);
  52.     
  53. $destination = imagecreatetruecolor(200, 150);
  54.     
  55. $largeur_source = imagesx($source);
  56.     
  57. $hauteur_source = imagesy($source);
  58.     
  59. $largeur_destination = imagesx($destination);
  60.     
  61. $hauteur_destination = imagesy($destination);
  62.     
  63. imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);    
  64.     
  65. imagejpeg($destination, $dest,75);
  66.  
  67. ?>

Merci pour l'astuce -ThX-


Message édité par endozen le 12-02-2007 à 18:17:43
Reply

Marsh Posté le 12-02-2007 à 18:06:41    

ha bah sans les couleurs c'est tt de suite moins beau. :)

Reply

Marsh Posté le 12-02-2007 à 18:09:50    

[code =php ] Ton code [ /code] sans les espaces

Reply

Marsh Posté le 12-02-2007 à 21:31:22    

voici exactement l'erreur retournée : Warning: imagecreatefromjpeg(upload/iii 054.jpg): failed to open stream: No such file or directory in /home5/e/endorsen/www/admin/upload.php on line 72


Message édité par endozen le 12-02-2007 à 21:31:36
Reply

Marsh Posté le 12-02-2007 à 22:03:32    

ce problème est dû tt simplement à un pb d'espace dans le fichier...j'aurai du m'en douter avant.

Reply

Marsh Posté le 13-02-2007 à 09:07:44    

yes ca doit poser soucis, encode les noms de fichiers avant des les uploader

Reply

Marsh Posté le 14-02-2007 à 17:42:16    

J'ai bien avancé dans mon projet, mais je suis face à une autre difficulté : lire un tableau associatif. J'essai de mettre en place la fonction qui permet de lire les entêtes d'une photo : exif_read_data().
 
[code=php]
<?php
echo "test1.jpg:<br />\n";
$exif = exif_read_data('tests/test1.jpg', 'IFD0');
echo $exif===false ? "Aucun en-tête de donnés n'a été trouvé.<br />\n" : "L'image contient des en-têtes<br />\n";
 
$exif = exif_read_data('tests/test2.jpg', 0, true);
echo "test2.jpg:<br />\n";
foreach ($exif as $key => $section) {
    foreach ($section as $name => $val) {
        echo "$key.$name: $val<br />\n";
    }
}
?>
[/php]
Ceci marche très bien, voir trop bien. Je n'ai besoin que de certaines valeurs, ce code me sort tout le tableau (avec l'instruction foreach).
J'ai tenté de chercher comment lire un tableau associatif sans succès.
Comment puis je sélectionner une ligne de ce tableau, ainsi que sa valeur ?


Message édité par endozen le 14-02-2007 à 17:45:13
Reply

Marsh Posté le 14-02-2007 à 17:44:08    

bah tu accèdes comme les autres tableaux... $exif[key]...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 14-02-2007 à 17:51:02    

Mais par exemple quand je test $exif['ISOSpeedRatings'] , cette variable est vide.

Reply

Marsh Posté le 14-02-2007 à 17:52:19    

print_r($exif) te donne quoi?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 14-02-2007 à 17:53:48    

bon aller..je te colle le résultat :  
 
Array ( [FILE] => Array ( [FileName] => iii116.jpg [FileDateTime] => 1171322377 [FileSize] => 117285 [FileType] => 2 [MimeType] => image/jpeg [SectionsFound] => ANY_TAG, IFD0, THUMBNAIL, EXIF, INTEROP ) [COMPUTED] => Array ( [html] => width="480" height="640" [Height] => 640 [Width] => 480 [IsColor] => 1 [ByteOrderMotorola] => 0 [ApertureFNumber] => f/6.0 [Thumbnail.FileType] => 2 [Thumbnail.MimeType] => image/jpeg ) [IFD0] => Array ( [Make] => SONY [Model] => DSC-S500 [Orientation] => 1 [XResolution] => 72/1 [YResolution] => 72/1 [ResolutionUnit] => 2 [Software] => Adobe Photoshop Album Starter Edition 3.0 [DateTime] => 2007:02:04 13:50:56 [YCbCrPositioning] => 2 [Exif_IFD_Pointer] => 240 [UndefinedTag:0xC4A5] => PrintIM
 
Par exemple j'aimerai juste sélectionner la ligne [ApertureFNumber] => f/6.0


Message édité par endozen le 14-02-2007 à 17:55:26
Reply

Marsh Posté le 14-02-2007 à 17:54:44    

Donc ISOSpeedRatings est pas dans ton tableau ...

Reply

Marsh Posté le 14-02-2007 à 17:58:07    

oui mais bizarrement $exif['ApertureFNumber'] ne marche pas mieux, je dois peut etre avoir la syntaxe d'accès a la ligne incomplete : il manque pas un COMPUTED ?

Reply

Marsh Posté le 14-02-2007 à 17:59:22    

$exif['COMPUTED']['ApertureFNumber']


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 14-02-2007 à 17:59:51    

Pourtant $exif['ApertureFNumber']  est dans ton tableau

Reply

Marsh Posté le 14-02-2007 à 18:00:31    

Merci sielfried ! Et les autres aussi bien sur!
excellent, je vous dois combien ? :D merci mille fois


Message édité par endozen le 14-02-2007 à 18:01:12
Reply

Marsh Posté le 16-02-2007 à 15:56:59    

Bon j'ai fais une petite pause dans ma programmation mais je m'y remet doucement : j'aimerai maintenant afficher sur l'index des catégories : Par exemple je prends le pays.
 
J'aimerai que mon script scan ma table, trouve tous les pays différents, et m'affiche tous les enregistrements par pays (faire un trableau pour chaque pays, avec le nom du pays au dessu, puis insérer des sautes de lignes avant le tableau d'un autre pays).
 
J'ai commencer a rédiger un script a 2 francs pour trouver toutes les occurences, mais de fait de ma faible expérience, je pense que c'est lourd et qu'on peut faire bcp mieux avec la bibliothèque de php.
 

Code :
  1. <?php
  2. do {
  3.     $ancien=$row_tri['pays'];
  4.     if ($ancien!=$nouveau) {
  5.         echo $row_tri['pays'];
  6.         $nouveau=$ancien;
  7.     }
  8.  
  9.     }
  10. while ($row_tri = mysql_fetch_assoc($tri));
  11.  
  12. ?>


Message édité par endozen le 26-02-2007 à 19:21:52
Reply

Marsh Posté le 26-02-2007 à 19:19:17    

Je pense meme que je fais completement fausse route, et qu'il faudrait que je me tourne vers plusieurs requetes sql, avec Select * from matable where pays=$pays, puis afficher successivement tous les enregistrements.

Reply

Marsh Posté le 27-02-2007 à 09:54:00    

hein?[:pingouino]
Tu veux faire quoi exactement? Récupérer tous les enregistrements d'une table et les afficher un par un? :??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 01-03-2007 à 15:20:21    

merci skeye d'avoir essayer :D Mais j'ai réussi.
 
Je voulais juste les afficher de la façon suivante : www.endorsen.com

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed