Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Il Database Parlante

  1. #1

    Il Database Parlante

    Salve avrei la necessità di creare un database con la possibilità di estrarre non solo del testo ma anche dei file audio

    Mi spiego meglio :

    Supponiamo che il database contenga la tabella " articoli " con i seguenti campi - id , titolo , data , testo , autore
    Digitando nel form il titolo dell'articolo mi verrà visualizzato il relativo testo , ciò che vorrei fare e aggiungere un'altro campo per un file audio ( di tipo wav oppure mp3 ) , che verrebbe riprodotto in contemporanea alla visualizzazione del testo recuperato dal database .

    Quindi avremo :

    id , titolo , data , testo , autore , audio

    Il problema e che ho iniziato da poco a lavorare con i database relazionali ( a proposito uso
    PHP 5.2.1 , MYSQL 5.0 e Apache 2.2 ) e non ho le idee chiare su come realizzare questa cosa .

    Per esempio :

    1 - Che tipo di campo e quale funzione devo assegnare al campo audio ?
    2 - Come modificare il codice per il salvataggio del file audio attraverso il form ?
    2 - Come fare per iniziare la riproduzione automatica del file audio subito dopo il recupero ?
    3 - Inoltre vorrei visualizzare un messaggio nel caso l'articolo non fosse presente nel database


    Posto il sorgente principale :

    [ codice primofile.php ]

    <?
    include("open.php");
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $query = "CREATE TABLE news (id INT (5) UNSIGNED not null AUTO_INCREMENT, titolo VARCHAR (255) not null, testo TEXT not null, data INT (11), autore VARCHAR (50), mail VARCHAR (50), PRIMARY KEY (id))";
    if (mysql_query($query, $db))
    echo "L'installazione è stata eseguita correttamente";
    else
    echo "Errore durante l'installazione";
    mysql_close($db);
    ?>

    [/codice php ]


    [ codice secondofile.php ]

    <?
    include ("open.php");

    //intestazione
    top();
    ?>

    <form method="post" action="save.php">
    Titolo:

    <input type="text" size="40" name="titolo" />



    Data:


    <select name="giorno">
    <?
    for ($i=1; $i<=31; $i++)
    echo "<option value=\"$i\">$i</option>";
    ?>
    </select>

    <select name="mese">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>

    <select name="anno">
    <option value="2001">2001</option>
    <option value="2002">2002</option>
    <option value="2003">2003</option>
    <option value="2004">2004</option>
    <option value="2005">2005</option>
    <option value="2003">2006</option>
    <option value="2004">2007</option>
    </select>




    Autore:

    <input type="text" size="40" name="autore" />



    E-mail:

    <input type="text" size="40" name="mail" />



    Testo:

    <textarea cols="60" rows="40" name="testo"></textarea>



    Password:

    <input type="password" size="40" name="pass" />



    <input type="submit" value="Invia2" />
    </form>
    <?
    // chiusura pagina
    foot();
    ?>

    [/codice php ]

    [ codice terzofile.php ]

    <?php
    include("open.php");
    $chiave=$_REQUEST['chiave'];
    top();
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $keys = explode (",", $chiave);
    $query = "";
    reset ($keys);
    while (list(,$parola) = each ($keys))
    { $parola = trim($parola);
    if ($parola != "")
    $query .= "titolo = '$parola' OR testo = '$parola' OR autore = '$parola' OR ";
    }
    $query .= " 0";
    $query = "SELECT id, testo, data FROM news WHERE " . $query;
    $result = mysql_query($query, $db);
    if ($query == FALSE)
    die ("Spiacente ............");
    while ($row = mysql_fetch_array($result))
    {
    echo "<a>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp& nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp" .date("",$row['data']) . "&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp {$row['testo']}</a>
    ";
    }
    mysql_close($db);
    foot();
    ?>

    [/codice php ]


    Ringrazio in anticipo chi volesse aiutarmi a risolvere il problema

  2. #2
    Fossi in te, io il campo audio lo imposterei come semplice TEXT, e ci andrei a salvare solo il nome del file audio (comprensivo di estensione, of course).
    Nome che verrà salvato al momento dell'upoload del file audio.
    Il file audio, durante l'upload, viene salvato in una cartella del server, mentre il solo nome nel DB.
    Quando andrai ad eseguire la query di select per visualizzare l'articolo e mandare in play l'audio, saprai il nome del file e conosci in partenza il nome della cartella..... ed il gioco è fatto.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Salve alcio74

    Grazie intanto per i suggerimenti che mi hai dato !

    ......Quando andrai ad eseguire la query di select per visualizzare l'articolo e mandare in play l'audio, saprai il nome del file e conosci in partenza il nome della cartella.....

    Per mandare automaticamente in play il file audio devo usare fopen ?
    Inoltre non voglio che vengano visualizzati il nome del file e della cartella , e vorrei precisare che il database verrà usato solo sul client quindi in locale , che tipo di campo devo impostare allora per i file audio ?



  4. #4
    Originariamente inviato da Runcommand
    Per mandare automaticamente in play il file audio devo usare fopen?
    Dipende da come lo hai implementato nella pagina. Io ti ho solo suggerito come salvarlo nel DB. Non so il tuo script come funziona. Il file lo puoi richiamare con flash, con un embed, con un file VML o che so io.
    Questa è una cosa che solo te puoi sapere.

    Originariamente inviato da Runcommand
    che tipo di campo devo impostare allora per i file audio ?
    Per il tipo di campo ti avevo già detto.
    Un qualasiasi campo di testo, che sia TEXT o VARCHAR.

    Originariamente inviato da Runcommand
    ... e vorrei precisare che il database verrà usato solo sul client quindi in locale.....
    "Client" indica una cosa, "in locale" ne indica un'altra.
    Penso che devi essere più preciso se vuoi riuscire a farmi capire.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Ok ho creato un nuovo database per le prove aggiungendo il campo per l'audio di tipo VARCHAR

    come valore al suo interno ho provato a inserire il percorso in questi due modi diversi :

    prima

    london.mp3 ( questo file si trova nella cartella dei file php del database )

    e su un'altro

    c:\\brani\\london.mp3 ( questo naturalmente e collocato in un'altra directory per vedere se cambia qualcosa )

    Quale dei due valori e corretto ?


    Digitando il titolo nel Form di ricerca questa va a buon fine e restituisce il risultato
    MA PER QUANTO RIGUARDA L'AUDIO NIENTE DA FARE NON FUNZIONA , come dovrei operare quindi affinchè venga riprodotto in automatico ?

    Tu mi hai detto ( Il file lo puoi richiamare con ....... un embed, con un file VML )

    ma un embed di questo tipo non posso usarlo <embed src="london.mp3" perchè richiede il nome del file , e i brani audio sono un gran numero !!


    Questa invece e la modifica che ho apportato alla riga echo :

    Codice PHP:
    echo "<a>&nbsp" .date("",$row['data']) . "&nbsp {$row['testo']} {$row['audio']}</a>
    "

    Saluti e grazie per adesso !



  6. #6
    Originariamente inviato da Runcommand
    Quale dei due valori e corretto ?
    Tecnicamente entrambi, ma io preferisco non salvare il percorso assoluto nel DB, ma quello relativo.. o meglio, solo il nome del file.

    Originariamente inviato da Runcommand
    MA PER QUANTO RIGUARDA L'AUDIO NIENTE DA FARE NON FUNZIONA , come dovrei operare quindi affinchè venga riprodotto in automatico ?
    [...]
    ma un embed di questo tipo non posso usarlo <embed src="london.mp3" perchè richiede il nome del file , e i brani audio sono un gran numero !!
    Ehm... ma cosa c'entra????
    Usare un DB ti aiuta proprio per andare ad estrarre solo i valori che servono a te.
    Fai una query al DB ed ottieni (tra le altre cose) anche i nomi dei file.
    Per ogni rigo un nome file... se anche avrai 10mila files, saprai sempre il nome di tutti.
    Non riesco a capire dove sia il tuo problema.
    Scusa se lo chiedo, ma la domanda mi sorge spontanea: quanto sai di PHP/MySQL e HTML???

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #7
    Originariamente inviato da alcio74
    Usare un DB ti aiuta proprio per andare ad estrarre solo i valori che servono a te.
    Fai una query al DB ed ottieni (tra le altre cose) anche i nomi dei file.
    Per ogni rigo un nome file... se anche avrai 10mila files, saprai sempre il nome di tutti.
    Non riesco a capire dove sia il tuo problema.
    Alcio non mi interessa estrarre un elenco con i nomi dei file audio ...... mi interessa soltanto visualizzare il testo e far riprodurre un brano audio in automatico .

    Allora come ho già detto il database contiene la tabella " articoli " con i seguenti campi :

    id , titolo , data , testo , autore , e adesso anche , audio
    ( il brano audio non e altri che il testo registrato )

    Digitando nel form il titolo dell'articolo mi viene visualizzato il relativo testo e fin quì tutto bene

    nel database però ho memorizzato il percorso e il nome del file audio
    MA NON SO COME FARE PER FAR RIPRODURRE QUESTO BRANO IN AUTOMATICO ( ogni brano e abbinato a un testo ) , QUINDI NON SOLO NON DEVE COMPARIRE A VIDEO IL NOME DEL FILE , MA PER ASCOLTARLO NON DEV'ESSERE NECESSARIO CLICCARE DA QUALCHE PARTE , ECCO QUAL'E' IL PROBLEMA .

    Ad esempio in HTML se devo riprodurre un brano audio faccio così :
    codice HTML:
    <embed src="fileaudio.wav"
    loop="true" showcontrols="false" autostart="true" ecc... ecc....
    in Javascript invece potrei usare un codice del tipo :

    [js]
    <bgsound src="#" id="effetto" loop"1" autostart="true" />
    <script type="text/javascript">
    function play(file)
    {
    if (document.all && document.getElementByld)
    }
    document.getElementByld("effetto".src=""
    document.getElementByld("effetto".src=file
    }
    }
    </script>
    ecc... ecc .......
    [/js]



    oppure :
    [js]
    <embed
    src="brano.mp3"
    name="musica"
    autostart="false"
    loop="0"
    hidden="true">
    </embed>
    [/js]

    So che e possibile passare una variabile da php a javascript ma non so come applicare questa cosa per risolvere il problema

    http://www.studio404.it/2006/passare...avascript.html



    Scusa se lo chiedo, ma la domanda mi sorge spontanea: quanto sai di PHP/MySQL e HTML???
    Mi occupo di informatica ma non sono un programmatore se e questo che vuoi sapere , altrimenti non credo che avrei postato per un problema di questo genere .

    Ciao spero di essere stato chiaro stavolta



  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Perdonami, ma il nome del file non sta in un campo di database?

    Allora fai una select al db e prendi frase e nome del file avrai un qualcosa tipo $result['frase'] e $result['nomefile'].

    Fai un echo cosi
    Codice PHP:
    echo 'questa è la frase: ' $result['frase'];
    echo 
    '<embed src="' $result['nomefile'] .'" loop="true" showcontrols="false" autostart="true" ecc... ecc....' 
    Così hai scritto la frase e prodotto il codice per l'embedding... Se ho colto quello che ti occorre...

    NB: le virgolette potrebbero essere cannate... l'ho scritto di getto qua.

  9. #9
    Utente bannato
    Registrato dal
    Jan 2009
    Messaggi
    152
    Puoi anche far scrivere a JavaScript la stringa di EMBED dentro un DIV con .innerHTML
    In questa stringa il Valore di SRC sarà rappresentato da una Variabile (URL dell' mp3) che JS può prendere da un Array compilato nello SCRIPT come pure averla dal Database via PHP.
    Ora bisogna vedere come questo dato PHP-MySQL vuoi farlo manifestare al reload della pagina; per cominciare, facciamo conto che entra come Value di un campo di testo:
    codice:
    <html>
    <head>
    
    <script type="text/javascript">
    
                      var brano;
    function Play() {
     brano = document.getElementById("delivered").value;
     document.getElementById("audio").innerHTML='<embed id="musica" src="'+brano+'" type="" width="2" height="2" '+
                                                 'volume="100" autostart="true" loop="0" hidden="false"></embed>';
     }
    function Stop() {
     document.getElementById("audio").innerHTML='';
     }
    
    </script>
    
    </head>
    <body>
    
    <form>
     mp3 URL : <input id="delivered"  type="text">
               <input value="esegui"  type="button" onClick='Play(); '>
               <input value="arresta" type="button" onClick='Stop(); '> 
    
           <div id="audio" style="display: ; width: ; height: ;"></div>
    
    </form>
    
    </body>
    </html>
    "clasku" ha già illustrato l' equivalente soluzione che fa scrivere la stringa al PHP.

  10. #10
    Grazie mille ad entrambi per i suggerimenti , ma per tagliare la testa al toro ( poveretto ) mi hanno suggerito di usare un player audio con la riproduzione automatica .

    Il problema adesso credo sia legato al percorso del file ( audio per intenderci )

    Dove dovrei mettere questi brani ?

    La directory attuale dove tengo sia gli mp3 che i php e questa :

    C:\Programmi\Apache Software Foundation\Apache2.2\htdocs\provaaudio

    Nel campo audio del database ho provato a inserire

    nomefile.mp3

    ma non parte !

    php5 accetta gli mp3 ?

    bisogna decommentare una riga ?



    Saluto entrambi e Grazie naturalmente !!





Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.