IL DATABASE PARLANTE

sabato 28 marzo 2009 - 00.04

RunCommand Profilo | Newbie

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:<br />
<input type="text" size="40" name="titolo" />
<br /><br />
Data:<br />

<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>
<br /><br />

Autore:<br />
<input type="text" size="40" name="autore" />
<br /><br />
E-mail:<br />
<input type="text" size="40" name="mail" />
<br /><br />
Testo:<br />
<textarea cols="60" rows="40" name="testo"></textarea><br />
<br />
Password:<br />
<input type="password" size="40" name="pass" />
<br /><br />
<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><br>";
}
mysql_close($db);
foot();
?>

[/codice php ]


Ringrazio in anticipo chi volesse aiutarmi a risolvere il problema


Anonimo Profilo | Senior Member

Ciao,

Una soluzione, secondo me semplice ma allo stesso tempo efficace per quello che vuoi fare è la seguente:

-Predisponi un semplice form che permette l'upload del file* mp3 in contemporanea all'inserimento dell'articolo e/o in fase di update.
-Una volta che il file viene uploadato lo salvi sul server (e non nel database) dandogli come nome una cosa tipo "id-tuo-articolo-nel-db.mp3"
-In fase di visualizzazione verifichi se esiste un file con il nome precedentemente datogli
-Se esiste includi il codice per riprodurre un mp3* altrimenti visualizzi il messaggio che ti serve

Dove ho messo l'* significa che il rete trovi molti esempi per farlo

Ciao ciao
Riccardo

RunCommand Profilo | Newbie

Ciao ricky87

Grazie mille per il 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 ?


Saluti !

Anonimo Profilo | Senior Member

No beh se tu il file lo chiami "valore-chiave-primaria.mp3" non c'è bisogno di salvare nulla nel db. Per guardo riguarda il path dove salvarlo è indifferente, io creerei una cartella apposita per tenere tutto il ordine :)

Per riprodurlo, in modo semplice puoi mettere un codice del genere (che ho trovato su internet):

<embed src="file.mp3" autostart="true" volume="90" hidden="TRUE" height="0" width="0">


Riccardo

RunCommand Profilo | Newbie

Ok Riccardo il problema con il player e risolto !


Adesso mi rimane soltanto una cosa da risolvere , e la cosa e alquanto strana , in pratica se l'utente
digita un titolo che non è presente nel database , questi dovrebbe restituire un messaggio del tipo : Titolo non presente ... ecc ...

Io ho fatto in questo modo :

[php]
$query = "SELECT id, testo, data FROM news WHERE " . $query;
$result = mysql_query($query, $db);
while ($row = mysql_fetch_array($result))
{
if ($parola = "!=")
die ("Spiacente titolo non presente");
[/php]

Ho provato anche in questo modo , ma non va

[php]
if ($parola == FALSE)
die ("Spiacente titolo non presente");
[/php]

Allora ho fatto così ma non vuole saperne

[php]
if ($query == FALSE)
die ("Spiacente titolo non presente");
[/php]

La logica credo dovrebbe essere questa : se il titolo non è presente nel database restituisci questo messaggio .....

Dov'è che sbaglio ?


Anonimo Profilo | Senior Member

Puoi usare la funzione mysql_num_rows();

Ad esempio:

$query = "SELECT id, testo, data FROM news WHERE " . $query; $result = mysql_query($query, $db); if(!mysql_num_rows($result)) while ($row = mysql_fetch_array($result)) { ....elaborazione che devi fare se la query restituisce 1 o più righe di risultato.. } else die ("Spiacente titolo non presente");

Ciao ciao
Riccardo

RunCommand Profilo | Newbie

Salve Riccardo

ho provato così , ma mi da errore :

[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(!mysql_num_rows($result))
else
die ("Spiacente titolo non presente");
while ($row = mysql_fetch_array($result))
$data = date("",$row['data']);
$testo = $row['testo'];
$audio = $row['audio'];
echo "<a>$data &nbsp $testo </a><br>";
}
mysql_close($db);
foot();
?>

Ciao e ancora Grazie !

Anonimo Profilo | Senior Member

Beh è buona norma postare anche l'errore che ricevi
Riccardo

RunCommand Profilo | Newbie

Problemi risolti !

Mi hanno suggerito questa modifica e funziona .

[php]
$result = mysql_query($query, $db);
$i=0;
while ($row = mysql_fetch_array($result))
{
echo $row[testo];
$i++;
}
if ($i==0)
{
echo "Nessun risultato";
[/php]

Grazie mille per l'interesse mostrato !

Ciao Riccardo


Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5