Enregistrer vidéos dans base de données
Busima
Messages postés
53
Date d'inscription
Statut
Membre
Dernière intervention
-
jadu29 Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
jadu29 Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
Bonjour, excusez-moi j'ai un soucis. Je cherche à enregistrer des vidéos dans ma base de données mais je n'y parviens pas d'abord. Je ne sais pas ce qui ne marche pas. J'ai une page que j'appelle categories.php à travers laquelle je sélectionne (upload) les vidéos, j'ai egalement une page info.php qui doit faire l'enregistrement dans la base de données et ensuite afficher les vidéos sur la page. Voici les codes des 2 pages:
categories.php
Ensuite la page info.php
categories.php
<!DOCTYPE html> <html id="bloc_page"> <head> <title>FORMULAIRE D'ENREGISTREMENT D'UNE VIDEO</title> <link rel="stylesheet" href="sogim.css" /> <link rel="stylesheet" href="css/bootstrap.min.css"/> <link rel="stylesheet" href="css/bootstrap-theme.min.css"/> </head> <header> <?php include('entete.php'); ?> </header> <body> <center><h2><u>Enregistrement d'une vidéo</u></h2></center> <form method="POST" action="info.php" enctype="multipart/form-data"> <div class="row"> <div class="col-md-4 col-sm-12 col-xs-12 form-group"> Titre<input type="text" name="titre" class="form-control" /> </div> <div class="col-md-4 col-sm-12 col-xs-12 form-group"> Genre<input type="text" name="genre" class="form-control"/> </div> <div class="col-md-4 col-sm-12 col-xs-12 form-group"> Description<input type="text" name="description" class="form-control"/> </div> </div> <div class="row"> <div class="col-md-4 col-sm-12 col-xs-12 form-group"> Vidéo 1<input type="file" name="video1" class="form-control"/> <br/> </div> <div class="col-md-4 col-sm-12 col-xs-12 form-group"> Vidéo 2<input type="file" name="video2" class="form-control"/> <br/> </div> <div class="col-md-4 col-sm-12 col-xs-12 form-group"> Vidéo 3<input type="file" name="video3" class="form-control"/> <br/> </div> </div> <div class="row"> <div class="col-md-3 col-sm-12 col-xs-12 form-group"> <input type="submit" name="valider" value="valider" class="form-control btn btn-primary"/> </div> <div class="col-md-3 col-sm-12 col-xs-12 form-group"> <input type="reset" name="annuler" value="Annuler" class="form-control btn btn-primary"/> </div> </div> </form> <?php // location::header(index.php); ?> <footer> <?php include('new_footer.php'); ?> </footer> <script src="js/jquery.js"> </script> <script src="js/bootstrap.min.js"></script> </body> </html>
Ensuite la page info.php
<html id="bloc_page"> <head> <title>FORMULAIRE D'ENREGISTREMENT D'UNE VIDEO</title> <link rel="stylesheet" href="sogim.css" /> <link rel="stylesheet" href="css/bootstrap.min.css"/> <link rel="stylesheet" href="css/bootstrap-theme.min.css"/> </head> <body> <?php /* include('fonctions.php'); */ ?> <?php try { //On se connecte à mysql $bdd = new PDO ('mysql:host=localhost;dbname=webtv','root',''); //$bdd = new PDO ('mysql:host=mysql.hostinger.fr;dbname=u930130525_sogim','u930130525_sogim','MotDePass'); } catch(Exception $e) { //En cas d'erreur, on affiche un message et on arrète tout die('Erreur:'.$e->get_Message()); } if (isset($_POST['valider'])) /* if (isset($_POST['model']) and (!empty($_POST['model']))) */ { $titre=$_POST['titre']; $genre=$_POST['genre']; $description=$_POST['description']; //On construit la date d'aujourd'hui strictement comme sql la construit $today = date("y-m-d"); // teste de l'envoi du fichier PHOTO 1 if (isset($_FILES['video1']) and $_FILES['video1']['error']== 0 ) { // teste de la grandeur de l'image if ($_FILES['video1']['size'] <= 500000000) { // teste de la prise en compte du chemin et de l'extention du fichier $infosfichier = pathinfo($_FILES['video1']['name']);//on prend le nom du fichier $extension_upload = $infosfichier['extension']; //on prend l'extension du fichier $extensions_autorisees = array('mp4', 'avi', 'vob', 'flv','rmvb', 'wmv', 'swf','mpg','MP4', 'AVI','VOB','FLV','RMVB', 'WMV', 'SWF','MPG'); //on prend les extensions autorisées if (in_array($extension_upload, $extensions_autorisees)) { move_uploaded_file($_FILES['video1']['tmp_name'], 'videos/mesvideos/'.basename($_FILES['video1']['name'])); $video1=$_FILES['video1']['name']; /* echo "L'envoi de la video a bien réussi. Merci!"; */ } } } // teste de l'envoi du fichier if (isset($_FILES['video2']) and $_FILES['video2']['error']== 0 ) { // teste de la grandeur de l'image if ($_FILES['video2']['size'] <= 500000000) { // teste de la prise en compte du chemin et de l'extention du fichier $infosfichier = pathinfo($_FILES['video2']['name']);//on prend le nom du fichier $extension_upload = $infosfichier['extension']; //on prend l'extension du fichier $extensions_autorisees = array('mp4', 'avi', 'vob','flv','rmvb', 'wmv', 'swf','mpg','MP4', 'AVI','VOB','FLV','RMVB', 'WMV', 'SWF','MPG'); //on prend les extensions autorisées if (in_array($extension_upload, $extensions_autorisees)) { move_uploaded_file($_FILES['video2']['tmp_name'], 'videos/mesvideos/'.basename($_FILES['video2']['name'])); $video2=$_FILES['video2']['name']; } } } // teste de l'envoi du fichier if (isset($_FILES['video3']) and $_FILES['video3']['error']== 0 ) { // teste de la grandeur de l'image if ($_FILES['video3']['size'] <= 500000000) { // teste de la prise en compte du chemin et de l'extention du fichier $infosfichier = pathinfo($_FILES['video3']['name']);//on prend le nom du fichier $extension_upload = $infosfichier['extension']; //on prend l'extension du fichier $extensions_autorisees = array('mp4', 'avi', 'vob','flv','rmvb', 'wmv', 'swf','mpg','MP4', 'AVI','VOB','FLV','RMVB', 'WMV', 'SWF','MPG'); //on prend les extensions autorisées if (in_array($extension_upload, $extensions_autorisees)) { move_uploaded_file($_FILES['video3']['tmp_name'], 'videos/mesvideos/'.basename($_FILES['video3']['name'])); $video3=$_FILES['video3']['name']; /* echo "L'envoi de la video a bien réussi. Merci!"; */ } } } echo "L'envoi de la vidéo a bien réussi. Merci!"; if(empty($video1) /* OR empty($photo2) OR empty($photo3) */) { $video="pasimage1.[/contents/1210-compression-jpeg jpeg]"; } // Insertion des données à l'aide d'une requête preparée $req = $bdd->prepare('INSERT INTO videos(titre, genre, description, today, video1, video2, video3) VALUES(:titre, :genre, :description, :today, :video1, :video2, :video3)'); /* var_dump($photo2); */ $req->execute(array( 'titre'=>$_POST['titre'], 'genre'=>$genre, 'description'=>$description, 'today'=>$today, 'video1'=>$video1, 'video2'=>$video2, 'video3'=>$video3)) or die (print_r($req->errorInfo())); if ($req) { echo 'Enregistrement effectue'; } else { echo 'Mauvais enregistrement!'; } if (isset($_POST['video1'])) { echo ('operation.php'); echo 'Vous avez choisi '.$id_videos; } } ?> <!-- PAGINATION NUMEROTATION DE PAGE PAGINATION NUMEROTATION DE PAGE --> <?php $page = isset($_GET['page']) ? $_GET['page'] : 1; $page_offset = ($page - 1) * 5; $total =''; $pagination =''; //connect_bd(); CONNEXION A LA BASE DE DONNEES //include ('fonctions.php'); $total_element = $bdd->query("SELECT * from videos"); $total = $total_element->rowCount(); /* or die (print_r($total_element->errorInfo())) */ $pagination = $total/5; $req=$bdd->query("select * from videos ORDER BY id_videos DESC LIMIT $page_offset, 5 ") or die(print_r($bdd->errorInfo())); //var_dump(); while($donnees = $req->fetch()) { echo '<table border="1px"; width:800px; height:500px; color="#999";> <tr> <td> Numero: '.$donnees['id_videos'].'</br>Titre: '.$donnees['titre'].'</br>Genre: '.$donnees['genre'].'</br>Description:'.$donnees['description'].'</br>Date: '.$donnees['today'].'</br></td>'.'<td><a href="operation.php?id='.$donnees['id_videos'].'"> <:= "//SRV_files/videos/mesvideos/'.$donnees['video1'].'"style=" width:220px; height:150px; color="#0000"; /></a></br></br></td></tr></table>'; echo '<a href="operation.php?id='.$donnees['id_videos'].'"> Regarder </a> '; echo '<a href="details.php?id='.$donnees['id_videos'].'"> LIRE </a>'; } $req->closeCursor(); echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages for($i=1; $i<=$pagination; $i++) //On fait notre boucle { if($i==$page) //Si il s'agit de la page actuelle... { echo ' [ '.$i.' ] '; } else //Sinon... { echo ' <a href="index.php?page='.$i.'">'.$i.'</a> '; } } echo '</p>'; ?> </body> <html>
A voir également:
- Stocker des vidéos dans une base de données
- Fuite données maif - Guide
- Base de registre - Guide
- Gagner de l'argent en regardant des videos tiktok - Accueil - Réseaux sociaux
- Trier des données excel - Guide
- Supprimer les données de navigation - Guide
5 réponses
Bonjour,
Commence par lire et appliquer les conseils (consignes) données dans ces deux liens :
- https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
- https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code#ou-placer-son-code-php
Reviens nous voir avec ton code modifié si après cela ça ne fonctionne toujours pas.
Commence par lire et appliquer les conseils (consignes) données dans ces deux liens :
- https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
- https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code#ou-placer-son-code-php
Reviens nous voir avec ton code modifié si après cela ça ne fonctionne toujours pas.
J'ai remis ton code au propre en respectant ce qui est indiqué dans les liens que je t'ai donné et que tu n'as pas pris la peine de lire et d'appliquer visiblement.....
Voici
Dis moi ce que ça donne.
Voici
<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once('connectbd.php'); //-------------------------------------------------------------------// // Fonctions //-------------------------------------------------------------------// /** * Fonction pour uploader les fichier */ function uploadFile($file,$uploadDir = "videos/mesvideos/",$fileMaxSize = 500000000, $extensions_autorisees = array('mp4', 'avi', 'vob', 'flv', 'rmvb', 'wmv', 'swf','mpg','MP4', 'AVI','VOB','FLV','RMVB', 'WMV', 'SWF','MPG', 'jpeg')){ $result = false; // teste de l'envoi du fichier PHOTO 1 if (isset($file) && $file['error']== 0 ) { // teste de la grandeur de la video if ($file['size'] <= $fileMaxSize){ // teste de la prise en compte du chemin et de l'extention du fichier $infosfichier = pathinfo($file['name']);//on prend le nom du fichier $extension_upload = $infosfichier['extension']; //on prend l'extension du fichier //on prend les extensions autorisées if (in_array($extension_upload, $extensions_autorisees)){ if(move_uploaded_file($file['tmp_name'], $uploadDir.basename($file['name']))){ $result=$file['name']; /* echo "L'envoi de la video a bien réussi. Merci!"; */ }else{ echo "<br>Erreur lors de l'upload du fichier ".$file['name']; if(!is_dir($uploadDir)){ echo "<br>Le repertoire ".$uploadDir. " est introuvable"; }else{ if(!is_writable($uploadDir)){ echo "<br>Vous n'avez pas l'autorisation d'écrire dans ce dossier : ".$uploadDir; } } } } } } return $result; } //-------------------------------------------------------------------// // Récupération PROPRE des variables AVANT de les utilser ! //-------------------------------------------------------------------// $titre=!empty($_POST['titre']) ? $_POST['titre'] : NULL; $genre=!empty($_POST['genre']) ? $_POST['genre'] : NULL; $description=!empty($_POST['description']) ? $_POST['description']: NULL; //Autres variables $today = date("y-m-d"); $result_import = ""; //Variables FILES $F1 = !empty($_FILES['video1']) ? $_FILES['video1']: NULL $F2 = !empty($_FILES['video2']) ? $_FILES['video2']: NULL $F3 = !empty($_FILES['video3']) ? $_FILES['video3']: NULL //-------------------------------------------------------------------// //traitement du formulaire //-------------------------------------------------------------------// if (isset($_POST['valider'])){ //on upload les vidéos $upl_video1 = uploadFile($F1); $upl_video2 = uploadFile($F2); $upl_video3 = uploadFile($F3); $video1 = $upl_video1 ? $upl_video1 : "pasimage1.jpeg"; $video2 = $upl_video2 ? $upl_video2 : "pasimage2.jpeg"; $video3 = $upl_video3 ? $upl_video3 : "pasimage3.jpeg"; //on fait l'insertion en BDD $sql = 'INSERT INTO videos(titre, genre, description, today, video1, video2, video3) VALUES(:titre, :genre, :description, :today, :video1, :video2, :video3)', $datas = array( 'titre'=>$titre, 'genre'=>$genre, 'description'=>$description, 'video1'=>$video1, 'video2'=>$video2, 'video3'=>$video3, 'today' =>$today); try{ $req = $bdd->prepare($sql); //$req->execute($datas); // correction suite à commentaire $req->execute(); $result_import = "Enregistrement effectué" }catch(Exception $e){ $result_import = "Erreur lors de l'import".$e->getMessage(); } } //-------------------------------------------------------------------// //Traitement de l'affichage des vidéos //-------------------------------------------------------------------// $page = isset($_GET['page']) ? $_GET['page'] : 1; $page_offset = ($page - 1) + 5; //nombre total de video dans la table $sql = "select count(id_videos) as NB from videos "; try{ $req = $bdd->prepare($sql); $req->execute($datas) $res = $req->fetch(); //on stocke dans un array }catch(Exception $e){ echo "Erreur ".$e->getMessage(); } $total = !empty($res) ? $res['NB'] : 0; $pagination = $total/5; //liste des videos à afficher $sql = "select * from videos ORDER BY id_videos DESC LIMIT $page_offset, 5 "; try{ $req = $bdd->prepare($sql); $req->execute($datas) $listeVideos = $req->fetchAll(); //on stocke dans un array }catch(Exception $e){ echo "Erreur ".$e->getMessage(); } ?> <html> <head> <meta charset="utf-8"> <title>FORMULAIRE D'ENREGISTREMENT D'UNE VIDEO</title> <link rel="stylesheet" href="sogim.css" /> <link rel="stylesheet" href="css/bootstrap.min.css"/> <link rel="stylesheet" href="css/bootstrap-theme.min.css"/> </head> <body id="bloc_page"> <?php echo $result_import; ?> <!-- PAGINATION NUMEROTATION DE PAGE PAGINATION NUMEROTATION DE PAGE --> <?php foreach($listeVideos as $donnees){ echo '<table border="1px"; width:800px; height:500px; color="#999";> <tr> <td> Vidéo: '.$donnees['id_videos'].'</br>Titre: '.$donnees['titre'].'</br>Genre: '.$donnees['genre'].'</br>Description:'.$donnees['description'].'</br>Date: '.$donnees['today'].'</br></td>'.'<td><a href="operation.php?id='.$donnees['id_videos'].'"> <iframe src="videos/mesvideos/'.$donnees['video1'].'"style=" width:220px; height:150px; color="#0000"; /iframe></a></br></br></td></tr></table>'; /* echo '<a href="operation.php?id='.$donnees['id_videos'].'"> Regarder </a> '; echo '<a href="details.php?id='.$donnees['id_videos'].'"> LIRE </a>'; */ } echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages for($i=1; $i<=$pagination; $i++){ if($i==$page){ //Si il s'agit de la page actuelle... echo ' [ '.$i.' ] '; } else { echo ' <a href="index.php?page='.$i.'">'.$i.'</a> '; } } echo '</p>'; ?> </body> <html>
Dis moi ce que ça donne.
Merci pour l'aide le grand Jordane. Avec mon code j'arrive actuellement à afficher tous mes enregistrements, seulement qu'il se pose un problème avec les vidéos. D'autres de mes vidéos ne se lisent pas sur mon site je ne sais pas pourquoi. Ce sont des vidéos qui ont un height supérieur qui ne se lisent, je n'entend que leurs sons. Les films également ne se lisent pas. De plus je veux savoir savoir quel unité de mésure informatique l'on utilise pour tester la grandeur des vidéos(size[videos])? Cela me permettra de savoir à combien je dois mettre la taille pour pouvoir enregistrer même des films faisant des heures.
Pardon, le sujet m'intéresse mais je me pose une question avant de copier-coller ce code ! ;-)
d'où vient le $data ???
j'ai du louper un cours !
merci de l'éclaircissement !
//nombre total de video dans la table
$sql = "select count(id_videos) as NB from videos ";
try{
$req = $bdd->prepare($sql);
$req->execute($datas)
$res = $req->fetch(); //on stocke dans un array
}catch(Exception $e){
echo "Erreur ".$e->getMessage();
}
d'où vient le $data ???
j'ai du louper un cours !
merci de l'éclaircissement !
D'une erreur de copier coller.
Pour ton cas, le $datas doit être retiré ou alors initialisé à NULL.
Cela sert lorsque tu as des variables à transmettre
Par exemple :
NB: Merci de bien vouloir utiliser LA COLORATION SYNTAXIQUE lorsque tu postes ton code.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Pour ton cas, le $datas doit être retiré ou alors initialisé à NULL.
Cela sert lorsque tu as des variables à transmettre
Par exemple :
//nombre total de video dans la table $sql = "select * from videos WHERE id_videos = :id"; $datas = array(':id'=>10); try{ $req = $bdd->prepare($sql); $req->execute($datas); $res = $req->fetch(); //on stocke dans un array }catch(Exception $e){ echo "Erreur ".$e->getMessage(); }
NB: Merci de bien vouloir utiliser LA COLORATION SYNTAXIQUE lorsque tu postes ton code.
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Je vous remercie, j'ai pu m'en sortir en créant une chaine Youtube pour y stocker mes vidéos et en enregistrant tout simplement les liens dans ma bdd. Encore merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui la réponse de Jordane était claire.
Mais j'ai tellement de chantiers en cours !
Là je remonte un PC et un portable !
La vie est un long long long fleuve parfois tranquille !
Busina, ta solution paraît très judicieuse, en fait !
Youtube stocke et toi tu n'as que des liens à mettre en base !
Nickel !
Tant que Youtube existe sans censure !!!!
Mais j'ai tellement de chantiers en cours !
Là je remonte un PC et un portable !
La vie est un long long long fleuve parfois tranquille !
Busina, ta solution paraît très judicieuse, en fait !
Youtube stocke et toi tu n'as que des liens à mettre en base !
Nickel !
Tant que Youtube existe sans censure !!!!
code de la page1 categories.php
Ensuite le code de la 2eme page, info.php
Base de données
create database webtv;
create table(id int(10), titre varchar(255), description varchar(255), video1 blob(255), video2 blob(255), video3 blob(255), today(date), primary key(id));