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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.'"'); } } ?>Image du rendu de mon HTML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
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 aideet bonne journée
Partager