ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
602
602
EMPFEHLEN
-
Hallo alle zusammen!
Hab ne Frage, und zwar: Ich erstelle ein Diagramm ueber eine Funktion. An diese gebe ich die folgenden Arrays:
Jetzt meine Frage: Ich moechte nun nicht mehr die Sachen per Hand eingeben und das Diagramm automatisch auf dem neuesten Stand haben! Ich habe eine Datenbank mit einer Tabelle "endungen" : Feldname "end" und ich moechte nun, dass alle Eintraege in den Array kommen. Bsp: .de, .com, .net usw.PHP-Code:<?
include('phpchart.php');
$aGraphData = Array
(array('.de', 25, ''),
array('.com', 50, ''),
);
echo phpchart($aGraphData, 'H', 'Statistik aller Domainbewertungen', 'Anzahl der Domainbewertungen', '8pt', 400, 'px', 15, 'px');
?>
Anschliessend sollen die Eintraege in der Tabelle "abfrage" : Feldname "endung" gruppiert werden, damit man sieht wieviele Eintraege mit .de, .com, .net usw.
Wie kann man das dann in den folgenden Code integrieren:
PHP-Code:<?
include('phpchart.php');
$aGraphData = Array
(array('.de', ###Eintraege###, ''),
array('.com', ###Eintraege###, ''),
.........
);
echo phpchart($aGraphData, 'H', 'Statistik aller Domainbewertungen', 'Anzahl der Domainbewertungen', '8pt', 400, 'px', 15, 'px');
?>
-
Hi!
Ich sehe nicht so genau das Problem.
Du liest die Daten aus der Datenbank aus und gibtst die Werte in deine Funktion.
Das könnte z.B.
so aussehen:
Es handelt sich hier um ein Beispiel, ich kenne deine genaue DB-Struktur ja nicht. Außerdem bin ich hier mal von MySQL ausgegangen.PHP-Code:<?php
//...
$sql = "SELECT end FROM endungen"; // Alle Endungen auslesen
$resultEndungen = mysql_fetch_array($sql);
foreach($resultEndungen as $endung) {
$sql = "SELECT COUNT(*) AS count FROM abfrage WHERE endungen LIKE ".$endung["end"]; // Anzahl Datensätze pro Endung auslesen
$result = mysql_fetch_row($sql);
$aGraphData [] = array($endung["end"], $result[0], ''); // Das Chart array
}
include('phpchart.php');
echo phpchart($aGraphData, 'H', 'Statistik aller Domainbewertungen', 'Anzahl der Domainbewertungen', '8pt', 400, 'px', 15, 'px');
?>
Viele Grüße,
JackaBiologie ist das was lebt, Chemie das was kracht und Physik das, wo nichts funktioniert!
- - - - - - - - - - - - - - - -
Open Source JS-Framework für Business Web-Applications: ExtJS
-
Hmm komisch, der zeigt mir gar nichts an und es kommt auch keine Fehlermeldung
Habe ich irgendwas uebersehen?PHP-Code:<?
$dbname = "";
$dbhost = "";
$dbuser = "";
$dbpwd = "";
$db = @mysql_connect($dbhost, $dbuser, $dbpwd);
@mysql_select_db($dbname, $db) or die ("Keine Verbindung zur MySQL Datenbank");
$sql = "SELECT end FROM endungen"; // Alle Endungen auslesen
$resultEndungen = mysql_fetch_array($sql);
foreach($resultEndungen as $endung) {
$sql = "SELECT COUNT(*) AS count FROM abfrage WHERE endungen LIKE ".$endung["end"]; // Anzahl Datensätze pro Endung auslesen
$result = mysql_fetch_row($sql);
$aGraphData [] = array($endung["end"], $result[0], ''); // Das Chart array
}
include('phpchart.php');
echo phpchart($aGraphData, 'H', 'Statistik aller Domainbewertungen', 'Anzahl der Domainbewertungen', '8pt', 400, 'px', 15, 'px');
?>
EDIT: Hab mir mal $resultEndungen ausgeben lassen, aber da is nix drin
Also nochmal zum Verstehen:
In der Tabelle "endungen" sind alle endungen in der Spalte "end" vorhanden, die es gibt. Und diese solle nun alle einzeln in der Tabelle "abfrage" in der Spalte "endung" gezaehlt werden!
Was ist an dem oben geposteten Code noch falsch, dass mir nichts angezeigt wird?
Danke fuer eure Hilfe
-
15.05.08 02:57 #4
Eventuell ein Fehler in den Queries?
Nichtsdestotrotz lässt es sich wahrscheinlich effektiver lösen. Sofern ich die DB-Struktur richtig erfasst habe, ginge zB Folgendes:
Das Query nochmal etwas erklärt:PHP-Code:<?php
// Datenbankerbindung aufsetzen
$dbname = "";
$dbhost = "";
$dbuser = "";
$dbpwd = "";
if ( !$db = mysql_connect( $dbhost, $dbuser, $dbpwd ) ) {
die( "Datenbankverbindung nicht möglich." );
} else if ( !mysql_select_db( $dbname, $db ) {
die ( "Keine Verbindung zur MySQL Datenbank" );
}
// Query vorbereiten
$queryString = "
SELECT
`e`.`end` AS `tld`,
COUNT( * ) AS `abfragePerEndung`
FROM
`endungen` AS `e`
LEFT JOIN
`abfrage` AS `a` ON
`e`.`end` LIKE `a`.`endung`
GROUP BY
`e`.`end`
ORDER BY
NULL
;";
// Query an Datenbank absetzen und Ergebnis einholen
if ( !$result = mysql_query( $queryString, $db ) ) {
die( "Query schlug fehl" );
}
// Ergebnisse durchlaufen und an Datenarray anhängen
$aGraphData = array();
while ( $row = mysql_fetch_row( $result ) ) {
$aGraphData[] = array(
$row[ 0 ], // Endung
$row[ 1 ], // Anzahl
"" // ?
);
// evtl würde es auch $aGraphData[] = $row tun
}
// der Rest...
include "phpchart.php";
echo phpchart( $aGraphData, 'H', 'Statistik aller Domainbewertungen', 'Anzahl der Domainbewertungen', '8pt', 400, 'px', 15, 'px' );
Code sql:1 2 3 4 5 6 7 8 9 10 11 12 13
SELECT `e`.`end` AS `tld`, -- Endung COUNT( * ) AS `abfragePerEndung` -- Anzahl der Einträge aus "abfrage" mit entsprechender Endung FROM `endungen` AS `e` -- Hole alle Endungen aus "endungen" LEFT JOIN `abfrage` AS `a` ON -- Verknüpfe von links mit Einträgen aus "abfrage" `e`.`end` LIKE `a`.`endung` -- Für die gilt: `e`.`end` ist `a`.`endung` GROUP BY `e`.`end` -- Gruppiere nach Endung ORDER BY NULL ;
Zitat von Steve Wozniak
-
Hallo,
Mich interessiert der Inhalt der »phpchart.php«.
Könntet ihr vielleicht den Inhalt posten.
Ich finde diese Idee die hierhinter steckt gut
!
Ich programmiere gerade ein Forum und eine Bildergallerie, für ich diese Funktion gebrauchen könnte. Ich plante eine kleine Statistik über Dateitypen, Dateigrößen u.v.m.
-
Hier ist der Inhalt der phpchart.php! Hoffe es hilft dir!

So habs getestet!PHP-Code:<?php
function phpchart($paData, $psOrientation = 'H', $psTitle = '', $psAxisLabel = '', $psFontSize = '8pt',
$piMaxSize = 100, $psMaxSizeUnit = 'px', $piBarSize = 15, $psBarUnit = 'px',
$paColors = Array('#a0a0a0', '#707070')) {
$iColors = sizeof($paColors);
$sHTML = "
<table style='font-family: Arial; font-size: $psFontSize'><tr><tr><td colspan=2 align='center'><u><b>$psTitle</b></u></td></tr><td align='right'>
";
$iMax = 0;
for($iRow = 0; $iRow < sizeof($paData); $iRow++) {
if($paData[$iRow][1] > $iMax) $iMax = $paData[$iRow][1];
$sHTML .= "<div style ='height: $piBarSize$psBarUnit;'>".$paData[$iRow][0]."</div>";
}
$iScale = $iMax / $piMaxSize;
$sHTML .= "
</td><td>
<TABLE style='border-bottom: 1px solid black; border-left: 1px solid black;font-family: Arial; font-size: $psFontSize; '>
<tr><td>
";
for($iRow = 0; $iRow < sizeof($paData); $iRow++) {
$sColor = $paColors[$iRow%$iColors];
$iBarLength = $paData[$iRow][1] / $iScale;
$sHTML .= "
<div style='background-color: $sColor; text-align: right; color: white;
height: $piBarSize$psBarUnit;
width: $iBarLength$psMaxSizeUnit;'> ".
$paData[$iRow][1].$paData[$iRow][2]." </div>
";
}
$sHTML .= "
</td></tr>
</table></td></tr>
<tr><td></td><td>$psAxisLabel</td></tr>
</table>
";
return $sHTML;
}
?>
Aber er zeigt nichts an! Wie kann ich testen was falsch ist?



So hats jedenfalls vorher funktioniert, aber ohne Diagramm (war nur eine Auflistung!):
Ist das normal, dass wenn man sich:PHP-Code:<?php
db_connect($db);
$anzahl_frei=mysql_num_rows(mysql_query("SELECT id FROM abfrage WHERE frei=1", $db));
echo "<table border='0' align='left'>";
echo "<tr>
<td align='right'> <a href='freie_domains.php'>".$anzahl_frei."</a> Domainbewertungen</td>
<td align='left'>für freie bzw. gelöschte Domains</td>
</tr>";
$result = @mysql_query("SELECT count(*), endung from abfrage GROUP BY endung ORDER BY 'count(*)' DESC", $db);
while($row=mysql_fetch_array($result))
{
echo "<tr>
<td align='right'> <a href='suche.php?endung=".$row[endung]."'>".$row["count(*)"]."</a> Domainbewertungen</td>
<td align='left'>für die Endung .".$row[endung]."</td>
<tr>";
}
echo "</table>";
?>
ausgeben laesst nichts drin ist?PHP-Code:echo $aGraphData;
echo $queryString;
echo $result;
echo $row;
Hab die Datei mal auf nem anderen Server getestet, weil ich irgendwie keine Fehlermeldungen bei meinem VServer bekomme.. Keine Ahnung warum..
Da mekert er mir folgendes an: Parse error: syntax error, unexpected '{' in dia.php on line 10
PHP-Code:if ( !$db = mysql_connect( $dbhost, $dbuser, $dbpwd ) ) {
die( "Datenbankverbindung nicht möglich." );
} else if ( !mysql_select_db( $dbname, $db ) {
die ( "Keine Verbindung zur MySQL Datenbank" );
}
-
15.05.08 15:06 #7
Entschuldigung, mein Fehler. Korrektur:
Bezüglich der Ausgabe der Rohdaten solltest du var_dump() und print_r() bevorzugen, denn echo() gibt immer nur den String-Kontext aus.PHP-Code:if ( !$db = mysql_connect( $dbhost, $dbuser, $dbpwd ) ) {
die( "Datenbankverbindung nicht möglich." );
} else if ( !mysql_select_db( $dbname, $db ) ) {
die ( "Keine Verbindung zur MySQL Datenbank" );
}
Zitat von Steve Wozniak
-
Alles klar, jetzt kommt kein Error mehr, aber er zeigt auch nichts an!
An was kann das liegen? Hast du nen Tipp wie man testen kann an was es liegt?
Hab mir malausgeben lassen und da kommt:PHP-Code:print_r ($aGraphData);
Array ( [0] => Array ( [0] => de [1] => 1357 [2] => ) [1] => Array ( [0] => at [1] => 167 [2] => ) [2] => Array ( [0] => ch [1] usw.
Kann es sein das die Formatierung des Arraysnicht mit dem urspruenglichen uebereinstimmt?PHP-Code:$aGraphData = array();
while ( $row = mysql_fetch_row( $result ) ) {
$aGraphData[] = array(
$row[ 0 ],
$row[ 1 ],
""
);
}
Also so muesste die Formatierung sein!PHP-Code:$aGraphData = Array
(array('.de', 25, ''),
array('.com', 50, ''),
);
Muesste es nicht so in etwa aussehen? Leider funktioniert das nicht
PHP-Code:$aGraphData = Array
(
while ( $row = mysql_fetch_row( $result ) ) {
array('$row[0], $row[1], ''),
}
);
-
Alles klar, nun funktioniert es!
Dankeschoen an alle!
-
So nochmal anknüpfend an das Thema habe ich noch eine Frage;
Wie kann ich nun noch realisieren, dass nur die 10 höchsten in den String geschrieben werden?
Also beisher liest er ja alle Endungen aus und das soll so bleiben, nur soll er nach dem auslesen der Bewertungen die 10 am meisten bewerteten Domains in den String schreiben, damit nicht alle grafisch ausgewertet werden. Ist einfach zuviel!
Normalerweise müsste ich doch nur die 10 höchsten Werte in das Array spielen oder?PHP-Code:db_connect($db);
$queryString = "
SELECT
`e`.`end` AS `tld`,
COUNT( * ) AS `abfragePerEndung`
FROM
`endungen` AS `e`
LEFT JOIN
`abfrage` AS `a` ON
`e`.`end` LIKE `a`.`endung`
GROUP BY
`e`.`end`
ORDER BY
NULL
;";
if ( !$result = mysql_query( $queryString, $db ) ) {
die( "Query schlug fehl" );
}
$aGraphData = array();
while ( $row = mysql_fetch_row( $result ) ) {
$aGraphData[] = array(
$row[ 0 ],
$row[ 1 ],
""
);
}
include "files/phpchart.php";
echo phpchart( $aGraphData, 'H', '', 'Anzahl der Domainbewertungen ⇒', '8pt', 500, 'px', 15, 'px' );
?>
Aber wie realisiere ich das? Habe nichts dazu gefunden!
Ähnliche Themen
-
UML -Diagramm, E-R-Diagramm und relationales Modell
Von Number5 im Forum Coders TalkAntworten: 3Letzter Beitrag: 18.06.09, 14:55 -
Diagramm
Von headpainter im Forum .NET WPF & SilverlightAntworten: 5Letzter Beitrag: 04.08.08, 12:46 -
C# Diagramm
Von Borzel im Forum .NET Grafik und SoundAntworten: 2Letzter Beitrag: 26.10.06, 17:10 -
php Diagramm
Von M-GT im Forum PHPAntworten: 2Letzter Beitrag: 10.09.05, 15:51 -
Diagramm
Von jma im Forum JavaAntworten: 2Letzter Beitrag: 29.08.05, 10:14





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren