Bonjour,
j'ai un petit probème, dans la création de l'admin de mon site photo, je dois pouvoir uploader 20 photos en même temps donc je fais une boucle pour l'upload... mais la page met entre 30 et 45 secondes à se rafraichir et ca ne marche pas ca me met erreur 500...
La fonction d'upload:
function upload($index,$destination,$maxsize=FALSE,$extensions=FALSE)
{
//Test1: fichier correctement uploadé
if (!isset($_FILES[$index]) OR $_FILES[$index]['error'] > 0) return FALSE;
//Test2: taille limite
if ($maxsize !== FALSE AND $_FILES[$index]['size'] > $maxsize) return FALSE;
//Test3: extension
$ext = substr(strrchr($_FILES[$index]['name'],'.'),1);
if ($extensions !== FALSE AND !in_array($ext,$extensions)) return FALSE;
//Déplacement
return move_uploaded_file($_FILES[$index]['tmp_name'],$destination);
}
Le code de la page:
<?php session_start();
include("function.inc.php");
verif_connex("login.php");
connect_db();
?>
<?php
if (
(isset($_POST['titre']) && !empty($_POST['titre']))
&& (isset($_POST['keyword']) && !empty($_POST['keyword']))
&& (isset($_POST['contenu']) && !empty($_POST['contenu']))
&& (isset($_POST['resume']) && !empty($_POST['resume']))
)
{
$titre=$_POST['titre'];
$keyword=$_POST['keyword'];
$contenu=$_POST['contenu'];
$resume=$_POST['resume'];
$date=time();
$titre_nospace = str_replace(' ', '-', $titre);
$direction='../img/thumb/'.time().'-'.$titre_nospace.'.jpg';
$lien_img='img/thumb/'.time().'-'.$titre_nospace.'.jpg';
// On passe à l'upload du fichier
upload('thumb',$direction ,1048576, FALSE );
// On insère les données dans la bdd
mysql_query("INSERT INTO galerie VALUES('', '$titre', '$resume', '$date', '$keyword', '$lien_img', '$contenu')")or die(mysql_error());
$id_galerie=mysql_insert_id();
for ($up = 1; $up <= 20; $up++)
{
$nom='photo'.$up.'';
$titre_nospace = str_replace(' ', '-', $titre);
$direction='../img/galerie/'.time().'-'.$titre_nospace.'-'.$up.'.jpg';
$lien='img/galerie/'.time().'-'.$titre_nospace.'-'.$up.'.jpg';
$up= upload($nom ,$direction ,1048576, FALSE );
if($up) mysql_query("INSERT INTO photo VALUES( '', '$lien', '$id_galerie')");
}
}// Fin du if de verification des données
else { $erreur="Merci de remplir le formulaire correctement"; }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Mon pixel, Admin</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1;" />
<link href="css/helper.css" media="screen" rel="stylesheet" type="text/css" />
<link href="css/dropdown.css" media="screen" rel="stylesheet" type="text/css" />
<link href="css/default.advanced.css" media="screen" rel="stylesheet" type="text/css" />
<link type="text/css" rel="stylesheet" href="css/style.css" />
<!-- TinyMCE -->
<script type="text/javascript" src="../tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
// General options
mode : "textareas",
theme : "advanced",
plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups",
// Theme options
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
// Example word content CSS (should be your site CSS) this one removes paragraph margins
content_css : "css/word.css",
// Drop lists for link/image/media/template dialogs
template_external_list_url : "lists/template_list.js",
external_link_list_url : "lists/link_list.js",
external_image_list_url : "lists/image_list.js",
media_external_list_url : "lists/media_list.js",
// Replace values for the template plugin
template_replace_values : {
username : "Some User",
staffid : "991234"
}
});
</script>
</head>
<body>
<?php include("header.inc.php"); ?>
<h1>Poster un article</h1>
<form action="#" method="post" enctype="multipart/form-data">
<div class="tableau">
<table border="0" >
<tr>
<td>Titre:</td>
<td><input name="titre" type="text" /> </td>
</tr>
<tr>
<td>Keyword:</td>
<td><input name="keyword" type="text" value="5 max,virgule entre chaque" /></td>
</tr>
<tr>
<td>Illustration<br />
(600*200)</td>
<td><input name="thumb" type="file" /></td>
</tr>
</table>
</div>
<h2>Description de la galerie</h2>
<textarea name="contenu" cols="100" rows="10"></textarea>
<h2> Réumé, une ou deux lignes</h2>
<textarea name="resume" cols="100" rows="5"></textarea>
<h2>Uploader les photos, 20 maximum par galerie !</h2>
<?php for ($nombre_de_champs = 1; $nombre_de_champs <= 20; $nombre_de_champs++)
{ ?>
<input name="photo<?php echo $nombre_de_champs; ?>" type="file" /><br />
<?php } ?>
<br />
<input name="send" type="submit" value="Envoyer" />
</form>
</div>
</body>
</html>