Tag cloud

Meco

Nuovo Utente
2 Mag 2016
3
0
0
Ciao, volevo implementare nel mio sito i tag pescati dalla colonna (tag) di un database mysql
ma devo dire che non mi riesce... specialmente il passo in cui devo separare le stringe (ma non tutte ad es. nella colonna posso avere:
primo
primo,secondo
sendo
secondo,terzo
quindi devo eliminare le parole doppie e separare le parole con la virgola..............
posto il codice
PHP:
$tag2 = array();
$result = mysql_query("SELECT tag FROM database");
while($row = mysql_fetch_array($result)) { 
$tag1 = $row['tag'];

$tag2[] =(explode(",", $tag1));
$tag = array_unique($tag2);
}
foreach ($tag as $value)
{
  echo $value . "<br>";
}

avete suggerimenti ?
saluti
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
prova così se non ho capito male quello che vuoi fare, io ho simulato il db, devi sistemare con la query select
PHP:
<?php
/*
primo
primo,secondo
secondo
secondo,terzo
primo,terzo,quarto
*/
//simulo l'estrazione dal db
$tag1=array('primo,secondo','secondo','secondo,terzo','primo,terzo,quarto');
foreach($tag1 as $t1){
	$t2=explode(',',$t1);
	foreach($t2 as $t0){
		$tag2[]=$t0;
	}
}
$tag = array_unique($tag2);
foreach($tag as $valore){
	echo "$valore<br>";
}
?>
output
primo
secondo
terzo
quarto
 

Meco

Nuovo Utente
2 Mag 2016
3
0
0
Ciao grazie a te ho risolto, funziona.
Ti posso ancora chiedere se ho capito il codice che hai postato?
Allora: estratto i dati, creata lista, creata lista per dividere le parole, creata una nuova lista con le parole nuove, eliminato i doppi, creata nuova lista.
Capito bene?
grazie ancora
Saluti
Meco
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
leggi i commenti
PHP:
<?php
//.....
while($row = mysql_fetch_array($result)) { 
	$t1 = $row['tag'];//estrai il campo che puo essere una o più parole separate da virgole
	$t2=explode(',',$t1);//lo esplodi secondo la virgola
	/*se in $t1 hai "primo,secondo" $t2 diventa $t2[0] => "primo" e $t2[1] => "secondo" (e se sono tre $t2[2] => "pinco")
	se invece hai una parola sola rimane, es, $t1[0] => "primo"
	*/
	//cicli l'array $t2
	foreach($t2 as $t0){
		//e crei un array con tutte le parole singole anche ripetute
		$tag2[]=$t0;
	}
}//fine del while
//pulisci l'array $tag2 dei valori ripetuti
$tag = array_unique($tag2);
//e mostri il risultato
foreach($tag as $valore){
    echo "$valore<br>";
}
//.....
?>
un piccolo consiglio abbandona le vecchie istruzioni php msql, sono obsolete e in via di eliminazione, e passa alle nuove mysqli
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao, dimenticavo
per risparmiare codice puoi fare così
PHP:
<?php
//.....
while($row = mysql_fetch_array($result)) { 
	$t2=explode(',',$row['tag']);
	foreach($t2 as $t0){
		$tag2[]=$t0;
	}
}//fine del while
$tag = array_unique($tag2);
foreach($tag as $valore){
    echo "$valore<br>";
}
//.....
?>
o addirittura così
PHP:
<?php
//.....
while($row = mysql_fetch_array($result)) { 
	foreach(explode(',',$row['tag']) as $t0){
		$tag2[]=$t0;
	}
}//fine del while
foreach(array_unique($tag2) as $valore){
    echo "$valore<br>";
}
//.....
?>
 

Meco

Nuovo Utente
2 Mag 2016
3
0
0
grazie di nuovo per la spiegazione
P.s. sono subito andato a vedere php mysqli
saluti
Meco