Probleme sur un Script multi upload, Tableau
Posté : 08 janv. 2011, 22:04
Salut tout le monde , j'ai parcouru les tutos , le forum , j'essaye de comprendre , je commence a saisir la logique , je réussi à gérer les valeurs des tableaux , mais là on m'a filé un script de multi-upload , je l'ai déjà personnalisé pour entrer le nombre de fichiers à uploader , tout marche , SAUF , que mon but au final n'est pas le simple upload ( qui fonctionne très bien ) mais la récupération du nom des images envoyées , ainsi que le nom dynamique d'un formulaire hidden qui au final me donnera le nom de la table dans laquelle sera stockée mon image.
j'ai indiqué dans le script via de beaux ////// les lieux stratégiques pour moi
1/ Dans le premier cas , j'ai fait un input en hidden qui récupère la valeur $x de la boucle for qui permet d'afficher le nb de champs input file désiré , qui s'incrémente et qui me donne surtout un name égal au nom de la table ou sera stockée l'image , image_1 , image_2 etc ...
2/ Il s'agit de la zone d'affichage des fichiers , leur nom etc ... au final je voudrai les récupérer dans un input hidden avec un bouton pour injecter en base , pour cela il me faut récupérer la valeur du name="img[]"
Je réussi à afficher le tableau , mais la zone de résultat est prise dans un "foreach" et j'ai de gros pb d'affichage , si j'ai 6 images envoyées , j'ai les 6 lignes du tableau sous le nom de la premiere image , de la 2eme etc ...
Là je bloque depuis 2 jours , le pire c'est que je sens que je ne suis pas loin , mais j'y suis pas !
Donc mon but final ,
Avoir un ligne par fichier envoyé visible avec le nom de l'image envoyée , dessous en hidden un form avec 2 input , pour value , le nom de l'image , et la valeur "img[]" du form hidden que j'ai mentionné dans le paragraphe 1/
Merci déjà à ceux qui vont prendre de leur temps pour me venir en aide
, je ne vous demande pas de tout faire , j'ai envie de comprendre , si on pouvait me conseiller dans ce cas précis , j'aurai déjà matière a cramer le reste des neurones de mon cerveau !
Voici mon code :
j'ai indiqué dans le script via de beaux ////// les lieux stratégiques pour moi
1/ Dans le premier cas , j'ai fait un input en hidden qui récupère la valeur $x de la boucle for qui permet d'afficher le nb de champs input file désiré , qui s'incrémente et qui me donne surtout un name égal au nom de la table ou sera stockée l'image , image_1 , image_2 etc ...
2/ Il s'agit de la zone d'affichage des fichiers , leur nom etc ... au final je voudrai les récupérer dans un input hidden avec un bouton pour injecter en base , pour cela il me faut récupérer la valeur du name="img[]"
Je réussi à afficher le tableau , mais la zone de résultat est prise dans un "foreach" et j'ai de gros pb d'affichage , si j'ai 6 images envoyées , j'ai les 6 lignes du tableau sous le nom de la premiere image , de la 2eme etc ...
Là je bloque depuis 2 jours , le pire c'est que je sens que je ne suis pas loin , mais j'y suis pas !
Donc mon but final ,
Avoir un ligne par fichier envoyé visible avec le nom de l'image envoyée , dessous en hidden un form avec 2 input , pour value , le nom de l'image , et la valeur "img[]" du form hidden que j'ai mentionné dans le paragraphe 1/
Merci déjà à ceux qui vont prendre de leur temps pour me venir en aide
Voici mon code :
<?php
function FILE_UPLOADER($file_types_array=array('jpg','gif','png','bmp','jpeg'),
$max_file_size=1048576, $upload_dir="../../upload/")
{
$num_of_uploads=$_POST['nombre'];
if(!is_numeric($max_file_size)){
$max_file_size = 1048576;
}
$max_file_size_Mo = $max_file_size/1048576;
if(!isset($_POST['submitted'])){
$form = '<center><form action="" method="post" enctype="multipart/form-data">
Telechargement de fichier:<br /><br /><input type="hidden" name="submitted" value="TRUE" id="'.time().'">
<input type="hidden" name="MAX_FILE_SIZE" value="'.$max_file_size.'">';
for($x=0;$x<$num_of_uploads;$x++){
$form .= '<input type="file" name="file[]"><font color="red">*</font><br /><br />
///////////////////////////////////////////////////////////////////////////////////////
// Mon input Hidden qui recupère la valeur $x de la boucle for
<input type="texte" name="img[]" value="image_'.($x+1).'"><br /><br />';
///////////////////////////////////////////////////////////////////////////////////////
}
$form .= '<input type="submit" value="Telecharger"><br /><font color="red">*</font>
Type(s) de fichiers autorisés: ';
$y=count($file_types_array);
for($x=0;$x<$y;$x++){
if($x<$y-1){
$form .= $file_types_array[$x].', ';
}else{
$form .= $file_types_array[$x].'.';
}
}
$form .= '</form></center>';
echo($form);
}else{
foreach($_FILES['file']['error'] as $key => $value){
if($_FILES['file']['name'][$key]!=""){
if($value==UPLOAD_ERR_OK){
$origfilename = $_FILES['file']['name'][$key];
$filename = explode('.', $_FILES['file']['name'][$key]);
$filenameext = $filename[count($filename)-1];
unset($filename[count($filename)-1]);
$filename = implode('.', $filename);
$filename = substr($filename, 0, 15).'.'.$filenameext;
$file_ext_allow = FALSE;//par mesure de securité on suppose l'extenion du fichier fausse
//verifions si notre fichier fait partie des types autorisés
if(false !== ($iClef = array_search($filenameext, $file_types_array))) {
$file_ext_allow = TRUE;
}
if($file_ext_allow){
if($_FILES['file']['size'][$key]<$max_file_size){
if(move_uploaded_file($_FILES['file']['tmp_name'][$key], $upload_dir.$filename))
{
///////////////////////////////////////////////////////////////////////////////////////
//// Voila les 2 lignes qui permettent d'afficher le nom des fichiers avec hyperlien ,
echo ('Transfert de fichier effectué avec succès.
<a href="'.$upload_dir.$filename.'" target="_blank">'.$filename.'</a><br />');
///////////////////////////////////////////////////////////////////////////////////////
/*evidemment plutot que d'afficher ici le lien vers le fichier uploader
sur le serveur vous pouvez proceder à une redirection vers une autre page*/
}else{
echo('Une erreur est survenue lors du transfert de '.'<strong>'.$origfilename.'</strong><br />');
}
}else{
echo('La taille du fichier '.''.$origfilename.''.' excède les '.$max_file_size_Mo.' Mo autorisé(s)');
}
}else{
echo('Le fichier '.''.$origfilename.''.' a une extension invalide, ERREUR DE TRANSFERT !<br />');
}
}else{
echo('Une erreur est survenue lors du transfert de '.'<strong>'.$origfilename.'</strong>');
}
}
}
}
}
// on affiche le formulaire
echo '<FORM METHOD="post">';
// on affiche tous les champs du formulaire
echo 'Combien d\'image voulez vous uploader: <INPUT TYPE="text" name="nombre"><br />';
echo '<INPUT TYPE="submit" NAME="submit" VALUE="Envoyer">';
echo '</FORM>';
// execution de la fonction
FILE_UPLOADER();
?>