Formulaire d'upload ne fonctionne qu'une fois avec le meme fichier
Bonjour :), voila j'ai un petit problème sur mon site en développement qui est fort fâcheux
Mon code fonctionne bien, mais une seule fois pour un même fichier, je m'explique:
Phase1 :Si j'upload un fichier: "test1" ça fonctionne bien il est bien uploadé dans le dossier fichierPDF (+ une entrée dans la bdd)
Phase2 : Si j'upload un fichier: "test2" ça fonctionne bien il est bien uploadé dans le dossier fichierPDF (+ une entrée dans la bdd)
Phase3 : Si je supprime le fichier "test1" grâce à ma fonction deletePdf, il est bien supprimé (fichier et bdd)
Phase4 : Si j'upload un fichier: "test1" juste après l'avoir supprimé, alors il n'est pas uploadé et rien d'écrit dans la bdd non plus
MAIS (changeons la phase 3 et la phase 4)
Phase3 : Si je supprime manuellement le fichier "test1" (j'explore les dossiers à la main; et je supprime manuellement l'entrée dans la bdd avec phpmyadmin)
Phase4 : Si j'upload un fichier: "test1" ça fonctionne bien il est bien uploadé dans le dossier fichierPDF
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| <?php
if(!empty($_SESSION['superAdminOn']) && superAdmin())
{
//Extensions autorisées
$extensionsOk = 'pdf';
if(!empty($_POST['page']) && !empty($_POST['nomFichier']) && strlen($_POST['nomFichier']) < 40 && !ctype_space($_POST['nomFichier']))
// Si l'utilisateur a choisi une variable ainsi qu'a mis un fichier
{
if ($_FILES['fichier']['error'] == 0 && $_FILES['fichier']['size'] <= 5242880 && (substr(strrchr($_FILES['fichier']['name'], '.'), 1) == $extensionsOk))
{
//On récupère l'extension d'une autre manière
$extension_fichier = pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION);
if($extension_fichier==$extensionsOk)
{
$nomFichier = preg_replace("/[^A-Z0-9._-]/i", "_", $_POST['nomFichier']);
$nomFichierComplet = $nomFichier.'.'.$extension_fichier;
$page=$_POST['page'];
$nbre = run('SELECT COUNT(*) as nbre FROM autresfichierspdf WHERE page = "'.$page.'" AND nomFichier = "'.$nomFichier.'"')->fetch_object();
while($nbre->nbre >= 1)
{
unlink('fichierPDF/'.$page.'/'.$nomFichier.'.pdf');
run('DELETE FROM autresfichierspdf WHERE page = "'.$page.'" AND nomFichier = "'.$nomFichier.'"');
$nbre = run('SELECT COUNT(*) as nbre FROM autresfichierspdf WHERE page = "'.$page.'" AND nomFichier = "'.$nomFichier.'"')->fetch_object();
}
//insertion du nouveau fichier
$resultat = move_uploaded_file($_FILES['fichier']['tmp_name'],'fichierPDF/'.$page.'/'.$nomFichier.'.pdf');
run('INSERT INTO autresfichierspdf(nomFichier, page, tailleFichier) VALUES("'.$nomFichier.'", "'.$page.'" , '.$_FILES['fichier']['size'].')');
}
}
########### FIN GESTION FICHIER ###########
}
if(!empty($_GET['delete']) && !empty($_GET['section'])){
//si l'utilisateur supprime un menu
$nomFichier = $mysqli->real_escape_string($_GET['delete']);
$page = $mysqli->real_escape_string($_GET['section']);
deletePdf($nomFichier, $page);
}
}$listePdf = getPdf("nousSoutenir");?> |
Les fonctions qui me servent :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| function getPdf($page)
//fonction qui permet de recuperer la liste des menus
{
$tmp = run('SELECT nomFichier, page
FROM autresfichierspdf WHERE page = "'.$page.'"');
$listePdf = NULL;
if($tmp)
{
$i=0;
while($donnees = $tmp->fetch_object())
{
$listePdf[$i]['nomFichier'] = $donnees->nomFichier;
$listePdf[$i]['page'] = $donnees->page;
$i++;
}
}
return $listePdf;
}
function deletePdf($nomFichier, $page)
//fonction qui permet de supprimer un fichier pdf
{
if(file_exists('fichierPDF/'.$page.'/'.$nomFichier.'.pdf'))
{
unlink('fichierPDF/'.$page.'/'.$nomFichier.'.pdf');
run('DELETE FROM autresfichierspdf WHERE page = "'.$page.'" AND nomFichier = "'.$nomFichier.'"');
}
}
?> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <div id="uploaderFichier">
<h3>Uploader un fichier PDF</h3>
<form method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="5242880" />
<input type="hidden" name="page" value="nousSoutenir" />
<label>Nom du fichier (sans accents):</label>
<input type="text" name="nomFichier"/><br>
<label>Selectionner le fichier (5Mo maximum) :</label>
<input type="file" name="fichier"/><br>
<input type="submit" value="Envoyer"/>
</form>
</div>
<!-- On affiche les differents fichiers mis en ligne pour pouvoir ensuite les supprimer-->
<?php if($listePdf != NULL){
foreach($listePdf as $key => $value){
?>
Lien vers le fichier <?php echo ($value['nomFichier']); ?>: index.php?section=telechargerAutresPdf&page=<?php echo ($value['page']); ?>&file=<?php echo ($value['nomFichier']); ?><br>
<a href="index.php?section=nousSoutenir&delete=<?php echo ($value['nomFichier']); ?>">Supprimer le fichier <?php echo ($value['nomFichier']); ?></a><br><br>
<?php } }
} ?>
</div> |
Image du rendu de mon HTML
J'espère avoir été assez clair dans l'explication de mon problème.
Je précise que dans ma première "Phase 4", c'est à dire celle où il y a un problème, le premier bout de code que j'ai fourni est parcouru entièrement (sauf la boucle while mais ça c'est normal): j'ai fais des tests avec la fonction "echo".
Merci beaucoup de votre future aide :) et bonne journée