- Ajouter une video dans une base de données
- Comment télécharger une vidéo youtube - Guide
- Insérer une vidéo dans powerpoint - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Montage video windows - Guide
- Ralentir une video iphone - Guide
9 réponses
22 mai 2023 à 06:28
Bonjour
Commence par appliquer ceci
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ca te montrera que tu as des erreurs dans ta requête sql ligne 40.
Et pour l'id ... Pourquoi ne pas laisser faire la base de données en utilisant simplement un champ auto-incrémenté ?
Bonjour,
Merci pour votre réponse
J'ai essayé de corriger mon code et de gérer mes erreurs mais j'ai obtenu ce résultat:
Array
(
)
Array
(
)
<?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;
$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!';
}
}
?>
22 mai 2023 à 14:00
As tu activé l'affichage des erreurs PHP ?
As tu regardé ta requête ?
$sql="select * from 'content' where tutor_id= ? and title=?and description=? ";
J'y vois deux erreurs ....
Bonjour,
j'ai remplacé cette requête par ceci
$sql="select * from content where tutor_id= ? and title=? and description=? ";
J'ai utilisé "try" and "catch" pour afficher les erreurs mais ce qui est étonnant, c'est comme si mon formulaire n'était pas soumis parce que ces lignes sont affichées dès le chargement de la page. En cliquant sur le bouton rien n'est exécuté. J'obtiens toujours ces lignes
Array
(
)
Array
(
)
22 mai 2023 à 17:02
1 - activer l'affichage des erreurs PHP
error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE);
2 - L'affichage des deux array vides vient de tes lignes de code
echo '<pre>'; print_r($_FILES); echo '</pre>'; // Valorisé ? echo '<pre>'; print_r($_POST); echo '</pre>'; // Valorisé ?
Tant que tu n'as pas "submit" normal qu'ils soient vides !
Par contre, une fois ton formulaire envoyé, tu devrais avoir des valeurs dedans...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour,
Merci pour votre réponse
Même en cliquant sur le bouton j'obtiens le même résultat
22 mai 2023 à 23:27
Bonjour, même en activant l'affichage des erreurs, j'obtiens le même résultat en haut de ma page dès son chargement et après 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> <!-- font awesome cdn link --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css"> <!-- 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>
23 mai 2023 à 11:09
A l'ouverture de la page c'est normal.
A la limite, pour éviter de les avoir, tu peux déplacer tes print_r à l'intérieur de ton IF
if(isset($_POST['submit'])){ echo '<pre>'; print_r($_FILES); echo '</pre>'; // Valorisé ? echo '<pre>'; print_r($_POST); echo '</pre>'; // Valorisé ?
Par contre, une fois ton formulaire rempli puis "submit" .. là tu devrais avoir quelque chose.
Si ce n'est pas le cas,
Merci de nous donner le code source généré de ton formulaire ( que tu vas obtenir en faisant CTRL+u une fois ta page affichée dans ton navigateur internet)
Bonjour
merci pour votre réponse
voici le code obtenu
<pre>Array ( ) </pre><pre>Array ( ) </pre><!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> <!-- font awesome cdn link --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css"> <!-- custom css file link --> <link rel="stylesheet" href="../css/admin_style.css"> </head> <body> <header class="header"> <section class="flex"> <a href="dashboard.php" class="logo">Admin.</a> <form action="search_page.php" method="post" class="search-form"> <input type="text" name="search" placeholder="search here..." required maxlength="100"> <button type="submit" class="fas fa-search" name="search_btn"></button> </form> <div class="icons"> <div id="menu-btn" class="fas fa-bars"></div> <div id="search-btn" class="fas fa-search"></div> <div id="user-btn" class="fas fa-user"></div> <div id="toggle-btn" class="fas fa-sun"></div> </div> <div class="profile"> <img src="../uploaded_files/12GUzg5mFjLlnE0Af0kf.jpg" alt=""> <h3>haroun</h3> <span>teacher</span> <a href="profile.php" class="btn">view profile</a> <div class="flex-btn"> <a href="login.php" class="option-btn">login</a> <a href="register.php" class="option-btn">register</a> </div> <a href="../components/admin_logout.php" onclick="return confirm('logout from this website?');" class="delete-btn">logout</a> </div> </section> </header> <!-- header section ends --> <!-- side bar section starts --> <div class="side-bar"> <div class="close-side-bar"> <i class="fas fa-times"></i> </div> <div class="profile"> <img src="../uploaded_files/12GUzg5mFjLlnE0Af0kf.jpg" alt=""> <h3>haroun</h3> <span>teacher</span> <a href="profile.php" class="btn">view profile</a> </div> <nav class="navbar"> <a href="dashboard.php"><i class="fas fa-home"></i><span>home</span></a> <a href="playlists.php"><i class="fa-solid fa-bars-staggered"></i><span>playlists</span></a> <a href="contents.php"><i class="fas fa-graduation-cap"></i><span>contents</span></a> <a href="comments.php"><i class="fas fa-comment"></i><span>comments</span></a> <a href="../components/admin_logout.php" onclick="return confirm('logout from this website?');"><i class="fas fa-right-from-bracket"></i><span>logout</span></a> </nav> </div> <!-- side bar section ends --> <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> <option value="VbCKK1wGv1ietTIvgRAs">eeeee</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> <footer class="footer"> © copyright @ 2023 by <span>mr. web designer</span> | all rights reserved! </footer> <script src="../js/admin_script.js"></script> </body> </html>
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> <!-- font awesome cdn link --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css"> <!-- 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>