Estrazioni dati dal database e inserimento nella pagina html

giorgio85

Nuovo Utente
13 Gen 2016
8
0
1
Ciao a tutti.
Ho un rompicapo che mi assilla. Premetto che non sono un esperto.
Ho creato un form di registrazione in Php e un database Mysql dove conservare i dati.
Nella form di registrazione ce' la possibilità di inserire anche i video. Ho provato tramite la libreria jquery e la tecnologia Ajax e il linguaggio sql ad estrapolare i dati dal database e inserirli nella pagina.

Il problema sono per i file video.

Come posso creare gli elementi <video> e <object> tramite la manipolazione del DOM con javascript creando il tag video e poi aggiungere agli attributi "src" il percorso del file video inserito dagli utenti? Devo creare un plugin? Il mio scopo e permettere agli appassionati di inserire autonomamente loro i file video in modo automatico senza obbligare lo sviluppatore ad inserirli manualmente ogni volta. Essendo una pagina con pochi video preferirei non appoggiarmi a youtube. Quale libreria devo leggermi? Esistono paradigmi di programmazione appositi? framework?
Spero di essere stato esaustivo. Vi prego e' di vitale importanza.
Grazie.
Giorgio.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
da quanto ho capito vorresti che un utente caricasse i suoi video autonomamnente, giusto?
intanto terrei separate le due parti: 'registrazione' e 'caricamento video'
cioè un utente si registra inserendo i suoi dati (nome, indirizzo email,...) e riceve (o se li crea se non esistenti) il suo username e la sua password registrandoli su una tabella utenti e qui fine registrazione.
se vuole inserire un video si logga e se suo user e password esistenti nel tuo db può accedere alla pagina di inserimento file.
dopo il log tramite un form potrà caricare il suo video
ti conviene con move_upload caricare il file in una carella apposita chiamata es. movies e nel db registrare il nome del file senza estenzione, l'estenzione e se vuoi altri dati quale l'autore e il titolo.
nella pagina in cui vuoi farli vedere
PHP:
<?php
//dati di connessione
//metto dei nomi a caso
$query=mysqli_query($conn, "SELECT * FROM video ORDER BY....");
$percorso="movies/";
while($riga=mysqli_fetch_array($query, MYSQL_ASSOC)){
	/*questi dati devono essere ricavati dagli input del form per caricare i filmati
	e salvati su una tabella chiamata es. video*/
	$titolo=$riga['titolo'];
	$autore=$riga['autore'];
	$nome=$riga['nome_filefile'];//senza estenzione
	$estenzione=$riga['estenzione'];
	echo "$titolo by $autore";
	if($estenzione ="swf"){//è un file flash
		$file=$percorso.$nome.".".$estenzione;
		echo "<object width=\"400\" height=\"400\" data=\"$file\"></object>";
	}else{//non è un swf generalmente un mp4, verifica i tipi supportati
		$file_mp4=$percorso.$nome.".".$estenzione;
		$file_ogg=$percorso.$nome.".ogg";
		echo "<video width=\"320\" height=\"240\" controls>";
		echo "<source src=\"$file_mp4\" type=\"video/mp4\">";//qui es ho messo mp4
		echo "<source src=\"$file_ogg\" type=\"video/ogg\">";
		echo "</video>";
	}
}
//....
?>
un'accortezza: quando ti fai caricare dei file è essenziale verificarne il tipo e far caricare solo i tipi ammessi (estenzione es. mp4)
p.s.
generalmente io incorporo da yt, quindi me ne intendo poco di filmati ho preso quanto detto da
http://www.w3schools.com/tags/tag_video.asp
http://www.w3schools.com/tags/tag_object.asp
e quanto scritto è da provare, al massimo non funziona
 

giorgio85

Nuovo Utente
13 Gen 2016
8
0
1
Ciao Borgo italia, innanzitutto grazie.
Cerca di avere pazienza, quindi posso includere il codice nella pagina html creando ovviamente i tag relativi di apertura e chiusura di php?
Grazie Giorgio:jolly:
 

giorgio85

Nuovo Utente
13 Gen 2016
8
0
1
Ciao scusami ancora... Ma non vi è alcuna possibilità di permettere agli utenti di visulizzarli nella pagina htm cioe la pagina principale?

sto lavorando ad un cosa del genere...Ho letto in questo sito la guida inerente al linguaggio php come includere righe di codice in fogli con estensioni html e viceversa... Ora mi trovo spiazzato..


index.html

<html>
<!DOCTYPE HTML>
<head>titolo...</titolo>
<meta...>
<meta charset......ecc>
<style type=text/css>...sheets..</style>
<script type=text/javascript>....scripts....</script>
</head>
<body>
..
markups tags exemple..
...
<?php
//connessione al database...
//$query=mysqli_query($conn, 'SELECT video FROM tb_video');
//while($riga=mysqli_fetch_array($query, ........));
....
....
echo"<video width=\'400\' ecc... controls
echo"<source src=\file........
echo"</video>;
.....
...mysqli(close);
?>


</body>

.....ecc
</html>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
NON puo chiamarsi index.html ma deve chiamarsi index.php
poi correggi lo schema
HTML:
<!DOCTYPE HTML>
<html>
<head>
<titolo>titolo...</titolo>
<meta...>
<meta charset......ecc>
<style type=text/css>...sheets..</style>
<script type=text/javascript>....scripts....</script>
</head>
<body>
<!--eccetera...... -->
<?php
//eccetera....
?>
<!--eccetera...... -->
</body>
</html>
 

giorgio85

Nuovo Utente
13 Gen 2016
8
0
1
Ciao borgo Italia, volevo ringraziarti ancora per la dritta...Ho dato un occhiata in questi giorni ai tutorial di questo sito. Ho seguito un po il tuo consiglio.

