enregistrer vidéos dans base de données

busimaker

Nouveau membre
#1
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 enregistrer et ensuite afficher les vidéos sur la page. Voici les codes des 2 pages:
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'];
/* echo "L'envoi de la photo a bien réussi. Merci!"; */
}
}
}
// 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 photo 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.jpeg";
/* $photo2="pasimage2.jpeg";
$photo3="pasimage3.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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
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>

 

mdjdenormandie

Habitué
#2
Bonjour,

vous avez un outil "code" sue l’éditeur du forum pour afficher votre code proprement, en lisant le code j'ai repéré 3 anomalies :

1)
PHP:
$today = date("y-m-d");
ne serait-ce pas plutôt :

PHP:
$today = date("Y-m-d"); // le Y (majuscule) pour avoir l’année sur 4 chiffres
2) les trois bloques de code pour l'upload des 3 vidéos peux être simplifié avec une boucle "for",
et j'ai juste remplacé les variables $video1, $video2, video3 par un tableau $vidéo[1],$vidéo[2],$vidéo[3]:

PHP:
for($i=1:$i<=3;$i++){
    if (isset($_FILES['video'.$i]) and $_FILES['video'.$i]['error'] == 0) {
        // teste de la grandeur de l'image
        if ($_FILES['video'.$i]['size'] <= 500000000) {
            // teste de la prise en compte du chemin et de l'extention du fichier
            $infosfichier = pathinfo($_FILES['video'.$i]['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['video'.$i]['tmp_name'], 'videos/mesvideos/' . basename($_FILES['video'.$i]['name']));
                $video[$i] = $_FILES['video'.$i]['name'];
                /* echo "L'envoi de la video a bien réussi. Merci!"; */
            }
        }
    }
}
3) arrivé a votre requête SQL les variables $video1, $video2, video3 (ou maintenant $vidéo[1], $vidéo[2], $vidéo[3]) peuvent potentiellement ne pas exister si les conditions de vos "if" ne sont pas remplis, pour cela 2 solution possible :
1- retourner une exception si une des trois variables n'existe pas
2- appliquer une valeur par défaut si la variable n'existe pas (ici "0" par exemple) :

PHP:
    // Notation PHP 7.x
    $video1 = $video[1] ?? "0";
    // Notation PHP 5.x
    $video1 = isset($video[1] ) ? $video[1] : "0";
 

busimaker

Nouveau membre
#3
Merci mdjdenormandie, au fait les 3 attributs video1, video2, video3 sont dans la même table. Donc impossible de prendre une seule variable $video à la place des 3 variables $video1, $video2 et $video3. De plus, à combien dois-je mettre ['size'] <= 500000000) pour pouvoir uploader et afficher sans problème des films d'au moins 3 heures ou de 2Go?
 

mdjdenormandie

Habitué
#4
Bonjour, le nombre "500000000" signifie 500 000 000 Octet
Soit ~ 500 Mo
si vous voulez uploader des fichier de ~ 2 Go :
PHP:
if($_FILES['videoX']['size'] <= 2*pow(10, 9){ //2 000 000 000
il faudra aussi au préalable lever la limite de PHP a ce niveau soit dans le fichier de configuration, soit via ini_set() :
PHP:
ini_set("upload_max_filesize", "2G");
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Membres en ligne
  • klonaway
Derniers messages publiés
Statistiques globales
Discussions
864 242
Messages
8 045 991
Membres
1 574 742
Dernier membre
faxoweg
Partager cette page
Haut