Menu

Erreur durant l'importation de fichier [Résolu/Fermé]

ismael-ouatt 76 Messages postés mercredi 18 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention - 3 févr. 2017 à 10:53 - Dernière réponse : ismael-ouatt 76 Messages postés mercredi 18 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention
- 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 !
Afficher la suite 

8 réponses

Pitet 2378 Messages postés lundi 11 février 2013Date d'inscription 2 février 2018 Dernière intervention - 3 févr. 2017 à 14:38
0
Utile
1
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,
ismael-ouatt 76 Messages postés mercredi 18 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention - 3 févr. 2017 à 16:44
désolé
ça ne marche pas
ismael-ouatt 76 Messages postés mercredi 18 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention - 4 févr. 2017 à 09:42
0
Utile
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 ??????
yg_be 5287 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 4 févr. 2017 à 11:33
0
Utile
1
bonjour, peux-tu ajouter
print_r($_files);
en cas d'erreur?
ismael-ouatt 76 Messages postés mercredi 18 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention - 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 )
ismael-ouatt 76 Messages postés mercredi 18 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention - 6 févr. 2017 à 13:58
0
Utile
2
un constat, il passe avec les fichiers excel ça passe mais pas avec les fichiers pdf
yg_be 5287 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 23 avril 2018 Dernière intervention - 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.
ismael-ouatt 76 Messages postés mercredi 18 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention - 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