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 :

Insertion fichier audio et vidéo dans une BD


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 502
    Points : 770
    Points
    770
    Par défaut Insertion fichier audio et vidéo dans une BD
    Salut les développeurs.
    J'ai un soucis avec mon application.
    En fait je cherche à insérer un fichier audio et vidéo (pas en même temps) dans ma BD.
    Le soucis c'est que le fichier n'est pas ajouté, et le navigateur ne m'affiche pas d'erreur, c'est une page blanche.
    Comment faire pour me sortir de cette impasse.
    Merci pour vos lumières.

    Code SQL de la BD :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CRETE TABLE IF NOT EXISTS 'audio' (
    id_audio int(11) NOT NULL Auto_incrément, 
    fichier varchar(255), 
    description varchar(255),
    date datetime, 
    PRIMARY KEY('id_audio')) ;

    Code du formulaire (envoie_audio.php)
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <forum method="POST" enctype="multipart/forum-data" action ="traitement.php">
    <label>parourir</label>
    <input type="file" name="fichier" />
    <label>description </label>
    <textarea name="description" />
    <input type="submit" value="envoyer" name="enregistrer" />
    <input type="reste" value="annuler" />
    </form>

    Fichier de traitement (traitement.php)
    Code PHP : 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
     
    <?php
    include ('bd.php');
    if(isset($_POST['enregistrer'])){
    global $con;
    $fichier =$_FILES['fichier'] ['name'] ;
    $fichier_tmp=$_FILES ['fichier']['tmp_name'];
    move_uploaded_file ($fichier_tmp, "dossier de destination/$fichier") ;
    $description =$_POST['description'] ;
    $insert= "INSERT INTO audio (fichier, description, date) VALUES ('$fichier', '$description', NOW()) ";
    $run=mysqli_query($con, $insert) ;
    if ($run) {
    echo "<script>alert('Fichier envoyé avec succès') </script>;
    echo"<script >window.open('envoi_audio.php','_self')</script >
    } 
    else{
    echo "<script >alert('Exhec') </script>" ;
    echo "<script >window.open('envoie_audio.php', '_self') </script>" ;
    } 
    } 
     ? >

    Fichier de connexion à la BD (bd.php)
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $con=mysqli_connect('localhost', 'root', '', 'denonce') ;
    if (mysqli_connect_errno()) {
    echo 'Failled to connect to MYSQL:'.$mysqli_connect_errno();
    }
    ?>

    Nom de la BD : denonce.

    Je rappelle que je réussi à envoyer les fichier Pdf, images, ce sont les fichiers audio et vidéos qui ne s'enregistre pas.

    Merci pour vos lumières.
    Cordialement.

  2. #2
    Membre averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 164
    Points : 377
    Points
    377
    Par défaut
    Bonjour,

    Alors, dans un premier temps, j'aimerais te dire que partager du code ok, mais du code bourré de fautes de syntaxe sans indentation c'est un peu limite.
    En fessant tu risques de rebuter les personnes voulant t'aider, car j'ai passé plus de temps à corriger du code défectueux qu'à résoudre ton problème.
    Bref je te renvoie ton code (les erreurs de syntaxes en moins) :

    Script SQL sous MySQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DROP TABLE IF EXISTS `audio`;
    CREATE TABLE IF NOT EXISTS `audio` (
      `id_audio` int(11) NOT NULL AUTO_INCREMENT,
      `fichier` varchar(255) NOT NULL,
      `description` varchar(255) NOT NULL,
      `date` date NOT NULL,
      PRIMARY KEY (`id_audio`)
    ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
    Formulaire envoie_audio.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <form method="POST" action="traitement.php" enctype="multipart/form-data">
        <div>
            <label for="file">parourir</label>
            <input name="fichier" type="file" id="file"/>
        </div>
        <div>
            <label for="description">description </label>
            <textarea name="description" id="description"></textarea>
        </div>
        <input type="submit" value="envoyer" name="enregistrer"/>
        <input type="submit" value="annuler" name="annuler"/>
    </form>
    Le fichier traitement.php :
    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
    <?php
     
    include ('bd.php');
     
    if (isset($_POST['enregistrer'])) {
        global $con;
     
         $fichier     = $_FILES['fichier']['name'] ;
        $fichier_tmp = $_FILES['fichier']['tmp_name'];
     
         $move = move_uploaded_file($fichier_tmp, 'tmp_musique' . DIRECTORY_SEPARATOR . $fichier);
     
        $description = $_POST['description'] ;
        $insert      = "INSERT INTO audio (fichier, description, date) VALUES ('$fichier', '$description', NOW());";
     
         if (mysqli_query($con, $insert)) {
            echo "<script>alert('Fichier envoyé avec succès')</script>";
            echo "<script>window.open('envoi_audio.php','_self')</script>";
        }
        else {
            echo "<script>alert('Echec')</script>";
            echo "<script>window.open('envoie_audio.php', '_self')</script>";
        }
    }
    Le fichier bd.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
    $con = mysqli_connect('localhost', 'root', '', 'denonce');
     
    if (mysqli_connect_errno()) {
        echo 'Failled to connect to MYSQL:' . $mysqli_connect_errno();
    }
    Ton code fonctionne parfaitement pour les tous types de fichiers, mais effectivement je suis tombé sur un problème lorsque j'ai voulu upload un audio.
    Si tu affiches ton $_FILES tu peux voir si ton fichier comporte une ou plusieurs erreurs.
    Tu trouveras la correspondance avec les codes erreurs ici : http://php.net/manual/fr/features.fi...oad.errors.php
    Pour moi il s'agissait simplement de l'erreur UPLOAD_ERR_INI_SIZE car j'ai mis un trop gros fichier audio pour tester le formulaire.

    Voilà une piste pour ton problème.

    Bon courage pour la suite

    PS: pense bien à valider tes données, renommer proprement ton fichier à l'upload, échapper les caractères lors de l'insertion de données et utiliser PDO plutôt que mysqli_connect.
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Le problème peut provenir des limites de données post et d'upload définies dans php.ini. Essai d'augmenter la valeur post_max_size et de upload_max_filesize directement dans php.ini pour voir ce qui se passe (ces valeurs ne peuvent pas être changés avec ini_set()).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $insert= "INSERT INTO audio (fichier, description, date) VALUES ('$fichier', '$description', NOW()) ";
    Non, on n'insère pas des variables provenant d'un formulaire directement dans une requête SQL, on utilise une requête préparée (voir mysqli::prepare()).
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Non, on n'insère pas des variables provenant d'un formulaire directement dans une requête SQL, on utilise une requête préparée (voir mysqli::prepare()).
    +1. Un exemple :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $insert = 'INSERT INTO audio ( fichier, description, date  )
               VALUES            ( ?,       ?,           NOW() )';
    $stmt = $con->prepare($insert);
    $stmt->bind_param('ss', $fichier, $description);
    $run = $stmt->execute();

    Je rajouterais :
    Si on est en dehors de toute fonction, l’instruction global $con; ne sert à rien (au mieux).

    Ça pourrait être une bonne idée de laisser tomber le JavaScript, dans un premier temps, et de faire un simple echo '<a href="envoi_audio.php"> test </a>'. De manière générale, il vaut mieux éviter de mélanger JS et PHP. Le JS est plus heureux quand il est dans son propre fichier, c’est mieux pour la maintenance, et ça permet au client de faire de la mise en cache.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  5. #5
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 502
    Points : 770
    Points
    770
    Par défaut
    Bonsoir, merci beaucoup pour votre précieux temps que vous avez pris pour m'aider.
    Je prendrai en compte vos remarques et je vous donnerai la suis.

    Cordialement.

  6. #6
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 502
    Points : 770
    Points
    770
    Par défaut
    Bonsoir les développeurs, après modification de mon code en tenant compte de remarques, j'ai toujours le même problème.
    Le problème persiste. Le navigateur m'affiche toujours une page blanche.

    Cordialement.

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Bonsoir, peux-tu nous montrer ton code actuel ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Insertion d'un fichier vidéo dans une page .aspx
    Par Publicnew dans le forum ASP.NET
    Réponses: 1
    Dernier message: 18/02/2014, 20h30
  2. insertion vidéo dans une form
    Par TERRIBLE dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/07/2007, 21h57
  3. Insertion des images et vidéos dans une base de données
    Par taouja dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 07/04/2007, 13h31
  4. insertion d'une vidéo dans une frame de Jbuilder
    Par amelA dans le forum JBuilder
    Réponses: 2
    Dernier message: 19/01/2007, 10h46

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