Erreur durant l'importation de fichier

Résolu/Fermé
ismael-ouatt Messages postés 78 Date d'inscription mercredi 18 novembre 2015 Statut Membre Dernière intervention 26 juillet 2018 - 3 févr. 2017 à 10:53
ismael-ouatt Messages postés 78 Date d'inscription mercredi 18 novembre 2015 Statut Membre Dernière intervention 26 juillet 2018 - 7 févr. 2017 à 13:02
Bonjour,
J'ai un code qui me permet de rentrer des données dans un formulaire puis d'uploader un fichier de type doc, docx, pdf, xls et xslx. Voici le code HTML du formulaire:
<form method="post" action="" enctype="multipart/form-data">
        <legend>Enregistrement du certificat d'étalonnage et de la périodicité :</legend>
        <div id="block">
            <div>
                <label for="select_etalon">L'étalon:</label>
                <select name="select_etalon" required>
                    <option value=""></option>
                    <?php
                    $req = $bdd -> query('SELECT id_etalon,nom_etalon FROM etalon ORDER BY nom_etalon');
                    while($etalon = $req -> fetch())
                    {
                        ?>
                    <option value="<?php echo $etalon['id_etalon']; ?>"><?php echo $etalon['nom_etalon']; ?></option>
                        <?php
                    }
                    $req -> closeCursor();
                    ?>
                </select>

                <label for="periodicite">Périodicité</label>
                <input type="number" name="periodicite" max="15" min="1" style="height: 30px" required>
                <select name="moa" required style="height: 30px;">
                    <option value=""></option>
                    <option value="mois">Mois</option>
                    <option value="année">Années</option>
                </select>
                <br><br>
            </div>
            <div>

                <label>Date d'étalonnage</label>
                <select name="jj">
                    <script language="JavaScript">for(i=1;i<=31;i++)document.write('<option value="'+i+'">'+i+'</option>');</script>
                </select>
                <select name="mm">
                  <script language="JavaScript">for(i=1;i<=12;i++)document.write('<option value="'+i+'">'+i+'</option>');</script>
                </select>
                <select name="aa">
                  <script language="JavaScript">var d = new Date();var aaaa = d.getFullYear();for(i=2013;i<=aaaa;i++)document.write('<option value="'+i+'">'+i+'</option>');</script>
                </select>
                <label for="date_proch">Date du prochain étalonnage</label>
                <select name="jr">
                    <script language="JavaScript">for(i=1;i<=31;i++)document.write('<option value="'+i+'">'+i+'</option>');</script>
                </select>
                <select name="moi">
                  <script language="JavaScript">for(i=1;i<=12;i++)document.write('<option value="'+i+'">'+i+'</option>');</script>
                </select>
                <select name="an">
                  <script language="JavaScript">var d = new Date();var aaaa = d.getFullYear();for(i=2013;i<=aaaa+10;i++)document.write('<option value="'+i+'">'+i+'</option>');</script>
                </select>
            </div>
            <div>

                <label for="ce_etal">N° du certificat d'étalonnage</label><input type="text" name="ce_etal" id="ce_etal" placeholder="CE Etalon" value="<?php if(isset($_POST['ce_etal'])){echo $_POST['ce_etal'];} ?>" />
                <label for="fce">Certificat d'étalonnage (pdf, doc,docx, xls, xlsx)</label>
                <!-- MAX_FILE_SIZE doit précéder le champ input de type file -->
                <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
                <input type="file" name="fce" required>
            </div>
        </div>
        <br>
        <input type="submit" name="envoyer" value="Envoyer">
    </form>


