Tag cloud

  • Creatore Discussione Creatore Discussione Meco
  • Data di inizio Data di inizio

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:
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
 
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
 
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
 
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>";
}
//.....
?>
 
grazie di nuovo per la spiegazione
P.s. sono subito andato a vedere php mysqli
saluti
Meco
 

Discussioni simili