Problema: come memorizzare il contenuto visualizzato di un dvd

paperinik4

Utente Attivo
29 Mag 2011
1.812
0
36
Roma
www.ricetteagogo.it
Ciao Borgo, cricric, e a tutto lo staffdi mrwebmaster,

Chiedo per l'ennesima volta aiuto perchè non so come memorizzare il contenuto di un dvd in un db. La funzione che mi legge l'intero contenuto è la seguente:

letturadvd.php

PHP:
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>

                <form action= '' method="POST">

    <?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>";

$titolo = mysql_real_escape_string(strtolower(trim ($_POST['titolo'])));
$listafiles = mysql_real_escape_string(strtolower(trim ($_POST['listafiles'])));   

$query="INSERT INTO archdvd(titolo, listafiles)  VALUES('$titolo','$listafiles')";
$q_i=mysql_query($query);
        ?>
                    
                       <div align ="center">
                <p> <p>
    <input type="submit" value="Invia" name="memo">
</p> </p>
            </div>
                </form>
    </body>
</html>
Mi legge l'intero contenuto e mi dai seguenti errori:

Notice: Undefined index: titolo in C:\xampp\htdocs\Archdvd2\letturadvdfunzione.php on line 34

Notice: Undefined index: listafiles in C:\xampp\htdocs\Archdvd2\letturadvdfunzione.php on line 35
Le righe sono le seguenti:

$titolo = mysql_real_escape_string(strtolower(trim ($_POST['titolo'])));
$listafiles = mysql_real_escape_string(strtolower(trim ($_POST['listafiles'])));
Dove sbaglio ???? Spero che voi mi possiate aiutare a risolvere questo problema in modo tale che poi ho chiuso anche l'argomento. Vi prego rispondete per favore. Grazie.
 

MarcoGrazia

Utente Attivo
15 Dic 2009
788
16
18
59
Udine
www.stilisticamente.com
Semplice, ti ha detto che i due array POST non sono valorizzati.
La prossima volta non dare gli stessi nomi alle variabili che li contengono, così capisci a quale titolo di riferisce :)

Altra cosa, visto che si tratta di leggere un intero DVD non ti conviene mai usare glob() che si incasina con un enorme numero di file e directory, inoltre dovrai realizzare un sistema ricorsivo visto che ci sono molte directory da iterare, quindi più che due foreach annidati ti conviene passare a SPL e usare gli iteratori.
PHP:
function listafile( $path = '' ) {
$lista = array();
if ( path != '' ) {
    $dir_iterator = new RecursiveDirectoryIterator("/path");
    $iterator = new RecursiveIteratorIterator($dir_iterator, RecursiveIteratorIterator::SELF_FIRST);
    foreach ($iterator as $file) {
        if ($file->isFile()) {
           // qui tutti i files, non c'è bisogno di richiamare la funzione in quanto qui c'è già l'iterazione dentro le altre cartelle.
           $lista[] = $file->getPathname();
        }
    }
}
return $lista;
}
Io però non ho ben capito a che ti serve conoscere tutti i files del DVD, se devi semplicemente fare una ricerca al suo interno per vedere se esiste il titolo richiesto, allora ti conviene usare la shell e richiamare un classico DIR.
Per esempio:
PHP:
$sys = strtoupper( PHP_OS );
if ( substr $sys,0,3 ) == 'WIN' ) $escaping = escapeshellcmd( 'dir /s/b ' . $file_da_cercare );
if ( substr $sys,0,3 ) == 'LINUX' ) $escaping = escapeshellcmd( 'find / -name ' . $file_da_cercare );
$searching = system( $escaping );
dove:
  • escaping è la stringa contenente il comando e la richiesta di ricerca, formato in base al sistema operativo in uso.
  • $searching è la risposta
 

paperinik4

Utente Attivo
29 Mag 2011
1.812
0
36
Roma
www.ricetteagogo.it
Ciao MarcoGrazia,

Grazie innanzi tutto delle spiegazioni. Secondo a me serve sapere cosa contengono i 400 e passa dvd che ho. Quindi il mio progetto iniziale ed è tutt'ora è quello di memorizzare il contenuto di ogni dvd fare una targhetta per ciascuno di codice a barre, dopo di che con la pistola che ho comprato scegliendo un dvd a caso metti caso n°350 gli sparo sulla targhetta e dovrebbe uscrmi fuori l'intero contenuto. Ho fatto una prova con una mini rubrica semplice e funziona. Ovviamente iddvd nel mio caso corrisponde al numero dvd che avevo stampato o scritto in precedenza. Una cosa poi come faccio a memorizzare l'intero contenuto con la tua funzione ???? Ho provato ora ma non mi visualizza niente solo il tasto "invio" che ho messo io.
 

MarcoGrazia

Utente Attivo
15 Dic 2009
788
16
18
59
Udine
www.stilisticamente.com
Guarda non lo so, io ho creato delle funzioni iniziando da quel poco che hai messo tu, non so di che dvd stiamo parlando ( musica, film ) e quindi non so nemmeno cosa devi cercare.
Sono paertito da ciò che hai fatto tut cercando di semplificare e migliorare, ma francamente ancora non so tante cose del tuo programma.
Un mio amico qui mi ha appena detto: "ma perché non usa uno a caso delle miriadi di programmi di catalogazione dvd che ci sono in giro?" :D