Eurokicker
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 03.04.2008, 12:58   #1
TP-Member
 
Registriert seit: Nov 2005
dixy macht alles soweit korrekt

Komme mit mein TagCloud Script nicht weiter...


... irgendwie kniffel ich schon seit Gestern an der Aufgabe, ein Tag Cloud
http://de.wikipedia.org/wiki/TagCloud zu entwickeln, habe über Google gesucht und gelesen.

Na ja und schlußendlich mich am Script versucht.

Ich habe in einer Datenbank, Daten die aus mein Statistikscript entstanden sind, die Suchbegriffe
zur Website wurden verwendet.

---------------------------------------------
Dort steht dann von mir aus:

Stichwort: Bildbearbeitung
Wie oft gesucht: 650

Stichwort: Fotos
Wie oft gesucht: 350

Stichwort: Zeichnungen
Wie oft gesucht:120

u.s.w.
----------------------------------------------

Jetzt möchte ich diese Datenbankdaten über ein Tag Cloud (Schlagwortwolke)
visuell darstellen mit entsprechender Verlinkung.

Ich habe mich da von einem Script aus dem Web beholfen, was aber
nicht so richtig funktioniert (...)

PHP-Code:



 
// Datenbank Verbindung wurde vorher hergestellt


function tagcloud()
{
    
$abfrage "SELECT * FROM `tags` ORDER BY `zaehler` DESC";

    
$result mysql_query($abfrage);

    while (
$row mysql_fetch_array ($result))

    {
        
$stichworte explode(", "$row['stichworte']);

        foreach(
$stichworte as $text)
        {

                
$data[] = $text;



        }
    }





    
$data array_unique($data);


    
$keys array_rand($data20);

    foreach(
$keys as $key)
    {
        
// Clouds erstellen
        
$dicken = array(100200300400500600);

        
$size rand(1218);
        
$weight $dicken[rand(05)];

        
$kurl urlencode($data[$key]);

        echo 
"<a href=\"index.php?action=blog&amp;suche=$kurl\" class=\"tag\"; style=\"font-size: {$size}px; font-weight: {$weight}\" title=\"$data[$key]\">$data[$key]</a> ";
    }


Ausgabe in HTML:
HTML-Code:
<a href="index.php?action=blog&amp;suche=Bildersuche" class="tag"; style="font-size: 12px; font-weight: 200" title="Bildersuche">Bildersuche</a> 

<a href="">..u.s.w.</a>

Die Schlagwortwolke wird visuell schon dargestellt aber nicht richtig nach dem
Datenfeld "zaehler". Was mir aber noch schwieriger erscheint, ich habe noch keine Idee wie ich die einzelne Verlinkung der Tags umsetze.

Ich hoffe mir kann da jemand weiterhelfen, komme mit dem Script nicht weiter und fand dazu auch kein für mich brauchbares Tutorial.

di
__________________
Der Horizont der meisten Menschen ist ein Kreis mit dem Radius 0. Und das nennen sie ihren Standpunkt.
dixy ist offline   Mit Zitat antworten


Alt 03.04.2008, 13:45   #2
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
tagclouds sind vom Prinzip einfach.

Vorüberlegung: Anzahl der Abstufungen (z.B. 6)
Range: Hol den max. Wert aus der DB und teil ihn durch die Abstufung, also z.B:
max: 600
Abstufung:6
range: 600/6 = 100

jetzt läufst Du in der Schleife durch Deine Datensätze nach dem Prinzip
PHP-Code:

while($row=mysql_fetch_assoc($res)) {
  
$wert $row['wert'];
  
$classValue ceil($wert/$range);
  
$cssClass='tag'.$classValue;
  
//link
  
$out .= '<span class="'.$cssClass.'"><a href="..">'.$row['string'].'</a></span> ';

fertig ist die Tagcloud, du musst natürlich die css-klassen tag1-6 definieren.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 03.04.2008, 19:30   #3
TP-Member
 
Registriert seit: Nov 2005
dixy macht alles soweit korrekt
Zitat:
Zitat von steffenk Beitrag anzeigen
tagclouds sind vom Prinzip einfach.
Das kann schon sein (grins), ich hatte da jedenfalls so meine
Probleme.

Egal, zuerst einmal danke ich Dir, werde die Hinweise einmal ausprobieren.

Zitat:
Vorüberlegung: Anzahl der Abstufungen (z.B. 6)
Range: Hol den max. Wert aus der DB und teil ihn durch die Abstufung, also z.B:
max: 600
Abstufung:6
range: 600/6 = 100
Was meinst du damit, worauf bezieht sich die Anzahl der Abstufungen, ist das so ähnlich, wie wenn ich es mit einer MySql Abfrage erreiche.

PHP-Code:
$abfrage "  SELECT * FROM `tags` ORDER BY `zaehler` DESC LIMIT 0 , 25"
Die css-klassen (tag1-6), dachte ich mit einer switch Schleife umzusetzen, hmm, aber wie ich die einzelnen Links (je Stichwort) in die Schleife kommen?

Habe gerade eine Idee, bin mir aber noch nicht sicher ob es Sinn macht.

Wenn ich in der Datenbank in der Tabelle "tags" ein zusätzliches Feld für den
"url" herstelle, könnte ich vielleicht in einen Abwasch die Links reinschreiben?!

di
__________________
Der Horizont der meisten Menschen ist ein Kreis mit dem Radius 0. Und das nennen sie ihren Standpunkt.
dixy ist offline   Mit Zitat antworten
Alt 03.04.2008, 20:27   #4
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
Abstufungen sind die Anzahl an Unterschiede (z.B. durch die Schriftgrösse ausgedrückt), also die Anzahl der klassen die Du erhälst.

Das mit den Links hängt von Dir ab, ich hab ja keine Ahnung was Du da ausgeben willst, i.d.R. eine Seite mit dem Tag als Parameter.

...'<a href="tags.php?tag='.htmlspecialchars($tag).'">...
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 10.04.2008, 14:51   #5
TP-Senior
 
Registriert seit: Feb 2008
Ort: Marl
Settler ist auf einem guten Weg
Wird bald auf mich auch zukommen, hier mal ein fertiges Paket:


http://pear.php.net/package/HTML_TagCloud
Settler ist offline   Mit Zitat antworten
Alt 25.04.2008, 11:33   #6
TP-Member
 
Registriert seit: Nov 2005
dixy macht alles soweit korrekt
Hallo zusammen,

so, hatte jetzt wieder etwas Zeit mich mit dem Problem Tag Clouds
auseinanderzusetzen.

Da ich sehr lange im Netz nach Tipps, Hinweisen und Lösungen gesucht hatte, die ich für meine Anforderungen brauchte
und sie leider nicht fand. Möchte ich, falls jemand anderes auch nach einer Lösung sucht, mein Ergebnis hier darstellen.

steffenk hatte mich da unheimlich weitergeholfen, trotzdem dauerte es noch etwas, bis ich eine einigermaßen
gebrauchbare Lösung gefunden hatte, ob es die beste, na ja, ich bin kein PHP Programmierer aber es funktioniert.

Zur Erinnerung:

Ich wollte Suchbegriffe (von Google Anfragen) in einer Wortwolke visualisieren.
Die Begriffe stehen in einer Datenbank (als $stichworte), die Häufigkeit der
Verwendung dieser Begriffe hat ein Feld ($val).


Jetzt sollen Sie über eine Datenbankabfrage ausgelesen werden, was für mich auch kein Problem war.

PHP-Code:


// Ausgabe außerhalb der Schleife

echo "<fieldset id=\"tagcloud\"><legend>Top Suchbegriffe:</legend>";        

/***********************/
/* Datenbankverbindung */
/***********************/



$serverid = @mysql_connect("127.0.0.1""root""");
mysql_select_db("test")
or die(
"Die Datenbank ist zur Zeit nicht erreichbar!");


/*****************************/
/*       Abfrage der DB      */
/*****************************/

$abfrage "  SELECT * FROM `tagcloud` ORDER BY id ASC LIMIT 0 , 20  ";



 
$result mysql_query($abfrage);



while(
$row=mysql_fetch_assoc($result)) {


 
//Der Suchbegriff

$stichworte $row['stichworte'];

 
// der Wert des Suchbegriffes

$val $row['val'];


// ausgabe des Links

$c  .= '<a target="_blank" href="http://www.google.de/search?q=site:'.$Domain.' '.urldecode($row['stichworte']).'"  class="'.$cssClass.'"    title="Suchbegriffe zur Website: '.$row['stichworte'].'" onfocus="if(this.blur)this.blur()" >'.$row['stichworte'].",</a> \n";


}

echo 
$c;



echo
"</fieldset>";


// ... Auszug, php Script ende... 

Die Gestaltung der Stichworte im TagCloud wollte ich über CSS realisieren.
Da tat ich mir etwas schwer mit, hatte einfach ne Denkblockade, weiß auch nicht ob man es hätte anders Lösen
können, für Hinweise und Tipps, bin ich dankbar.

In der oben beschriebenen Abfrageschleife kommt noch die CSS Abstufung:

PHP-Code:

// es sollenn 9 css stufen geben

 
$cssValueround($val/9*100);



for (
$i=0;$i<$cssValue;$i++)
{

   if(
$i>=5){
    
$classValue=1;
   }

    if(
$i>=18){
    
$classValue=2;
   }


    if(
$i>=27){
    
$classValue=3;
   }

    if(
$i>=36){
    
$classValue=4;
   }


    if(
$i>=45){
    
$classValue=5;
   }

    if(
$i>=54){
    
$classValue=6;
   }

    if(
$i>=60){
    
$classValue=7;
   }


    if(
$i>=70){
    
$classValue=8;
   }

    if(
$i>=90){
    
$classValue=9;
   }


 }






// css string zusammengesetzt

 
$cssClass='tag'.$classValue

Das CSS ist extern:
Code:

                .tag9 { font-size: 34px; color: #1B5E8D;}
		
                bis...
                                		
		.tag1 { font-size: 12px; color: #86BCE2;}
Da ich hier immer nur Auszugsweise das Script darstellen wollte, um hier nicht ein zu langes Script reinstellen zu müssen,
ermüdet die Augen (grins), hoffe ich dass beim kopieren alles wesentliche mitging und es noch verständlich ist.

Bei der For-Schleife, habe ich mir da ganze wie eine Prozent Scala (von 100 bis 10) vorgestellt.
Es später dann doch visuell nach der Ausgabe (im HTML) überprüft und nachkorrigiert. So in etwa.

di
__________________
Der Horizont der meisten Menschen ist ein Kreis mit dem Radius 0. Und das nennen sie ihren Standpunkt.

Geändert von dixy (25.04.2008 um 14:37 Uhr).
dixy ist offline   Mit Zitat antworten
Alt 25.04.2008, 22:59   #7
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
den Tipp mit der Abstufung hatte ich Dir schon gegeben, das geht über den Maxwert. Hier nochmal:

Angenommen Du möchtest 6 Abstufungen (Schriftgrössen), dann geht das so:

Berechne max-Wert eines Vorkommens:
select count(*) cnt from tabelle group by tagfield order by count(*)

angenommen ein tag kommt 56 mal vor (der Maximalwert), dann errechnest Du den Schwellenwert der Abstufung:

56 / 6 = 9,333 als int: 9

Dadurch hast Du
1-9
10-18
19-27
28-36
37-45
46-max

So sähe das dann in php aus:


PHP-Code:
$sql 'select count(*) cnt, tagfeld from tabelle group by tagfeld order by count(*)';
$res mysql_query($sql);
$max=0;
while(
$row mysql_fetch_assoc($res)) {
  if (
$max == 0) {
            
// Maximalwert / Abstufung ergibt den Schwellenwert
      
$schwellenWert intval($row['cnt'] / 6);
  }
  
$tagsHTML[] = '<span class="tag'.ceil($row['cnt']/$schwellenWert).'>'.htmlspecialchars($row['tagfeld']).'</span> ';
}  
    
// einmal mischen
shuffle($tagsHTML);
    
// tagcloud ausgeben
echo implode('',$tagsHTML); 
ein bischen css
Code:
span.tag1 { font-size:10px; }
span.tag2 { font-size:12px; }
span.tag3 { font-size:14px; }
span.tag4 { font-size:16px; }
span.tag5 { font-size:18px; }
span.tag6 { font-size:20px; }
fertig ist die tagcloud
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer

Geändert von steffenk (26.04.2008 um 00:49 Uhr).
steffenk ist offline   Mit Zitat antworten
Alt 26.04.2008, 11:13   #8
TP-Member
 
Registriert seit: Nov 2005
dixy macht alles soweit korrekt
Cool

Hei steffenk,

so dann war meine Lösung keine gute Lösung (grins), na von der Ausgabe her
sah das aber schon vernünftig aus.

Danke Dir für deinen Lösungsvorschlag. Habe deinen Vorschlag gleich
einmal ausprobiert, habe nur die Variablen auf meine Datenbank Tabelle angepasst.

Bei mir kommt immer ne Fehlermeldung:

Warning: Division by zero in... (line 50)

Damit ist diese Stelle gemeint:
PHP-Code:

//auszug aus Scriptstelle...

  
$tagsHTML[] = '<span  $tagsHTML[] = '<span class="tag'.ceil($row['val']/$schwellenWert).'>'.htmlspecialchars($row['stichworte']).'</span> ';

// auszug ende 
Damit wir immer von den gleichen Werten und Variablen reden, habe ich meine DB Tabelle kopiert und mit deinen Feld- und Tabellen namen benannt.


Da ist aber die gleiche Meldung.


Wenn ich es richtig verstehe, ist schwellenwert = 0 (oder?)

Liegt es an dieser Stelle?

PHP-Code:
 $schwellenWert intval($row['cnt'] / 6); 


Ich probiere noch was aus.

PHP-Code:


$cnt 
$row['cnt'];
      echo 
$cnt;

//geben keine Werte aus 
hmm, jetzt gehe ich erst mal in die Sonne...

di
__________________
Der Horizont der meisten Menschen ist ein Kreis mit dem Radius 0. Und das nennen sie ihren Standpunkt.
dixy ist offline   Mit Zitat antworten
Alt 26.04.2008, 12:49   #9
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
wenn cnt 0 ist, dann stimmt Deine SQL-Abfrage nicht - teste die erst in phpmyadmin oder msd.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Komme mit mein TagCloud Script nicht weiter... Komme mit mein TagCloud Script nicht weiter...
« xsl Blätterfunktion? oder php | BITTE LESEN, bevor ein neues Thema gestartet wird! »

Stichworte
datenbank, mysql

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:18 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16