• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Script (array in sql) version ändern

webana

Mitglied
Hallo,

habe eine Domain Datenbank. In einer Tabelle habe ich eine TLD Statistik (TLD, C => Beispiel com, 1930576).

Jetzt möchte ich auf der Startseite eine Cloud aus TLD erstellen. Habe auch ein Script gefunden, allerdings kommen hier die Daten aus einem array.

http://www.bytemycode.com/snippets/snippet/415/

Ich würde das Script mit meinen Daten aus der mysql Datenbank füttern.

Gruß Alex
 
Werbung:
Hallo bdt600 (Nettes Avatar),

am besten wäre es ja komplett auf sql umzustellen, oder reicht da nur das im array ($tags)?

Beim letzteren, wie bekomme ich es in ein array? Ich bekomme immer mehrere arrays ausgegeben.

Alex
 
Werbung:
am besten wäre es ja komplett auf sql umzustellen, oder reicht da nur das im array ($tags)?
Das kannst nur du wissen. Wobei ich denke, dass eine Datenbank besser wäre.

Allerdings verstehe ich immer noch nicht, wo dein Problem ist. Lege die Tabelle an, speichere die Daten darin und lese die Daten dann wieder aus. Daher nochmal: wo ist dein Problem?
 
Das problem ist denke ich eher die Funktion, die kann nur mit eindimensionalen Arrays umgehen. Du wirst also nicht drum herumkommen die Funktion anzupassen oder das zu übergebene Array ins richtige Format zu bauen.

Also selbst Hand anlegen musst du so oder so.
 
Hallo,

habe jetzt die Cloud Funktion von meiner Seite http://filezilla-client.de/anleitung/ genommen, hatte da nur ein paar Sachen vergessen anzupassen, weshalb es letztens nicht funktionierte. Fiel mir gerade ein und funktioniert jetzt bestens ...

PHP:
function tldcloud($minimum) {

$fontmin = 1;
$fontmax = 20;

$min = mysql_result(mysql_query("SELECT c FROM domain_stats_tld2 WHERE c >= $minimum ORDER BY c ASC LIMIT 1"),0) or die(mysql_error());
$max = mysql_result(mysql_query("SELECT c FROM domain_stats_tld2 ORDER BY c DESC LIMIT 1"),0) or die(mysql_error());
$gap = $max - $min;
$step = ($fontmax - $fontmin)/$gap;

$output = '';

$result = mysql_query("SELECT tld, c FROM domain_stats_tld2 WHERE c >= $minimum ORDER BY tld ASC") or die(mysql_error());
while($daten = mysql_fetch_array($result)){
  $tld = $daten['tld'];
  $c = $daten['c'];

$output .= '<a style="font-size: '.round($fontmin + (($c - $min) * $step)).'em;" title="'.tausenderpunkt($c).' '.$tld.' Domains" href="#">'.$tld.'</a> '."\n";
}
  return $output;
}

Gruß Alex
 
Werbung:
kleiner tipp, benutz mysqli, mysql ist deprecated und wird in einer späteren PHP Version rausgenommen. Ich glaube bdt600 hat dafür so ein standard text ;)

Meiner Ansicht nach finde ich die 3 sql Aufrufe zu viel in der Funktion. Ich hätte die Funktion eher so umgeschrieben dass diese mit multidimensioale Arrays umgehen kann, so bräuchtest du außerhalb der funktion nur einen einzigen sql aufruf
 
kleiner tipp, benutz mysqli, mysql ist deprecated und wird in einer späteren PHP Version rausgenommen. Ich glaube bdt600 hat dafür so ein standard text ;)

Muss man da nur aus mysql mysqli machen? Oder gibts dann auch sachen die man umschreiben muss?

Meiner Ansicht nach finde ich die 3 sql Aufrufe zu viel in der Funktion. Ich hätte die Funktion eher so umgeschrieben dass diese mit multidimensioale Arrays umgehen kann, so bräuchtest du außerhalb der funktion nur einen einzigen sql aufruf

Stimmt, aus der einen kann ich ja den Minimal und Maximal Wert heraus lesen.

Danke
 
Muss man da nur aus mysql mysqli machen? Oder gibts dann auch sachen die man umschreiben muss?
Man könnte ja einfach mal in der Doku nachsehen und die verwendeten Funktionen vergleichen, oder?

Und das
PHP:
$min = mysql_result(mysql_query("SELECT c FROM domain_stats_tld2 WHERE c >= $minimum ORDER BY c ASC LIMIT 1"),0) or die(mysql_error());
ist auch Quatsch, denn du prüfst damit auf Fehler beim mysql_result und nicht beim mysql_query. Solche verschachtelten Funktionsaufrufe sollte man vermeiden.
 
Werbung:
Man könnte ja einfach mal in der Doku nachsehen und die verwendeten Funktionen vergleichen, oder?

Und das
PHP:
$min = mysql_result(mysql_query("SELECT c FROM domain_stats_tld2 WHERE c >= $minimum ORDER BY c ASC LIMIT 1"),0) or die(mysql_error());
ist auch Quatsch, denn du prüfst damit auf Fehler beim mysql_result und nicht beim mysql_query. Solche verschachtelten Funktionsaufrufe sollte man vermeiden.

Oh, ist noch von der COUNT geschichte ... Habs vergessen zu ändern, auch die 0 am ende ...

Schau mal morgen nach, muss jetzt erst mal zur Arbeit ...
 
Zurück
Oben