array explode ( string separator, string string [, int limit] )
Questa funzione restituisce una matrice di stringhe, ciascuna delle quali è una parte di string ottenuta dividendo la stringa originale utilizzando separator come separatore di stringa. Se si imposta limit la matrice restituita conterrà al massimo limit elementi di cui l'ultimo conterrà la parte restante di string.
premetto che sono alle prime armi con php, ti ringrazio per la risposta ma io non ci ho capito nulla!!!
Come faccio la query per il select del databse, così va bene??
SELECT tags FROM tabella WERE id='$id'
Così ottengo la lista di parole precedentemente inserite nel database e poi???
![]()
mmm... non ho capito bene a che livello di dettaglio devo andare... per sicurezza di riporto tutti i passi...
prima ti connetti a mysql:
mysql_connect(_SERVER_NAME_,_USERNAME_,_PASSWORD_) ;
poi ti connetti al database:
mysql_select_db(_DATABASE_);
fai la query
$result = mysql_query("SELECT tags FROM tabella WERE id='$id'");
a questo punto cicli sui risultati
while ($riga = mysql_fetch_array($result) ) {
/*ora ad ogni ciclo, nella var $riga hai un array con i campi estratti con la query,
nel tuo caso $riga[0] è il campo tags
*/
}
A questo punto puoi utilizzare la funzione explode per scorporare i dati, come t ho descritto nel post precedente.
Ti faccio un'annotazione però: in genere non è una buona cosa avere un campo di una tabella dove memorizzi dei dati separati da virgola. Questo non è una verita assoluta... ma è probabile che tu abbia progettato il database in maniera non molto appropriata
In pratica devo inserire delle chiavi o tags in un campo per poi riprenderle e mostrarle separatamente... tu come mi consiglieresti di impostare la tabella???
Se la relazione è di tipo molti a molti (e mi sembra che sia il tuo caso perchè un text può contenere più tag, e un tag può essere associato a più text) dovresti utilizzare 3 tabelle.
Ad esempio:
---------------
tabella text:
---------------
id
---------------
---------------
tabella tag:
---------------
id
nome_tag
---------------
---------------
tabella text-tag
---------------
identificativo
id_text
id_tag
---------------
A questo punto puoi inserire nella tabella tag tre elementi: cane con id 1, gatto con id 2, topo con id 3.
Per dire che nel testo con id 1 ci sono tutti e tre i tag devi aggiungere nella tabella text-tag gli elementi:
id_text: 1
id_tag: 1
id_text: 1
id_tag: 2
id_text: 1
id_tag: 3
Facendo in questo modo non hai più bisogno di utilizzare il comando explode per recuperare correttamente i campi.
Considera anche che questa soluzione è estremamente più performante (e ti evita molti problemi) nel caso di SELECT. Infatti in SQL non puoi fare una select cercando un certo valore all'interno di una cella... puoi fare una query con la clausola LIKE ma sarebbe comunque una soluzione poco corretta...
Comunque, se hai necessità di utilizzare in modo intensivo mysql ti consiglio di approfondire scrupolosamente lo studio dei DB... un database mal progettato è fonte di innumerevoli smadom***amenti!!!![]()
Spero di esserti stato utile!
Grazie mille sei stato molto chiaro![]()