IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Formulaire d'upload ne fonctionne qu'une fois avec le meme fichier


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Par défaut 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 : 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

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Par défaut
    Problème résolu provenant de la position de dans le code.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fermeture d'un formulaire : Ne fonctionne qu'une fois sur deux
    Par hellmaster78 dans le forum VBA Access
    Réponses: 6
    Dernier message: 02/04/2008, 11h35
  2. bouton submit qui ne fonctionne qu'une fois
    Par sam01 dans le forum Langage
    Réponses: 6
    Dernier message: 06/07/2007, 08h19
  3. [AJAX] Méthode sous Ajax qui ne fonctionne qu'une fois?
    Par patrice419 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/04/2007, 13h19
  4. Réponses: 2
    Dernier message: 26/06/2006, 13h43
  5. allocation dynamique ne fonctionne qu une fois.
    Par michael urbain dans le forum C
    Réponses: 7
    Dernier message: 11/03/2006, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo