| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Erfahrener Benutzer Registriert seit: 21.08.2011
Beiträge: 302
PHP-Kenntnisse: Anfänger ![]() | hehe. ja das problem ist nicht herauszufinden wie die ergebnisse bei 60 sind sondern der wert 60 variiert ja. der kann mal 70 mal 50 oder so sein, das steht nicht fest und anhand dessen möchte ich eine "angenehme" anzahl an horizontalen linien haben und nicht sagen wir 8 oder 9 linien. das wären bei 175px alle 21 px ne linie das sieht ja schlimm aus, zudem passt meine beschriftung dann nimmer so dass es gut aussieht. worum es da geht sieht man hier: http://visual-design.biz/spd/gd-test1.php dort habe ich aktuell hardcoded die horizontalen linien ( 0/5/10/15/20/25 ) drin und der neuste wert ist nichtmehr im bild. das ist der wert 51. laut meinem script ist die obergrenze meiner grafik nun 60 und die untergrenze gleichgeblieben bei 0 also horinzontale linien von ( 0/......../60) die anzahl dazwischen ist nun wichtig. denn ich will als achs-skalierung nur zahlen stehen haben, die durch 5 teilbar sind. hier wären das die werte 15/30/34 <- also nur 3 linien, die eingetragen würden. und genau um diese funktion geht es mir. der max-wert wurde bestimmt, erhöht auf $skalaMax. $skalaMin ist fest bei 0. die dazwischenliegen horizontalen linien sollen (inklusive min und max) zwischen 3 und 7 liegen. mehr linien würden das diagramm unübersichtlich machen.
__________________ irgendwann werde ich auch helfen können - vielleicht. |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() | Mach es doch so: - Du definierst eine feste Anzahl Linien die auf deiner Grafik "gut" aussehen, meinetwegen 5, weil sich 175/5 gut teilen lässt, das wäre dann alle 35 Pixel eine Linie - Dein Max Wert auf der Y-Achse variiert. Problem ist das die Teilung durch 5 immer ungerade Zahlen ergibt. Das kannst du lösen indem du deinen Max Wert immer auf einen vollen 5er Schritt aufstockst 73 => 75 61 => 65 54 => 55 etc... Das erreichst du so: Wenn Max Modulo 5 > 0 Dann Max = Max+(5-(Max%5)) Erläuterung: Max%5 gibt dir den Rest der Division aus, also genau soviel wie über dem aktuellem 5er Schritt liegt. Das heit 5 - den Devisionsrest ergibt das, was zum nächsten 5er Schritt fehlt, und das rechnest du auf den Max Wert drauf. - Gleiches gilt für deine Datenbankwerte. Die stockst du ebenfalls auf den nächsten 5er nach oben angegebener Formel auf. - Die Y Koordinate eines Punktes ergibt sich dann aus den Pixeln pro Punktwert (Bildhöhe durch Maxwert) mulipliziert mit dem Wert des Punktes Dann solltest du doch alles problemlos skalieren und zeichnen können.
__________________ "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst". |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 21.08.2011
Beiträge: 302
PHP-Kenntnisse: Anfänger ![]() | @Dark Guardian: ich verstehe nicht ganz warum ich meine Werte in der DB verändern soll? wenn heute 17 neue aufrufe gezählt wurden, warum die zahl dann auf 20 erhöhen? so macht meine grafik doch keinen sinn? @Arne: SO sieht mein code aus: PHP-Code: die schrittweite habe ich nun manuell auf 15 gesetzt. dort muss nun eine rechenoperation hin, die als ergebnis einen wert liefert, der: $skalaMax dividiert durch (3, 4, 5, 6 oder 7) ein ergebnis liefert, welches entweder ne 5 oder ne 0 am ende hat. und da kommt laut den seiten die ich gestern gelesen habe nochmal das modulo zum einsatz. doch mache ich da sowas hin wie $skalaMax%5 dann bekomm ich ne fehlermeldung, die mir die befehle "range() & implode()" als fehlerhaft ausgibt. EDIT mit 3-7 bekommt man eig immer nen guten wert. wobei hier erwähnt sein will, dass dividiert durch 3 nur eine linie IM diagramm darstellt. linie 1 = 0 linie, linie 2 = Schrittweite, linie 3 = $skalamax gleiches gilt für 4-7
__________________ irgendwann werde ich auch helfen können - vielleicht. Geändert von Sickone4 (04.01.2012 um 09:49 Uhr). |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() | <Ot>manmanman ... 7 Seiten und du hast dein Problem immer noch nicht klar und allgemeinverständlich beschrieben - wahrscheinlich hättest du es damit dann selbst ratz fatz gelöst ...</OT>
__________________ "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 21.08.2011
Beiträge: 302
PHP-Kenntnisse: Anfänger ![]() | <OT>hm. ich finde das eigentlich super, dass ich weiter in dem thema geblieben bin und nicht nur weil sich im thread das thema geändert hat nen neuen thread aufgemacht habe.... so können doch die die sich damit beschäftigt haben weiter damit beschäftigen und im forum sind nicht zig neue threads. oder ist das schlecht?
__________________ irgendwann werde ich auch helfen können - vielleicht. |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 21.08.2011
Beiträge: 302
PHP-Kenntnisse: Anfänger ![]() | ok ich geb mir mühe zu erklären was ich will: ![]() Auf der Grafik ist schän zu erkennen, dass es eine Grundlinie (unterer rahmen = 0) und eine max linie (oberer rahmen = 25) gibt. dazwischen die linien sind in 5er schritten. wenn nun z.b. an einem tag aber 51 leute meine seite besuchen, dann stimmt a) die skalierung nichtmehr b) ist der wert außerhalb meiner grafik: ![]() also möchte ich, dass anhand des max-wertes die skalierung neu berechnet wird, aber am rand immer ein wert steht der durch 5 teilbar ist. im beispiel mit dem wert 51, so wird durch PHP-Code: nun kann man rechnen: 60/3 = 20 <== bedeutet, dass ich eine skalierung von 20 habe, also 0,20,40,60 60/4 = 15 <== bedeutet, dass ich eine skalierung von 15 habe, also 0,15,30,45,60 60/5 = 12 <== wert hat keine 5 oder 0 am ende fällt also raus 60/6 = 10 <== skalierung 0,10,20,30,40,50,60 fällt auch raus, weil es zu viele linien sind. 60/7 = 8,..<== gebrochener Wert fällt auch raus. was bedeutet das: die skala kann die schrittweite 20 aufweisen 15 oder 10 (wobei 10 aufgrund der anzahl an linen rausfällt) mein gedanke ist also: teile die zahl $max durch die werte x,y,.... kommt ein ergebnis heraus, welches eine 0 oder 5 am ende hat, so prüfe, wieviele (count) ergebnisse geliefert werden, ist die anzahl an ergebnissen größer als 5, so berechne erneut. so lange, bis eine gescheite anzahl gefunden wurde. war das verständlich?
__________________ irgendwann werde ich auch helfen können - vielleicht. |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Select join mit kategorieausgabe Frage | Sickone4 | PHP Einsteiger | 31 | 25.11.2011 15:11 |
| msql select wenn bedingung / variable zutrifft | knuffiwuffi | Datenbanken | 7 | 24.11.2011 01:38 |
| Auf bestimmte Array Variable in SELECT anweisung zugreifen | h.humpol | Datenbanken | 2 | 21.08.2011 12:51 |
| MySQL-Problem: Select | SvenLittkowski | Datenbanken | 13 | 09.05.2011 13:51 |
| SELECT in SELECT oder elegantere Lösung möglich? | sunny | Datenbanken | 12 | 03.05.2011 16:32 |
| [Erledigt] COUNT und MAX in 1 SELECT | coola | Datenbanken | 2 | 07.12.2010 22:12 |
| [Erledigt] Intertabellarische Berechnungen, wie? | dave303 | Datenbanken | 13 | 05.03.2010 11:58 |
| Ausgabe erfolgt nicht | Extremefall | PHP Tipps 2009 | 17 | 17.12.2009 19:51 |
| [Erledigt] Kein Ergebnis bei SELECT (MySQL 4.1.9) | dr.e. | Datenbanken | 4 | 15.06.2008 19:54 |
| [Erledigt] Mysql Insert Select + Concat | Hu5eL | Datenbanken | 14 | 10.06.2008 10:39 |
| SELECT Frage | obi | Datenbanken | 7 | 20.09.2006 09:18 |
| [JavaScript] Event Handler in form select - Syntax? | winfo_cologne | HTML, Usability und Barrierefreiheit | 5 | 29.03.2006 16:47 |
| [Erledigt] frage zu select statement | Datenbanken | 4 | 21.12.2004 10:29 | |
| [Erledigt] 2 mal select 1 form | PHP-Fortgeschrittene | 1 | 01.09.2004 20:13 | |
| selektierter wert in select box anzeigen | PHP Tipps 2004 | 6 | 30.08.2004 13:49 | |