Et voici le code PHP du traitement de ce formulaire et de l'enregistrement en bdd:
<?php
if(isset($_POST['envoyer']))
{
    $select_etalon = $_POST['select_etalon'];
    $periodicite = $_POST['periodicite'].' '.$_POST['moa'];
    $date_etalonnage = $_POST['aa'].''.$_POST['mm'].''.$_POST['jj'];
    $date_proch = $_POST['an'].''.$_POST['moi'].''.$_POST['jr'];
    $ce_etal = htmlspecialchars($_POST['ce_etal']);
    
    $nom_fic = $_FILES['fce']['name'];
    $type_fic = $_FILES['fce']['type'];
    $taille_fic = $_FILES['fce']['size'];
    $tmp_fic = $_FILES['fce']['tmp_name'];
    $code_erreur = $_FILES['fce']['error'];
    $compoforname = 'ce'.$select_etalon.$_POST['jj'].''.$_POST['mm'].''.$_POST['aa'];
    
    //$ext_fic = strtolower(end(explode('.',$_FILES['fce']['name'])));
    $ext_fic = strtolower(substr(strrchr($_FILES['fce']['name'], '.'),1));
    
    $extensions = array("pdf","doc","docx","xls","xlsx");
    $taille_max = 3145728;
    
    if(in_array($ext_fic,$extensions) === FALSE)
    {
        $erreur = '<strong>Votre fichier doit être au format pdf, doc, docx, xls, ou xlsx !</strong>';
    }
    else
    {
        if($taille_fic > $taille_max)
        {
            $erreur = '<strong>La taille de votre fichier doit ëtre inférieur à 3 Mo !</strong>';
        }
        else
        {
            $chemin = "documentation/fichiers/ce_etalons/".$compoforname.".".$ext_fic;
            $resultat=move_uploaded_file($tmp_fic,$chemin);
            if($resultat)
            {
                $reqete=$bdd->prepare('INSERT INTO periodicite_etalon (id_etalon,date_precedente,date_suivante,periodicite,fce) VALUES (?,?,?,?,?)');
                $reqete->execute(array($select_etalon,$date_etalonnage,$date_proch,$periodicite,$compoforname.".".$ext_fic));
                
                //incertion du ce etalon dans la table étalon
                $incce = $bdd -> prepare('UPDATE etalon ce_etalon = ? WHERE id_etalon = ?');
                $incce -> execute(array($ce_etal,$select_etalon));

                $message='<strong>Périodicité sauvé avec succès !</strong>';
            }
            else
            {
                $erreur = '<strong>Erreur durant l\'importation de votre fichier !</strong>';
            }
       }
    }
    
}
?>

Mon problème est que chaque fois que j'éssai de renseigner le formulaire pour l'enregistrer en bdd, c'est le message d'erreur suivant qui s'affiche:
$erreur = '<strong>Erreur durant l\'importation de votre fichier !</strong>';
comme si le code n'arrivait pas à entrer dans la boucle après la ligne suivante:
 $resultat=move_uploaded_file($tmp_fic,$chemin);

J'ai cherché l'erreur d'importation de mon fichier pendant longtempmais je n'arrive pas à l'identifier, quelqu'un pourrait-il m'aider SVP ?
Merci !
A voir également:

4 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
3 févr. 2017 à 14:38
Salut,

Active l'affichage des messages d'erreur PHP en ajoutant ce code au début de ton fichier php :
ini_set('display_errors', true);
error_reporting(E_ALL);


Le message d'erreur devrait permettre de mieux cibler le problème.

Bonne journée,
0
ismael-ouatt Messages postés 78 Date d'inscription mercredi 18 novembre 2015 Statut Membre Dernière intervention 26 juillet 2018 1
3 févr. 2017 à 16:44
désolé
ça ne marche pas
0
ismael-ouatt Messages postés 78 Date d'inscription mercredi 18 novembre 2015 Statut Membre Dernière intervention 26 juillet 2018 1
4 févr. 2017 à 09:42
Ce qui me parait bizarre c'est que lorsque je l'utilise pour uploader les fichiers image(lorsque j'autorise l'importation de fichier d'extension image biensur), ça marche nikel, mais pas avec les documents je n'arrive pas à importer cela me fatigue ??????
0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 Ambassadeur 1 557
4 févr. 2017 à 11:33
bonjour, peux-tu ajouter
print_r($_files);
en cas d'erreur?
0
ismael-ouatt Messages postés 78 Date d'inscription mercredi 18 novembre 2015 Statut Membre Dernière intervention 26 juillet 2018 1
6 févr. 2017 à 13:38
Désolé pour le temps mis avant de répondre
Voici ce que je reçoi en cas d'erreur en ajoutant print_r($_files); :
Array ( [name] => nom_du_fichier.pdf [type] => [tmp_name] => [error] => 2 [size] => 0 )
0
ismael-ouatt Messages postés 78 Date d'inscription mercredi 18 novembre 2015 Statut Membre Dernière intervention 26 juillet 2018 1
6 févr. 2017 à 13:58
un constat, il passe avec les fichiers excel ça passe mais pas avec les fichiers pdf
0
yg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 1 557
6 févr. 2017 à 14:59
error = 2.
La taille du fichier téléchargé excède la valeur de MAX_FILE_SIZE, qui a été spécifiée dans le formulaire HTML.
0
ismael-ouatt Messages postés 78 Date d'inscription mercredi 18 novembre 2015 Statut Membre Dernière intervention 26 juillet 2018 1
7 févr. 2017 à 13:02
ça marche très bien merci pour la réponse
ça va beaucoup me servir, je n'avais pas pensé à ça
merci
0