[php/mysql] : extraction du titre de l'image uploadée
Dernière réponse : dans Programmation
bonsoir à tous,
après moultes recherches infructueuses, je finis par vous demander comment on peut récupérer le titre de l'image uploadée, sachant que tout va bien pour l'upload en lui-même.
La difficulté pour moi est que, lorsque j'upload, j'ai le chemin absolu qui s'affiche dans le champ de récupération. Normal me direz-vous mais très ennuyeux car il faut que je récupère uniquement la fin du chemin absolu, c'est-à-dire uniquement : image.jpg
Pour vous éclairer, voici mon code simplifié du formulaire de chargement :
voici le code simplifié de mon fichier php :
voilà où j'en suis... ça fonctionne très bien...
mais, pour la récupération du nom de l'image uploadée (et non celui de l'image donné par le photographe), je vois vraiment pas.
quelqu'un aurait-il une piste, un tutoriel à me conseiller ?
merci d'avance...
(et probablement à demain matin)
après moultes recherches infructueuses, je finis par vous demander comment on peut récupérer le titre de l'image uploadée, sachant que tout va bien pour l'upload en lui-même.
La difficulté pour moi est que, lorsque j'upload, j'ai le chemin absolu qui s'affiche dans le champ de récupération. Normal me direz-vous mais très ennuyeux car il faut que je récupère uniquement la fin du chemin absolu, c'est-à-dire uniquement : image.jpg
Pour vous éclairer, voici mon code simplifié du formulaire de chargement :
<form method="post" action="chargement_photo.php" enctype="multipart/form-data">
<table>
<tr>
<td>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000000" />
<input type="file" name="mon_image" size="70" id="mon_image" />
</td>
</tr>
<tr>
<td>
<input type="submit" name="submit" value="Envoyer" />
</td>
</tr>
<tr>
<td height="35%" bgcolor=#000000></td>
</tr>
</table>
</form>
voici le code simplifié de mon fichier php :
<?php
$dossier = 'photos/';
$fichier = basename($_FILES['mon_image']['name']);
$taille_maxi = 1000000000;
$taille = filesize($_FILES['mon_image']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPG');
$extension = strrchr($_FILES['mon_image']['name'], '.');
//connexion à la base mysql club et message si probleme
$connexion=mysql_connect ('localhost','root','') or die ("impossible de se connecter à la base de données");
mysql_select_db ('phototheque');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions))
{
$erreur = "...fichier de type png, gif, jpg, jpeg, JPG";
}
if($taille>$taille_maxi)
{
$erreur = "le fichier est trop gros...";
}
//On formate le nom du fichier
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
// a ce stade $fichier devrait exactement correspondre au nom sur le disque
if (file_exists ($dossier . $fichier))
{
$erreur = "gardez si possible le même nom en...";
}
if(!isset($erreur))
{
if(move_uploaded_file($_FILES['mon_image']['tmp_name'], $dossier . $fichier))
{
echo "chargement réussi !!!";
}
else
{
echo "ehec du chargement\n";
}
}
else
echo $erreur;
//fermeture de la connection
mysql_close($connexion);
?>
voilà où j'en suis... ça fonctionne très bien...
mais, pour la récupération du nom de l'image uploadée (et non celui de l'image donné par le photographe), je vois vraiment pas.
quelqu'un aurait-il une piste, un tutoriel à me conseiller ?
merci d'avance...
(et probablement à demain matin)
Autres pages sur : php mysql extraction titre image uploadee
Lassé par la pub ? Créez un compte
bon, j'ai retenu le maximum concernant vos remarques et, tout fonctionne : l'enregistrement de la photo et le chargement de la photo. J'ai donc procédé à la réunion des deux dans un même formulaire mais... je me fais boulé concernant l'upload (encore une fois!!!). Il me dit que l'extension n'est pas bonne... J'ai lu, relu et re-relu mon code... je vois pas !!!
voici en tout cas, le résultat du tout :
voilà, j'ai l'impression que je récupère que $fichier et qu'il me manque du coup $extension. Mais, où et quoi je dois rajouter ?
merci bien pour les rensignements forts attendus...
cordialement
voici en tout cas, le résultat du tout :
<?
$titre=$_GET['titre'];
$sujet=$_GET['sujet'];
$legende=$_GET['legende'];
$format=$_GET['format'];
$heure=$_GET['heure'];
$date=$_GET['date'];
$IDP=$_GET['IDP'];
$IDS=$_GET['IDS'];
$IDT=$_GET['IDT'];
$fichier=$_GET['mon_image'];
$connexion=mysql_connect ('localhost','root','') or die ("impossible de se connecter à la base de données");
mysql_select_db ('phototheque');
if($titre=='')
{
echo "Votre enregistrement doit comporter un titre";
exit();
}
elseif(preg_match ('/[0-9][0-9]h[0-9][0-9]/', $heure) == 0)
{
echo "L'heure doit être enregistrée sous la forme : 12h43";
exit();
}
elseif(preg_match ('/[0-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]/', $date) == 0)
{
echo "La date doit être enregistrée sous la forme : AAAA-MM-JJ";
exit();
}
elseif($IDP=='')
{
echo "Revenez à la page précédente et cliquez sur ...";
exit();
}
elseif($IDS=='')
{
echo "Revenez à la page précédente et cliquez sur ...";
exit();
}
elseif($IDT=='')
{
echo "Revenez à la page précédente et cliquez sur ...";
exit();
}
$dossier = 'photos/';
$fichier = basename($_FILES['mon_image']['name']);
$taille_maxi = 1000000000;
$taille = filesize($_FILES['mon_image']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPG');
$extension = strrchr($_FILES['mon_image']['name'], '.');
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
echo "Vous devez charger un fichier de type png, gif, jpg, jpeg, JPG";
exit();
}
elseif($taille>$taille_maxi)
{
echo "le fichier est trop gros...";
exit();
}
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if (file_exists ($dossier . $fichier))
{
echo "gardez si possible le même nom en ...";
exit();
}
elseif(!isset($erreur))
{
if(move_uploaded_file($_FILES['mon_image']['tmp_name'], $dossier . $fichier))
{
echo "chargement réussi !!!";
exit();
}
}
else
echo "raté apparement";
exit();
$query=mysql_query ("INSERT INTO photo (titre,sujet,legende,format,heure,date,IDP,IDS,IDT,titre_im) VALUES
('" . $titre . "','" . $sujet . "','" . $legende . "','" . $format . "','" . $heure . "','" . $date . "','" . $IDP . "','" . $IDS . "','" . $IDT . "','" . $fichier . "')")
or die ("si ça persiste, contactez ...");
mysql_close($connexion);
?>
voilà, j'ai l'impression que je récupère que $fichier et qu'il me manque du coup $extension. Mais, où et quoi je dois rajouter ?
merci bien pour les rensignements forts attendus...
cordialement
j'ai bien avancé !!!
au lieu de :
j'ai mis :
mais ça suffit pas, bizarre non...?
au lieu de :
$dossier = 'photos/';
# $fichier = basename($_FILES['mon_image']['name']);
$taille_maxi = 1000000000;
$taille = filesize($_FILES['mon_image']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.JPG');
$extension = strrchr($_FILES['mon_image']['name'], '.');
j'ai mis :
$path_parts = pathinfo($fichier);
print_r($path_parts);
$taille_maxi = 1000000000;
$extensions = array('png', 'gif', 'jpg', 'jpeg', 'JPG');
$fichier = $path_parts['basename'];
$extension = $path_parts['extension'];
mais ça suffit pas, bizarre non...?
j'ai alors remplacé c dernier bloc par :
et j'obtiens :
[Array ( [basename] => ) Array ( [0] => png [1] => gif [2] => jpg [3] => jpeg [4] => JPG )code][/code]
toujours pas d'idée...?
merci d'avance
if(isset($_POST['submit']))
{ echo 'Formulaire soumis<br/>';
if(is_uploaded_file($_FILES['mon_image']['tmp_name']))
{ echo 'Image présente<br/>';
$path_parts = pathinfo($_FILES['mon_image']['name']);
print_r($path_parts);
$taille_maxi = 1000000000;
$extensions = array('png', 'gif', 'jpg', 'jpeg', 'JPG');
print_r($extensions);
echo $fichier = $path_parts['basename'];
echo $extension = $path_parts['extension'];
echo in_array($extension, $extensions);
}
}
et j'obtiens :
[Array ( [basename] => ) Array ( [0] => png [1] => gif [2] => jpg [3] => jpeg [4] => JPG )code][/code]
toujours pas d'idée...?
merci d'avance
Donc, j'ai corrigé pas mal de truc et ça marche !!!
voici mon formulaire simplifié :
j'avais une faute dans mon enctype.... (ahhhh!!!!)
et voici mon fichier de traitement simplifié :
j'ai tout remis en POST (c'est mieux et obligatoire...) et j'ai surtout viré un exit() après le chargement de la photo (ça n'allait pas du coup jusqu'à la requête SQL)
Merci en tout cas à vous tous pour votre aide précieuse !!!
voici mon formulaire simplifié :
<form ACTION="f_traitement_photo.php" METHOD="POST" NAME="f_saisie_photo" ENCTYPE="multipart/form-data">
<INPUT TYPE="TEXT" NAME="titre" SIZE="60">
<INPUT TYPE="TEXT" NAME="sujet" SIZE="60">
<INPUT TYPE="TEXT" NAME="legende" SIZE="60">
<INPUT TYPE="TEXT" NAME="format" SIZE="60">
<INPUT TYPE="TEXT" NAME="heure" SIZE="60">
<INPUT TYPE="TEXT" NAME="date" SIZE="60">
<INPUT TYPE="TEXT" NAME="IDP" SIZE="60">
<INPUT TYPE="TEXT" NAME="IDS" SIZE="60">
<INPUT TYPE="TEXT" NAME="IDT" SIZE="60">
<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000000" /><input TYPE="file" NAME="mon_image" SIZE="60" ID="mon_image" />
j'avais une faute dans mon enctype.... (ahhhh!!!!)
et voici mon fichier de traitement simplifié :
<?
$titre=$_POST['titre'];
$sujet=$_POST['sujet'];
$legende=$_POST['legende'];
$format=$_POST['format'];
$heure=$_POST['heure'];
$date=$_POST['date'];
$IDP=$_POST['IDP'];
$IDS=$_POST['IDS'];
$IDT=$_POST['IDT'];
$fichier=$_POST['mon_image'];
$connexion=mysql_connect ('localhost','root','') or die ("impossible de se connecter à la base de données");
mysql_select_db ('phototheque');
if(isset($_POST[$titre==''])){
echo "Votre enregistrement doit comporter un titre";
exit();}
elseif(preg_match ('/[0-9][0-9]h[0-9][0-9]/', $heure) == 0){
echo "L'heure doit être enregistrée sous la forme : 12h43";
exit();}
elseif(preg_match ('/[0-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9]/', $date) == 0){
echo "La date doit être enregistrée sous la forme : AAAA-MM-JJ";
exit();}
elseif($IDP==''){
echo "Votre enregistrement doit comporter le numéro de saisie du photographe";
exit();}
elseif($IDS==''){
echo "Votre enregistrement doit comporter le numéro de saisie du support";
exit();}
elseif($IDT==''){
echo "Votre enregistrement doit comporter le numéro de saisie du type";
exit();}
$dossier = 'photos/';
$path_parts = pathinfo($_FILES['mon_image']['name']);
print_r($path_parts);
$taille_maxi = 1000000000;
$extensions = array('png', 'gif', 'jpg', 'jpeg', 'JPG');
print_r($extensions);
echo $fichier = $path_parts['basename'];
echo $extension = $path_parts['extension'];
echo in_array($extension, $extensions);
if(!in_array($extension, $extensions))
{
echo "Vous devez charger un fichier de type png, gif, jpg, jpeg, JPG";
exit();
}
elseif($taille>$taille_maxi)
{
echo "le fichier est trop gros...";
exit();
}
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(file_exists ($dossier . $fichier))
{
echo " le fichier existe déjà, donnez-lui un autre nom";
exit();
}
elseif(!isset($erreur))
{
if(move_uploaded_file($_FILES['mon_image']['tmp_name'], $dossier . $fichier))
{
echo "chargement réussi !!!";
}
}
else
{
echo "raté apparement";
exit();
}
$query=mysql_query ("INSERT INTO photo (titre,sujet,legende,format,heure,date,IDP,IDS,IDT,titre_im) VALUES
('" . $titre . "','" . $sujet . "','" . $legende . "','" . $format . "','" . $heure . "','" . $date . "','" . $IDP . "','" . $IDS . "','" . $IDT . "','" . $fichier . "')")
or die ("l'insertion n'a pas été réalisée");
mysql_close($connexion);
?>
j'ai tout remis en POST (c'est mieux et obligatoire...) et j'ai surtout viré un exit() après le chargement de la photo (ça n'allait pas du coup jusqu'à la requête SQL)
Merci en tout cas à vous tous pour votre aide précieuse !!!
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- Foruminserer une image dans mysql depuis eclipse
- ForumRésolu[PHP-MYSQL] Problème avec une galerie d'image
- Forumassocier image a une news(php/mysql)
- ForumRETROUVER LE TITRE DUNE IMAGE
- ForumDiaporama avec lecture du titre de l'image
- ForumLogiciel pour créer un logiciel d'image+titre+texte pour chaque image classées p
- ForumCrée une image de titre de site web
- Forumgestion d'images avec php/mysql/html
- ForumRecherche du titre d'un film à partir d'une image[RESOLU Grand Chemin]
- ForumCherche titre, image et ou ba d'un vieux film d'Héroic fantasy
- Voir plus