Problema: come memorizzare il contenuto visualizzato di un dvd in una textarea
Salve a tutti,
Devo far leggere un dvd con php e una volta avvenuta la lettura che sarà visualizzata in una textarea lo dovrei memorizzare in un db. Questa è la tabella chiamata arcdvd2 ed composta come segue:
arcdvd2:
Codice PHP:
create table arcdvd2 (
iddvd INT NOT NULL AUTO_INCREMENT,
titolodvd VARCHAR(80) NOT NULL,
cartella VARCHAR(255) NOT NULL,
PRIMARY KEY (iddvd)
);
Questo è il corpo del programma. La funzione mi è stata passata e sembra funzionare correttamente:
letturadvd.php
Codice PHP:
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
if (isset($_POST['codice'])) {
$codice = $_POST['codice'];
}
<form action= '' method="POST">
Titolo dvd: <input type="text" name="titolodvd" maxlength="80" size ="82">
<p> <p>
<?php
require_once "connetticonxampp.php";
if (isset($_POST['codice'])) {
function listafiles($directory='')
{
//$directory.'*.sorgente' es $directory.'*.php' == mostrerà tutti i file php
//$directory.'*.sorgente' es $directory.'*.avi' == mostrerà tutti i file avi
set_time_limit(50);
foreach(glob($directory.'*.*') as $file) //elenco tutti i file della directory
echo '<br>'.$file;
foreach(glob($directory.'*', GLOB_ONLYDIR | GLOB_MARK) as $cartella) //per ogni cartella di $directory, richiamo la funzione passando la cartella
if($cartella != './' && $cartella != '../') //non teniamo conto di ./ altrimenti va in loop infinito, e ../ altrimenti torna anche indietro!
listafiles($cartella);
}
echo '<textarea rows="4" cols="50">';
listafiles('e:\\');//la tua directory iniziale
echo "</textarea>";
$titolodvd = $_POST['titolodvd'];
$cartella = $_POST['cartella'];
if(!empty($_POST)){
$query=("INSERT INTO arcdvd2 (titolodvd, cartella) VALUES('".$titolodvd."','".$cartella."')");
$result=@mysql_query($query) or die("Error query DataBase:".mysql_error());
if($result){
echo("<p> Inserimento avvenuto correttamente <p>");
} else{
echo("<br>Inserimento non eseguito");
}
}
?>
<div align ="center">
<p> <p>
<input type="submit" value="Invia" name="memo">
</p> </p>
</p></p>
</div>
<?php
}
?>
</form>
</body>
</html>
In teoria l'if iniziale serivirebbe per togliere gli errori di noitice undefin index ecc. ecc. Pero visualizza solo la suente cosa:
http://s1.postimg.org/w74bv5avj/visu...incorretta.png
E quest'altra immagine è la visualizzazione quasi corretta di quello che deve memorizzare, però senza il codice html e php che si può vedere all'interno con due errori che non riesco a mandarli via: Eccola qua:
http://s8.postimg.org/m6knu7dlx/lett...sicorretta.png
Vi prego aiutatemi sono disperato e non so come andare avati. Sono mesi che ci sto lavorando e per me finire questo programma è importante. Grazie sono fiducuioso e aspetto una vostra risposta possibilmene al più presto. Grazie.
come memorizzare il contenuto letto del dvd
Allora ho apportato delle modifiche,
In primo mi sembrano che i tag php siano correttamente aperti e chiusi. A prescindere da queste le modifiche sono le seguneti lo preso dal seguente sito:
http://www.w3schools.com/php/php_form_complete.asp
Posto l'intero codice se ci fossero degli errori.
Ecco come l'avrei modifictato:
letturadvd.php
Codice PHP:
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action= '' method="POST">
Titolo dvd: <input type="text" name="titolodvd" maxlength="80" size ="82">
<p> <p>
Contenuto: <textarea name="contenuto" rows="5" cols="40">
<?php
require_once "connetticonxampp.php";
function listafiles($directory='')
{
//$directory.'*.sorgente' es $directory.'*.php' == mostrerà tutti i file php
//$directory.'*.sorgente' es $directory.'*.avi' == mostrerà tutti i file avi
set_time_limit(50);
foreach(glob($directory.'*.*') as $file) //elenco tutti i file della directory
echo '<br>'.$file;
foreach(glob($directory.'*', GLOB_ONLYDIR | GLOB_MARK) as $cartella) //per ogni cartella di $directory, richiamo la funzione passando la cartella
if($cartella != './' && $cartella != '../') //non teniamo conto di ./ altrimenti va in loop infinito, e ../ altrimenti torna anche indietro!
listafiles($cartella);
}
#echo '<textarea rows="4" cols="50">';
listafiles('e:\\');//la tua directory iniziale
echo "</textarea>";
$titolodvd = $_POST['titolodvd'];
$cartella = $_POST['cartella'];
if(!empty($_POST)){
$query=("INSERT INTO arcdvd2 (titolodvd, cartella) VALUES('".$titolodvd."','".$cartella."')");
$result=@mysql_query($query) or die("Error query DataBase:".mysql_error());
if($result){
echo("<p> Inserimento avvenuto correttamente <p>");
} else{
echo("<br>Inserimento non eseguito");
}
}
?>
<div align ="center">
<p> <p>
<input type="submit" value="Invia" name="memo">
</p> </p>
</p></p>
</div>
</form>
</body>
</html>
E come terzo campo ne db cosa dovrei metterci ????
come memorizzare il contenuto letto del dvd
Ciao alemoppo,
Allora ho quasi risolto il problema. Ma rimane il fatto che nella textarea viene visualizzato il codice html e non capisco il perchè. O ritoccato il codice. Sicuramente non rispecchia le regole di una pagina web scritta per bene ma per me l'importante è arrivare al risultato. Questo è il codice finale e continua a memorizzare all'interno della textarea il codice html:
letturadvd.php
Codice PHP:
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action= '' method="POST">
Titolo dvd: <input type="text" name="titolodvd" maxlength="80" size ="82">
<p> <p>
<!--Contenuto: <textarea name="contenuto" rows="5" cols="40">-->
<?php
require_once "connetticonxampp.php";
function listafiles($directory='')
{
//$directory.'*.sorgente' es $directory.'*.php' == mostrerà tutti i file php
//$directory.'*.sorgente' es $directory.'*.avi' == mostrerà tutti i file avi
set_time_limit(50);
foreach(glob($directory.'*.*') as $file) //elenco tutti i file della directory
echo '<br>'.$file;
foreach(glob($directory.'*', GLOB_ONLYDIR | GLOB_MARK) as $cartella) //per ogni cartella di $directory, richiamo la funzione passando la cartella
if($cartella != './' && $cartella != '../') //non teniamo conto di ./ altrimenti va in loop infinito, e ../ altrimenti torna anche indietro!
listafiles($cartella);
}
?>
Contenuto: <textarea name="contenuto" rows="5" cols="40">
<?php
listafiles('e:\\');//la tua directory iniziale
echo "</textarea>";
$titolodvd = $_POST['titolodvd'];
$contenuto = $_POST['contenuto'];
if(!empty($_POST)){
$query=("INSERT INTO arcdvd2 (titolodvd, contenuto) VALUES('".$titolodvd."','".$contenuto."')");
$result=@mysql_query($query) or die("Error query DataBase:".mysql_error());
if($result){
echo("<p> Inserimento avvenuto correttamente <p>");
} else{
echo("<br>Inserimento non eseguito");
}
}
?>
<div align ="center">
<p> <p>
<input type="submit" value="Invia" name="memo">
</p> </p>
</p></p>
</div>
</form>
</body>
</html>
Ci sono sempre i due errori:
Codice:
Notice: Undefined index: titolodvd in C:\xampp\htdocs\Archdvd2\letturadvdfunzionebymark.php on line 42
Notice: Undefined index: contenuto in C:\xampp\htdocs\Archdvd2\letturadvdfunzionebymark.php on line 43
Che non so come mandarli via. E questa è la tabella finale con il campo aggiunto da te suggeritomi:
tabella - arcdvd2:
Codice:
create table arcdvd2 (
iddvd INT NOT NULL AUTO_INCREMENT,
titolodvd VARCHAR(80) NOT NULL,
contenuto VARCHAR(255) NOT NULL,
memdvd VARCHAR(255) NOT NULL,
PRIMARY KEY (iddvd)
);
C'è un'istrizione che mi possa togliere qeui codici in html che memorizza ??? Se ci sono errori ben vengano le correzioni. grazie. Non mi prende tutto il dvd quindi vuol dire che supera i 255 caratteri come fare per ampliare????
come memorizzare il contenuto letto del dvd
Ciao alemoppo,
Come detto prima ti posto il listato completo e quello che visualizzo io sul mio pc. Innanzi tutto ho modificato il campo textarea da varchar(255) a text in modo tale che mi legge tutto il contenuto senza vincoli di limite di carattere.
Questo è il listatto:
letturadvd.php
Codice PHP:
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action= '' method="POST">
Titolo dvd: <input type="text" name="titolodvd" maxlength="80" size ="82">
<p> <p>
<!--Contenuto: <textarea name="contenuto" rows="5" cols="40">-->
<?php
require_once "connetticonxampp.php";
function listafiles($directory='')
{
//$directory.'*.sorgente' es $directory.'*.php' == mostrerà tutti i file php
//$directory.'*.sorgente' es $directory.'*.avi' == mostrerà tutti i file avi
set_time_limit(50);
foreach(glob($directory.'*.*') as $file) //elenco tutti i file della directory
echo '<br>'.$file;
foreach(glob($directory.'*', GLOB_ONLYDIR | GLOB_MARK) as $cartella) //per ogni cartella di $directory, richiamo la funzione passando la cartella
if($cartella != './' && $cartella != '../') //non teniamo conto di ./ altrimenti va in loop infinito, e ../ altrimenti torna anche indietro!
listafiles($cartella);
}
?>
Contenuto: <textarea name="contenuto" rows="5" cols="40"> Apro la textarea
<?php
listafiles('e:\\');//la tua directory iniziale
echo "</textarea>"; chiudo la textarea
if(!empty($_POST)){
$titolodvd = trim($_POST['titolodvd']);
$contenuto = trim($_POST['contenuto']);
$query=("INSERT INTO arcdvd2 (titolodvd, contenuto) VALUES('".$titolodvd."','".$contenuto."')");
$result=@mysql_query($query) or die("Error query DataBase:".mysql_error());
if($result){
echo("<p> Inserimento avvenuto correttamente </p>");
} else{
echo("<p>Inserimento non eseguito </p>");
}
}
?>
<div align ="center">
<p> <p>
<input type="submit" value="Invia" name="memo">
</p> </p>
</p></p>
</div>
</form>
</body>
</html>
Quello che vorrei modficare se ci si riesce è:
1) avere un elenco e ordinato secondo per cartella
2) La funzione che mi dicevi prima per eliminare come vedrai nello screenshots che ti mando aggiornato i tag <br>. Grazie infinite per adesso. Se mi puoi integrare queste due cose dovrei aver concluso felicemente una minima parte del mio progetto e non dovrei rompere le scatole per parecchio spero. Questa è l'immagine:
http://s30.postimg.org/qqyt02lox/newversiontextarea.png