perdue dans le tableau $_FILES
Posté : 29 mai 2009, 07:58
bonjour,
j'essaie de comprendre comment je pourrais réaliser une boucle sur le tableau $_FILES pour pouvoir traiter le téléchargement de 2 fichiers ainsi que l'enregistrement d'infos dans la base de données
jusqu'à présent, je n'avais qu'un fichier à traiter (input file) mais je dois en ajouter un second et stocker les infos dans la base
dans mon formulaire html, j'ai donné des noms différents aux input, ils se nomment "mon_fichier" et "mon_fichier2"
j'obtiens alors le tableau suivant :
le script existant que j'essaie de faire évoluer figure à la fin de ce message (il contient un peu-beaucoup de commentaire, désolée...)
je ne comprends pas comment faire à la fois une boucle sur ce tableau tout en testant si l'utilisateur a joint des fichiers afin d'enregistrer les informations adéquates dans la BDD... ou peut-être que je n'ai simplement pas compris la notion de tableau !
si vous pouviez me mettre sur la voie pour que je comprenne mon erreur de logique ou de compréhension, ça m'aiderait beaucoup
merci
j'essaie de comprendre comment je pourrais réaliser une boucle sur le tableau $_FILES pour pouvoir traiter le téléchargement de 2 fichiers ainsi que l'enregistrement d'infos dans la base de données
jusqu'à présent, je n'avais qu'un fichier à traiter (input file) mais je dois en ajouter un second et stocker les infos dans la base
dans mon formulaire html, j'ai donné des noms différents aux input, ils se nomment "mon_fichier" et "mon_fichier2"
j'obtiens alors le tableau suivant :
Code : Tout sélectionner
Array
(
[mon_fichier] => Array
(
[name] => k723-v1091.jpg
[type] => image/jpeg
[tmp_name] => /private/var/tmp/php6IBrsN
[error] => 0
[size] => 78254
)
[mon_fichier2] => Array
(
[name] => k725-v1093.jpg
[type] => image/jpeg
[tmp_name] => /private/var/tmp/phpWPPrWH
[error] => 0
[size] => 66458
)
)je ne comprends pas comment faire à la fois une boucle sur ce tableau tout en testant si l'utilisateur a joint des fichiers afin d'enregistrer les informations adéquates dans la BDD... ou peut-être que je n'ai simplement pas compris la notion de tableau !
si vous pouviez me mettre sur la voie pour que je comprenne mon erreur de logique ou de compréhension, ça m'aiderait beaucoup
merci
// contrôle des champs obligatoires
// s'ils sont vides, réaffiche le formulaire
if (empty($new_date) or empty($new_titre) or empty($new_chapeau) or empty($new_contenu) or empty($new_titre_page))
{
echo "<p id='erreur'>------> Vous n'avez pas renseigné tous les champs obligatoires</strong></p>";
include ("include/actus_ajout_form.inc");
}
// traitement du contenu du formulaire (les champs obligatoires sont remplis)
else {
//echo "<p>tous les champs sont bien remplis</p>";
// CONTENU DU TABLEAU $_FILES (utiliser foreach ? comment le combiner avec if ?)
echo '<pre>';
print_r ($_FILES);
echo '</pre>';
foreach($_FILES as $val)
{
echo "$val<br />";
}
echo '<br /> mes valeurs sans parcourir le tableau : <br />';
echo $_FILES['mon_fichier']['tmp_name'] ;
echo '<br />';
echo $_FILES['mon_fichier2']['tmp_name'] ;
// TRAITEMENT IMAGE PRINCIPALE LIEE A L'ACTU
// vérification présence d'un fichier dans le dossier temporaire
if (file_exists($_FILES['mon_fichier']['tmp_name']))
{
echo "<p>il y a un fichier : " . $_FILES['mon_fichier']['tmp_name'] ."</p>";
// variable servant à "stocker" les erreurs lors des différents contrôles
unset($erreur);
// vérification du type de fichier
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg', 'PNG', 'GIF', 'JPG', 'JPEG');
if(!in_array( substr(strrchr($_FILES['mon_fichier']['name'], '.'), 1), $extensions_ok))
{
$erreur = "<p id='erreur'>------>Le fichier doit être de type png, gif ou jpg.</p>";
echo $erreur;
include ("include/actus_ajout_form.inc");
}
// vérification de la taille du fichier
$taille_max = 150000;
//echo "<p>" . $_FILES['mon_fichier']['size'] ." octets</p>";
if($_FILES['mon_fichier']['size'] > $taille_max)
{
$erreur = "<p id='erreur'>------>Le fichier doit faire moins de 150 ko.</p>";
echo $erreur;
include ("include/actus_ajout_form.inc");
}
// s'il n'y a pas d'erreur (type et taille), fichier renommé et déplacé
if(!isset($erreur))
{
// récupère l'extension du fichier original et la transforme en minuscule
//echo "<p>".strtolower(substr(strrchr($_FILES['mon_fichier']['name'], "."), 1)) ."</p>";
$dest_extension = strtolower(substr(strrchr($_FILES['mon_fichier']['name'], "."), 1));
// récupère le nom du fichier dans le dossier temporaire et le transforme en minuscule
//echo "<p>" .strtolower(substr(strrchr($_FILES['mon_fichier']['tmp_name'], "/"), 1)) ."</p>";
$dest_nom = strtolower(substr(strrchr($_FILES['mon_fichier']['tmp_name'], "/"), 1)) ;
// contruction du nom complet du fichier qui devra être copié
//echo $dest_nom ."." .$dest_extension ;
$dest_fichier = $dest_nom ."." .$dest_extension ;
// dossier de destination
$dest_dossier = 'images_actus/';
// copie du fichier
if(move_uploaded_file($_FILES['mon_fichier']['tmp_name'], $dest_dossier .$dest_fichier))
{
//echo("<p>Fichier copié ici : <strong>" .$dest_dossier .$dest_fichier ."</strong></p>");
chmod($dest_dossier .$dest_fichier, 0777);
}
else
{
echo("<p>Erreur lors de la copie du fichier téléchargé.</p>");
}
// enregistrement de la fiche
$query = "INSERT INTO tmtd_news (date_publ, titre, chapeau, contenu, lien, image, miniature, code_video, txt_video, meta_title, titre_lien, lien_target)
VALUES ('$new_date', '$new_titre', '$new_chapeau', '$new_contenu', '$new_lien', '$dest_dossier$dest_fichier', '$dest_mini_dossier$dest_mini_fichier',
'$new_code_video', '$new_texte_video', '$new_titre_page', '$new_titre_lien', '$new_lien_cible')" ;
$result = mysql_query ($query)
or die('Erreur : '.mysql_error()) ;
// redirection vers la page de gestion des actualités
echo ("<p>Fiche enregistrée</p>");
include_once ("include/menu_options_admin.inc") ;
//header('Location: actus_gestion.php') ;
} // FIN copie du fichier
} // FIN vérification présence d'un fichier
else
{
//echo "<p>il n'y pas de fichier</p>";
// enregistrement de la fiche
$query = "INSERT INTO tmtd_news (date_publ, titre, chapeau, contenu, lien, code_video, txt_video, meta_title, titre_lien, lien_target)
VALUES ('$new_date', '$new_titre', '$new_chapeau', '$new_contenu', '$new_lien', '$new_code_video',
'$new_texte_video', '$new_titre_page', '$new_titre_lien', '$new_lien_cible')" ;
$result = mysql_query ($query)
or die('Erreur : '.mysql_error()) ;
// redirection vers la page de gestion des acualités
echo ("<p>Fiche enregistrée</p>");
include_once ("include/menu_options_admin.inc") ;
//header('Location: actus_gestion.php') ;
}
} // FIN traitement du contenu du formulaire