Signaler

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

Posez votre question ismael-ouatt 59Messages postés mercredi 18 novembre 2015Date d'inscription 30 avril 2017 Dernière intervention - Dernière réponse le 7 févr. 2017 à 13:02 par ismael-ouatt
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 
Utile
+0
plus moins
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 59Messages postés mercredi 18 novembre 2015Date d'inscription 30 avril 2017 Dernière intervention - 3 févr. 2017 à 16:44
désolé
ça ne marche pas
Répondre
Donnez votre avis
Utile
+0
plus moins
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 ??????
Donnez votre avis
Utile
+0
plus moins
bonjour, peux-tu ajouter
print_r($_files);
en cas d'erreur?
ismael-ouatt 59Messages postés mercredi 18 novembre 2015Date d'inscription 30 avril 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 )
Répondre
Donnez votre avis
Utile
+0
plus moins
un constat, il passe avec les fichiers excel ça passe mais pas avec les fichiers pdf
yg_be 2870Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 26 juillet 2017 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.
Répondre
ismael-ouatt 59Messages postés mercredi 18 novembre 2015Date d'inscription 30 avril 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
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !