ajouter une video dans une base de données

Petit nouveau ! | 4 Messages

22 mai 2023, 12:20

Bonjour,
J'ai un formulaire pour ajouter une video et d'autres informations dans une base de données mais ça n'a pas marché. Les données ne sont pas ajoutées dans la base de données et j'obtient ce résultat.

Code : Tout sélectionner

Array ( ) Array ( )

Code : Tout sélectionner

<?php include '../components/connect.php'; if(isset($_COOKIE['tutor_id'])){ $tutor_id = $_COOKIE['tutor_id']; }else{ $tutor_id = ''; header('location:login.php'); } echo '<pre>'; print_r($_FILES); echo '</pre>'; // Valorisé ? echo '<pre>'; print_r($_POST); echo '</pre>'; // Valorisé ? if(isset($_POST['submit'])){ echo "[DEBUG] tutor_id=[{$tutor_id}], title=[{$title}], description=[{$description}]"; $id = create_unique_id(); $status = $_POST['status']; $status = filter_var($status, FILTER_SANITIZE_STRING); $title = $_POST['title']; $title = filter_var($title, FILTER_SANITIZE_STRING); $description = $_POST['description']; $description = filter_var($description, FILTER_SANITIZE_STRING); $playlist_id = $_POST['playlist']; $playlist_id = filter_var($playlist_id, FILTER_SANITIZE_STRING); $thumb = $_FILES['thumb']['name']; $thumb = filter_var($thumb, FILTER_SANITIZE_STRING); $thumb_ext = pathinfo($thumb, PATHINFO_EXTENSION); $rename_thumb = create_unique_id().'.'.$thumb_ext; $thumb_size = $_FILES['thumb']['size']; $thumb_tmp_name = $_FILES['thumb']['tmp_name']; $thumb_folder = '../uploaded_files/'.$rename_thumb; $video = $_FILES['video']['name']; $video = filter_var($video, FILTER_SANITIZE_STRING); $video_ext = pathinfo($video, PATHINFO_EXTENSION); $rename_video = create_unique_id().'.'.$video_ext; $video_tmp_name = $_FILES['video']['tmp_name']; $video_size= $_FILES['video']['size']; $video_folder = '../uploaded_files/'.$rename_video; $verify_content=$conn->perepare("select * from 'content' where tutor_id= ? and title=?and description=? "); $verify_content->execute([$tutor_id,$title,$description]); if($verify_content->rowCount()>0){ $message[] = 'content already created!'; }else{ $add_content = $conn->prepare("INSERT INTO `content`(id, tutor_id, playlist_id, title, description, video, thumb, status) VALUES(?,?,?,?,?,?,?,?)"); $add_content->execute([$id, $tutor_id, $playlist_id, $title, $description, $rename_video, $rename_thumb, $status]); move_uploaded_file($thumb_tmp_name, $thumb_folder); move_uploaded_file($video_tmp_name, $video_folder); $message[] = 'new course uploaded!'; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Dashboard</title> <!-- custom css file link --> <link rel="stylesheet" href="../css/admin_style.css"> </head> <body> <?php include '../components/admin_header.php'; ?> <section class="video-form"> <h1 class="heading">upload content</h1> <form action="" method="post" enctype="multipart/form-data"> <p>video status <span>*</span></p> <select name="status" class="box" required> <option value="" selected disabled>-- select status</option> <option value="active">active</option> <option value="desactive">desactive</option> </select> <p>video title <span>*</span></p> <input type="text" name="title" maxlength="100" required placeholder="enter video title" class="box"> <p>video description <span>*</span></p> <textarea name="description" class="box" required placeholder="write description" maxlength="1000" cols="30" rows="10"></textarea> <p>video playlist <span>*</span></p> <select name="playlist" class="box" required> <option value="" disabled selected>--select playlist</option> <?php $select_playlists = $conn->prepare("SELECT * FROM `playlist` WHERE tutor_id = ?"); $select_playlists->execute([$tutor_id]); if($select_playlists->rowCount() > 0){ while($fetch_playlist = $select_playlists->fetch(PDO::FETCH_ASSOC)){ ?> <option value="<?= $fetch_playlist['id']; ?>"><?= $fetch_playlist['title']; ?></option> <?php } ?> <?php }else{ echo '<option value="" disabled>no playlist created yet!</option>'; } ?> </select> <p>select thumbnail <span>*</span></p> <input type="file" name="thumb" accept="image/*" required class="box"> <p>select video <span>*</span></p> <input type="file" name="video" accept="video/*" required class="box"> <input type="submit" value="upload video" name="submit" class="btn"> </form> </section> <?php include '../components/footer.php'; ?> <script src="../js/admin_script.js"></script> </body> </html>
Merci d'avance

Avatar du membre
Mammouth du PHP | 1254 Messages

22 mai 2023, 12:36

Une requête SQL est mal formée :

Code : Tout sélectionner

$verify_content=$conn->perepare("select * from 'content' where tutor_id= ? and title=?and description=? ");
- les simples guillemets ' sont incorrects pour une requête SQL, on utilise soit `, soit rien.
- le "and" est collé à "title=?"

ynx
Mammouth du PHP | 537 Messages

22 mai 2023, 13:45

En complément, la méthode perepare n'existe pas (prepare).

Tu obtiens ce résultat au premier chargement de la page mais aussi lors de la soumission du formulaire ?

Active l'affichage des erreurs PHP lorsque tu es en développement : tutoriels/page-blanche-script-php-comme ... 73178.html

Petit nouveau ! | 4 Messages

23 mai 2023, 01:25

Bonsoir,
J'ai essayé d'activer l'affichage des erreurs et de détecter les erreurs mais j'obtiens toujours le meme résultat en haut de la page dès son chargement et aussi lors de la soumission du formulaire.
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
include '../components/connect.php';

if(isset($_COOKIE['tutor_id'])){
   $tutor_id = $_COOKIE['tutor_id'];
}else{
   $tutor_id = '';
   header('location:login.php');
}
echo '<pre>'; print_r($_FILES); echo '</pre>'; // Valorisé ?
echo '<pre>'; print_r($_POST); echo '</pre>'; // Valorisé ?
if(isset($_POST['submit'])){
   echo "[DEBUG] tutor_id=[{$tutor_id}], title=[{$title}], description=[{$description}]";
   $id = create_unique_id();
   $status = $_POST['status'];
   $status = filter_var($status, FILTER_SANITIZE_STRING);
   $title = $_POST['title'];
   $title = filter_var($title, FILTER_SANITIZE_STRING);
   $description = $_POST['description'];
   $description = filter_var($description, FILTER_SANITIZE_STRING);
   $playlist_id = $_POST['playlist'];
   $playlist_id = filter_var($playlist_id, FILTER_SANITIZE_STRING);

   $thumb = $_FILES['thumb']['name'];
   $thumb = filter_var($thumb, FILTER_SANITIZE_STRING);
   $thumb_ext = pathinfo($thumb, PATHINFO_EXTENSION);
   $rename_thumb = create_unique_id().'.'.$thumb_ext;
   $thumb_size = $_FILES['thumb']['size'];
   $thumb_tmp_name = $_FILES['thumb']['tmp_name'];
   $thumb_folder = '../uploaded_files/'.$rename_thumb;

   $video = $_FILES['video']['name'];
   $video = filter_var($video, FILTER_SANITIZE_STRING);
   $video_ext = pathinfo($video, PATHINFO_EXTENSION);
   $rename_video = create_unique_id().'.'.$video_ext;
   $video_tmp_name = $_FILES['video']['tmp_name'];
   $video_size= $_FILES['video']['size'];
   $video_folder = '../uploaded_files/'.$rename_video;
   
   $sql="select *  from content where tutor_id= ?  and title=? and description=? ";
   $description = [':description' => $description];
   try{
      $verify_content =$conn->prepare($sql);
      $verify_content->execute([$tutor_id,$title,$description]);
   }catch(Exception $e){
      // en cas d'erreur :
      echo " Erreur ! ".$e->getMessage();
      echo " Les datas : " ;
      print_r($description);
   }

   if($verify_content->rowCount()>0){
      $message[] = 'content already created!';
   }else{
      $sql2 = "INSERT INTO `content`(id, tutor_id, playlist_id, title, description, video, thumb, status) VALUES(?,?,?,?,?,?,?,?)";
      $datas2 = array(':valeur1'=>$id, ':valeur2'=>$tutor_id,':valeur3'=>$playlist_id,':valeur4'=>$title,':valeur5'=>$description,':valeur6'=>$rename_video,':valeur7'=>$rename_thumb,':valeur8'=>$status);

      try{
         $add_content = $conn -> prepare($sql2) ;
         $add_content->execute($datas2) ;
       }catch(Exception $e){
         // en cas d'erreur :
          echo " Erreur ! ".$e->getMessage();
          echo " Les datas : " ;
         print_r($datas2);
       }
      move_uploaded_file($thumb_tmp_name, $thumb_folder);
      move_uploaded_file($video_tmp_name, $video_folder);
      $message[] = 'new course uploaded!';
   }
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Dashboard</title>
 
 
   <!-- custom css file link  -->
   <link rel="stylesheet" href="../css/admin_style.css">
 
</head>
<body>
 
<?php include '../components/admin_header.php'; ?>
 
<section class="video-form">
 
   <h1 class="heading">upload content</h1>
 
   <form action="" method="post" enctype="multipart/form-data">
      <p>video status <span>*</span></p>
      <select name="status" class="box" required>
         <option value="" selected disabled>-- select status</option>
         <option value="active">active</option>
         <option value="desactive">desactive</option>
      </select>
      <p>video title <span>*</span></p>
      <input type="text" name="title" maxlength="100" required placeholder="enter video title" class="box">
      <p>video description <span>*</span></p>
      <textarea name="description" class="box" required placeholder="write description" maxlength="1000" cols="30" rows="10"></textarea>
      <p>video playlist <span>*</span></p>
      <select name="playlist" class="box" required>
         <option value="" disabled selected>--select playlist</option>
         <?php
         $select_playlists = $conn->prepare("SELECT * FROM `playlist` WHERE tutor_id = ?");
         $select_playlists->execute([$tutor_id]);
         if($select_playlists->rowCount() > 0){
            while($fetch_playlist = $select_playlists->fetch(PDO::FETCH_ASSOC)){
         ?>
         <option value="<?= $fetch_playlist['id']; ?>"><?= $fetch_playlist['title']; ?></option>
         <?php
            }
         ?>
         <?php
         }else{
            echo '<option value="" disabled>no playlist created yet!</option>';
         }
         ?>
      </select>
      <p>select thumbnail <span>*</span></p>
      <input type="file" name="thumb" accept="image/*" required class="box">
      <p>select video <span>*</span></p>
      <input type="file" name="video" accept="video/*" required class="box">
      <input type="submit" value="upload video" name="submit" class="btn">
   </form>
 
</section>
 
<?php include '../components/footer.php'; ?>
 
<script src="../js/admin_script.js"></script>
 
</body>
</html>

Mammouth du PHP | 2493 Messages

23 mai 2023, 02:06

et aussi lors de la soumission du formulaire.
même en ayant rempli tous les champs requis ? car c'est très étonnant que $_POST soit vide quand le formulaire est en méthode post.

Petit nouveau ! | 4 Messages

23 mai 2023, 09:49

Bonjour,
oui, même en remplissant tous les champs. Malheureusement je n'ai pas pu mettre une image pour vous montrer le résultat obtenu

Avatar du membre
Mammouth du PHP | 1254 Messages

23 mai 2023, 10:16

action="", si il est vide est inutile.

Petit nouveau ! | 4 Messages

24 mai 2023, 00:49

Bonsoir,
J'ai remarqué que dans ce code, en remplaçant accept="video/*" par accept="image/*", les données sont bien sauvegardées dans la base de données. Comment je peux filtrer seuls les fichiers vidéos
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
include '../components/connect.php';

if(isset($_COOKIE['tutor_id'])){
   $tutor_id = $_COOKIE['tutor_id'];
}else{
   $tutor_id = '';
   header('location:login.php');
}

if(isset($_POST['submit'])){

   $id = unique_id();
   $title = $_POST['title'];
   $title = filter_var($title, FILTER_SANITIZE_STRING);
   $description = $_POST['description'];
   $description = filter_var($description, FILTER_SANITIZE_STRING);
   $status = $_POST['status'];
   $status = filter_var($status, FILTER_SANITIZE_STRING);
   $playlist_id = $_POST['playlist'];
   $playlist_id = filter_var($playlist_id, FILTER_SANITIZE_STRING);

   $image = $_FILES['image']['name'];
   $image = filter_var($image, FILTER_SANITIZE_STRING);
   $ext = pathinfo($image, PATHINFO_EXTENSION);
   $rename = unique_id().'.'.$ext;
   $image_size = $_FILES['image']['size'];
   $image_tmp_name = $_FILES['image']['tmp_name'];
   $image_folder = '../uploaded_files/'.$rename;

   $video = $_FILES['video']['name'];
   $video = filter_var($video, FILTER_SANITIZE_STRING);
   $ext2 = pathinfo($video, PATHINFO_EXTENSION);
   $rename_video = unique_id().'.'.$ext2;
   $video_size = $_FILES['video']['size'];
   $video_tmp_name = $_FILES['video']['tmp_name'];
   $video_folder = '../uploaded_files/'.$rename_video;

   $verify_content=$conn->prepare("select *  from  `content` where tutor_id= ?  and title=? and description=? ");
   $verify_content->execute([$tutor_id,$title,$description]);
 
 
   if($verify_content->rowCount()>0){
      $message[] = 'content already created!';
   }else{
   $add_playlist = $conn->prepare("INSERT INTO `content`(id, tutor_id, playlist_id, title, description, video, thumb, status) VALUES(?,?,?,?,?,?,?,?)");
   $add_playlist->execute([$id, $tutor_id, $playlist_id, $title, $description, $rename_video, $rename, $status]);
   move_uploaded_file($image_tmp_name, $image_folder);
   move_uploaded_file($video_tmp_name, $video_folder);

   $message[] = 'new content created!';  
   }
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Add Playlist</title>

   <!-- custom css file link  -->
   <link rel="stylesheet" href="../css/admin_style.css">

</head>
<body>

<?php include '../components/admin_header.php'; ?>
   
<section class="playlist-form">

   <h1 class="heading">create playlist</h1>

   <form action="" method="post" enctype="multipart/form-data">
      <p>video status <span>*</span></p>
      <select name="status" class="box" required>
         <option value="" selected disabled>-- select status</option>
         <option value="active">active</option>
         <option value="deactive">deactive</option>
      </select>
      <p>video title <span>*</span></p>
      <input type="text" name="title" maxlength="100" required placeholder="enter playlist title" class="box">
      <p>video description <span>*</span></p>
      <textarea name="description" class="box" required placeholder="write description" maxlength="1000" cols="30" rows="10"></textarea>
      <p>video playlist <span>*</span></p>
      <select name="playlist" class="box" required>
         <option value="" disabled selected>--select playlist</option>
         <?php
         $select_playlists = $conn->prepare("SELECT * FROM `playlist` WHERE tutor_id = ?");
         $select_playlists->execute([$tutor_id]);
         if($select_playlists->rowCount() > 0){
            while($fetch_playlist = $select_playlists->fetch(PDO::FETCH_ASSOC)){
         ?>
         <option value="<?= $fetch_playlist['id']; ?>"><?= $fetch_playlist['title']; ?></option>
         <?php
            }
         ?>
         <?php
         }else{
            echo '<option value="" disabled>no playlist created yet!</option>';
         }
         ?>
      </select>
      <p>video thumbnail <span>*</span></p>
      <input type="file" name="image" accept="image/*" required class="box">
      <p>Select video<span>*</span></p>
      <input type="file" name="video" accept="video/*" required class="box">
      <input type="submit" value="create playlist" name="submit" class="btn">
   </form>

</section>


<?php include '../components/footer.php'; ?>

<script src="../js/admin_script.js"></script>

</body>
</html>

Avatar du membre
Mammouth du PHP | 1254 Messages

24 mai 2023, 09:13