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.'"');
    }
}
?>
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&amp;page=<?php echo ($value['page']); ?>&amp;file=<?php echo ($value['nomFichier']); ?><br>
                            <a href="index.php?section=nousSoutenir&amp;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