[php] Tag-Cloud Script

Du darfst pro Feld (interessen1, interessen2, ...) nur ein Wort auslesen. Oder du speicherst alle Wörter in einem Feld und trennst ihn durch ein Komma. Dann musst du aber auch das Script ändern. Bei mir funktionierts. Siehe: www.deutschland-webcam.de/test.php

MFG
Florian

 
Normalerweise müsste es mit folgendem Code funktionieren:
CODE $abfrage = "SELECT tag1, tag2, tag3 FROM tabelle";
$result = mysql_query($abfrage);
while ($row = mysql_fetch_array ($result))
{
$data[] = $row['tag1']."\n".$row['tag2']."\n".$row['tag3'];
}

$data = implode('',$data);

// Woerter splitten
$words = preg_split("/\n/", $data);
$acv = array_count_values( $words );

// Nicht erwuenschte Woerter loeschen
$bannedwords = array('');
$i = 0;
foreach($acv as $k=>$v) {
if (!array_search(strtolower($k),$bannedwords) and eregi("[a-zA-Z]",$k) and $i<=40 and strlen($k)>2) {
if (isset($new_acv[strtolower($k)] ))
$new_acv[strtolower($k)] += $v;
else
$new_acv[strtolower($k)] = $v;
$i++;
}
}

// Alphabetisch sortieren
ksort( $new_acv );

// Clouds erstellen
foreach( $new_acv as $k=>$v) {
$size = $v*1;
$weight = $v*4;

if ($size > 4) $size = 4;
if ($weight > 50) $weight = 50;

$kurl = urlencode("$k");
echo "<a href=\"suche.php?q=$kurl\" style=\"font-size: {$size}em; font-weight: {$weight}\">$k</a>  \n";
}


Du musst natürlich noch den Tabellennamen ändern und eine Verbindung mit Mysql herstellen.

MFG
Florian
 
yep jetzt geht's, vielen dank..
smile.gif
 
QUOTE (pangu @ Sa 27.1.2007, 3:39) yep jetzt geht's, vielen dank..
smile.gif


Kann man eine Demo auch sehen (URL) ?

MFG
Florian
 
QUOTE (Florian @ Sa 27.1.2007, 23:21) Kann man eine Demo auch sehen (URL) ?

MFG
Florian

bisher leider noch nicht, weil das noch nicht online ist, dauert noch etwas ..
(programmiere/teste alles auf lokalen XAMPPserver)

mfg
martin
 
wie kann man das script so erweitern, dass z.b. nur die häufigsten 100 tags ausgelesen werden:
gibt es dafür irgendeine mysqlfunktion um gleich dort performance zu sparen?
 
QUOTE (pangu @ Mi 14.2.2007, 19:40) wie kann man das script so erweitern, dass z.b. nur die häufigsten 100 tags ausgelesen werden:
gibt es dafür irgendeine mysqlfunktion um gleich dort performance zu sparen?

Das Fettgedruckte musst du ändern.


CODE $abfrage = "SELECT tag1, tag2, tag3 FROM tabelle";
$result = mysql_query($abfrage);
while ($row = mysql_fetch_array ($result))
{
$data[] = $row['tag1']."\n".$row['tag2']."\n".$row['tag3'];
}

$data = implode('',$data);

// Woerter splitten
$words = preg_split("/\n/", $data);
$acv = array_count_values( $words );

// Nicht erwuenschte Woerter loeschen
$bannedwords = array('');
$i = 0;
foreach($acv as $k=>$v) {
if (!array_search(strtolower($k),$bannedwords) and eregi("[a-zA-Z]",$k) and $i<=[B]40[/B] and strlen($k)>2) {
if (isset($new_acv[strtolower($k)] ))
$new_acv[strtolower($k)] += $v;
else
$new_acv[strtolower($k)] = $v;
$i++;
}
}

// Alphabetisch sortieren
ksort( $new_acv );

// Clouds erstellen
foreach( $new_acv as $k=>$v) {
$size = $v*1;
$weight = $v*4;

if ($size > 4) $size = 4;
if ($weight > 50) $weight = 50;

$kurl = urlencode("$k");
echo "<a href=\"suche.php?q=$kurl\" style=\"font-size: {$size}em; font-weight: {$weight}\">$k</a>  \n";
}


Über Mysql kannst du es nicht machen. Da du alle Tags auslesen musst und das Script die häufigsten raus sucht.

MFG
Florian
 
ok, thx

..aber dauert das dann (bei richtig großen datenbanken) dann nicht ewig zum auslesen?
 
QUOTE (pangu @ Mi 14.2.2007, 20:27) ok, thx

..aber dauert das dann (bei richtig großen datenbanken) dann nicht ewig zum auslesen?

Du kannst es ja in einem txt-file zwischenspeichern (Cache).

MFG
Florian
 
ok, aber dann müsste ich es per cronjob alle x-stunden/tage auslesen lassen. hm, praktischer / schöner wäre natürlich eine lösung in echtzeit, werd mich mal durchgoogeln..
weiß jmd. wie es die großen portale machen?
 
Wie sieht dann die Seite suche.php bei euch aus! Die Wolke geht, nur kann ich meine suchseite nicht an die Wolke anpassen!
 
Wäre es nicht einfacher Wordpress zu nutzen und das entsprechende Plugin zu installieren?
Dann hast das ganze Theater nicht! Ist doch viel einfacher!
 
Hallo Leute, ich bin neu hier und nicht so der Programmierer, ich habe einen Onlineshop und möchte gern dieses Script einbauen. Vielleicht könnte mir einer nur mal kurz erklären wie ich es einbauen muss.
Ich wäre Euch sehr dankbar.
Gruss an Alle.
 
Zurück
Oben