Ho creato una pagina index.php in cui all'interno contiene la connessione al database e al server poi ho in incluso nel file index.html tra i tag video src la pagina index.php in questo modo dovrei vedere il video ma non capisco come mai non funzioni... ti faccio un esempio...per essere piu' preciso un utente si registra in form poi i dati passano al data base poi con index.php recupero i dati come scritto qui sotto per poi passarli alla pagina html diciamo che si vede solo la sola sagoma del formato video ma non parte. :-(



<?php
$conn=mysqli_connect('localhost','root','','mytab');
$link2=mysqli_select_db($conn, 'mytab');
$query=mysqli_query($link2, "SELECT video FROM nomevideo WHERE id=25");
if(isset($_FILES['uploadvideo'])){
$nome=$_FILES['uploadvideo']['name'];
$estensione = strtolower(substr($nome, strrpos($name, "."), strlen($nome)-strrpos($nome, ".")));
if($estenzione ="swf"){
$file=$nome;
}else{
$file_mp4=$nome;
$file_ogg=$nome;


}
mysqli_close($link2);
}
?>


poi nella pagina index.html

<html>
<head>....
</head>
<body>


<video id="namen" width="500" heigth="400" controls preload="auto">
<source src="index.php" /*(file php)*/ type="video/mp4">
<object>.....</object>
</video>


</body>
</html>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
scusa ma non capisco molto quello che stai facendo
1) fai una select al db per cercare il video (a proposito riguardati bene le sintassi di mysqli) e poi non leggi quello che c'è scritto nel record
2) poi prendi qualcosa che proviene da un form con $_FILES e, visto così, non lo carichi in una cartella o nella root del tuo sito
mi sembra e penso di non sbagliarmi che tu faccia un po' di confusione
se hai pazienza domani o dopodomani cerco di schematizzarti il tutto
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
esaminiamo prima il caricamento del video
dovrai avere una pagina riservata (accessibile solo a chi iscritto) quindi una pagina di log in cui l'utente inserirà il suo username e la sua password
pagina_log.php
PHP:
<?php
session_start();
if(isset($_POST['log'])){
	$user=trim($_POST['user']);
	$pass=trim($_POST['pass']);
	if($user=="" || $pass==""){
		echo "non hai inserito l'username o la password";
		//e qui metti un ritorno automatico al form o dove vuoi
		echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	}else{
		//dati di connessione
		$user=addslashes($user);
		$pass=sha1($pass);//le password devono essere codificate
		//precedentemente ti sari fatta una tabella chiamata es. utenti con i compi id, user e pass e altri che ti possono servire
		//uso perchè mi è più comodo mysql, ma tu passa a mysqli
		$query=mysql_query("SELECT * from utenti WHERE user='$user' AND pass='$pass'");
		if(mysql_num_rows($query)==0){
			echo "non sei iscritto, devi iscriverti";
			//e qui metti un ritorno automatico al form di iscrizione o alla index.php
		}else{
			//l'utente è iscritto e quindi puo caricare un video
			$_SESSION['utente']=$_POST['user'];//valorizi una sessione che ti servirà nella pagina riservata
			//e mandi alla pagina di caricamento
			echo "<meta http-equiv='Refresh' content='0; URL=carica_file.php'>";
		}
	}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>...</title>
</head>
<body>
<!-- ...... -->
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  username   <input name="user" type="text" id="user"><br>
  password   <input name="pass" type="text" id="pass"><br>
  <input name="log" type="submit" id="log" value="log">
</form>
<!-- ...... -->
</body>
</html>
e una pagina riservata per caricare i filmati
carica_file.php
PHP:
<?php
session_start();
if(!isset($_SESSION['utente'])){
	//la session non esiste quindi probabile accesso non autorizzato
	//e riinvii alla index
	header("location:index.php");
	exit();
}
?>
<!DOCTYPE html>
<html>
<head>
<title>...</title>
</head>
<body>
<?php
if(isset($_POST['carica'])){
	//leggi e verifichi gli altri campi di input se ci sono
	if($_FILES['movie']['name'] ==""){
		echo "non hai selezionato un file";//e rimandi al form
	}else{
		$consentiti=array("mp42", "swf2");//estenzione dei file ammessi
		$estensione=pathinfo($_FILES['movie']['name'], PATHINFO_EXTENSION);//leggi l'estenzione
		if(!in_array($estensione,$consentiti)){
			echo "il tipo di file non è un tipo ammesso";
			//e rimandi al form
		}else{
			$cartella="movie/";//cartella dove caricherai i file chiamata es. movie
			$nome_file=$cartella.pathinfo($_FILES['movie']['name'], PATHINFO_BASENAME);
			//e carichi
			if(!move_uploaded_file($_FILES['movie']['tmp_name'], $nome_file)){
				echo "c'è stato un errore di caricamento riporova";
				//e rimandi dove vuoi
			}else{
				//dati di connessione al db
				//precedentemente ti sarai fatto una tabella con i campi id, nome_movie e altri campi che ti possono servire chiamata es. movie
				$query=mysql_query("INSER INTO movie(nome_movie) VALUES('$nome_file')");
				echo "filmato caricato e salvato nel db";
				//e rimandi dove vuoi
			}
		}
	}
}
?>
<!-- ...... -->
ciao <?php echo $_SESSION['utente']; ?> carica un tuo filmato<br>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
	<!-- altri eventuali campi di input che vuoi salvare nel db -->
	seleziona file da caricare: <input name="movie" type="file" id="movie"><br>
	<input name="carica" type="submit" id="carica" value="carica">
</form>
<!-- ...... -->
</body>
</html>
e qui mi fermo, la letytura del movie alla prossima.
guardalo e prova comunque sappi che è uno schema quindi probabilmente da migliorare e avendolo buttato giù di getto posso aver fatto degli errori
p.s.
quando scrivi del codice racchiudilo negli appositi bccode (seconda riga formattazione del post, ultime tre iconcine nell'ordine CODE, HTML, PHP
 

giorgio85

Nuovo Utente
13 Gen 2016
8
0
1
Grazie sei un genio...volevo chiederle una cosa se è possible...se volessi per caso far apparire i filmati per esempio i piu visti o quelli "virali"...nella home page che lho impostata come index.html accessibili a tutti anche a scopo promozionale come potrei impostare il procedimento...Ringrazio anticipatamente...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
ci devo pensare un momento, comunque (penso) che dovresti mettere nella tabella movie un campo chiamato es. visite di tipo intero es. int(9) che si incrementa (uppa) di uno ogni volta che il video viene visionato o richiamato.
probabilmente converrò mettere un pulsante VOTA (uno per filmato) che un utente puo cliccare se il video gli piace.
oppure nella pagina in cui vuoi far vedere i filmati dei link per richiamare un filmato
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
questo potrebbe essere un metodo (un pulsante tipo mi piace per ogni filmato)
intanto preparerei la tabella movie in questa maniera
Codice:
id int(12) autoincrement primary key
titolo varchar(250) not null
autore varchar(250) not null
nome_file varchar(250) not null
estenzione varchar() not null
voto int(9) not null default 0
e altri campi se ti servono es la data di inserimento (io generalmente per le date uso il timestamp comunque conviene che sia nel formato aaaa-mm-gg, poi a sistemarla in formato italiano ci pensi con php)
penso che il sistema migliore sia un pulsante tipo mi piace
e quindi nella pagina index.php
PHP:
<?php
//dati di connessione, quarda che per comodità mia scrivo le vecchie mysql
if(isset($_POST['vota'])){
	$votato=(int)$_POST['voto'];
	$q_uppa=mysql_query("UPDATE movies SET voto=voto+1 WHERE id=$votato");//incremento il campo voto di uno
}
?>
<!DOCTYPE HTML>
<html>
<head>
<title>...</title>
</head>
<body>
<!-- e tutto l'html che ti serve -->
<?php
$query=mysql_query($conn, "SELECT * FROM movies ORDER BY visite, titolo");//estraggo ordinati per numero di visite, a parita in ordine alfabetico di titolo
if(mysql_num_rows($query)==0){
	echo "non ci sono filmati caricati";
}else{
	while($riga=mysql_fetch_array($query)){
		$id=$riga['id'];//mi servirà per uppare il campo visite
		$titolo=$riga['titolo'];
		$autore=$riga['autore'];
    	$nome=$riga['nome_filefile'];//senza estenzione
   	 	$estenzione=$riga['estenzione'];
    	echo "$titolo by $autore";
		if($estenzione ="swf"){//è un file flash
        	$file=$percorso.$nome.".".$estenzione;
        	echo "<object width=\"400\" height=\"400\" data=\"$file\"></object>";
    	}else{//non è un swf generalmente un mp4, verifica i tipi supportati
        	$file_mp4=$percorso.$nome.".".$estenzione;
        	$file_ogg=$percorso.$nome.".ogg";
        	echo "<video width=\"320\" height=\"240\" controls>";
        	echo "<source src=\"$file_mp4\" type=\"video/mp4\">";//qui es ho messo mp4
        	echo "<source src=\"$file_ogg\" type=\"video/ogg\">";
        	echo "</video>";
    	}
		//e un piccolo form per votare
		//conviene che ogni form abbia un nome diverso
		$nome_form="form".$id;
		echo "<form name='$nome_form' method='post' action='$_SERVER['PHP_SELF']'>";
		echo "<input name='voto' type='hidden' value='$id'>";
		echo "<input name='vota' type='submit' id='vota' value='vota'>";
		echo "</form>";
		echo "<hr>";//per dividere un filmato dall'altro comunque usando i css lo metterai meglio apposto
	}
}
?>
<!-- e tutto l'html che ti serve -->
</body>
</html>
guarda che ho messo i nomi campi e quali a caso dovrai correggerli come li hai tu
oppure si potrebbe fare un menù con i titoli dei filmati e l'utente sceglie quale guardare, però mi piace meno comunque ci penso