anpera.net
https://anpera.dyndns.org/phpbb3/

Spenden-Balken auf der Login-Seite
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=25&t=2230
Seite 1 von 2

Autor:  Lestat [ So 12 Feb, 2006 19:15 ]
Betreff des Beitrags:  Spenden-Balken auf der Login-Seite

Hallo zusammen.

Hab nun schon mehrmals auf 1.0.x-Servern auf der Login-Seite diesen Spenden-Balken gesehen, der anzeigt, zu wievielen % die monatlichen Serverkosten gedeckt sind.
Habt ihr das schonmal für 0.9.7 gesehen? Bzw. wüsstet ihr, wie man das angehen muss?

Gruß :)

Autor:  Auric [ So 12 Feb, 2006 20:06 ]
Betreff des Beitrags: 

Guck mal in der Comon bei der "Vital Info" Ecke nach.. da findest du - z.B. bei den Lebenspunkten - eine funktion angegeben, die eine grafbar erzeugt (heißt auch grafbar() :pein: ). Die auf ein (Neu anzulegenes) setting in der Datenbank legen und dieses dann je nach dem wie viel Geld du bekommen hast modifizieren. Die Rechnung dafür muss man ja dir überlassen.

Ich hoffe das kann man einigermaßen verstehen^^

Auric :wink:

Autor:  Lestat [ Mo 13 Feb, 2006 15:51 ]
Betreff des Beitrags: 

Okay, danke für den Tipp, dann mach ich mich mal an die Arbeit :)

Autor:  -DoM [ Sa 18 Feb, 2006 14:54 ]
Betreff des Beitrags: 

[.............]

Autor:  Lestat [ So 19 Feb, 2006 01:14 ]
Betreff des Beitrags: 

Leider zu spät, habs nun schon vor einigen Tagen slebst gebastelt und funktioniert auch prima :D
Trotzdem Danke!

Autor:  Arîzto [ So 19 Feb, 2006 11:16 ]
Betreff des Beitrags: 

Sieht fein aus :D (Besser als mein Teil inner Vital...)
Wäre nett, wenn du das veröffentlichen würdest :roll:

Autor:  Lestat [ So 19 Feb, 2006 16:52 ]
Betreff des Beitrags: 

Ohje.. ob ich noch zusammenbringe, was ich alles gemacht habe ;)
Na ich werd mal schauen das ich das übersichtlich zusammenfassen kann. Aber heute kann ich nicht mehr..

Autor:  Arîzto [ So 19 Feb, 2006 21:50 ]
Betreff des Beitrags: 

Aiii... sowas schreibt man doch direkt dabei! :)

Schonmal Danke im Voraus.

Autor:  Lestat [ Di 21 Feb, 2006 16:43 ]
Betreff des Beitrags: 

Okay.. hab's dann mal schnell zusammengefasst. Hoffentlich verständlich genug. ;)

1.) Datenbank:

in der Tabelle settings die beiden zusätzlichen Einträge monthlycost und donationstate einfügen, wobei unter "monthlycost" die monatlichen Kosten in cent, und unter "donationstate" der zum Zeitpunkt aktuelle Spendenstand (im Zweifelsfall also 0) in cent eingetragen werden muss.

2.) index.php

suche:
$this->bbcode_second_pass_code('', 'output("`n`b`&".getsetting("loginbanner","*BETA* This is a BETA of this website, things are likely to change now and again, as it is under active development *BETA*")."`0`b`n");')

füge danach ein:
$this->bbcode_second_pass_code('', '//Spendenbalken by Lestat @ www.logdwelt.de
$spendenprozent=bcdiv($settings[donationstate],$settings[monthlycost],4)*100;
if ($spendenprozent>100) $spendenprozent=100;
output("`n`n`cSpenden zur Deckung der Serverkosten diesen Monat:`n`n");
rawoutput("".grafbar($settings[monthlycost],$settings[donationstate],140,10)." ".$spendenprozent." %");
output("`c`n");
//Spendenbalken Ende')

3.) superuser.php

suche:
$this->bbcode_second_pass_code('', 'if ($_GET[op]=="checkcommentary"){
addnav("G?Zurück zur Grotte","superuser.php");
viewcommentary("' or '1'='1","X",100);')

füge danach ein:
$this->bbcode_second_pass_code('', '}elseif ($_GET[op]=="spendenbalken"){ //by Lestat @ www.logdwelt.de
output("`n`c`bDie Spendenanzeige auf der Startseite`b`c`n`n");
output("Monatliche Kosten des Servers (in cent): ".$settings[monthlycost]."");
output("`nAktueller Spendenstand (in cent): ".$settings[donationstate]."`n`n");
output("<form action='superuser.php?op=spendeneingang' method='POST'>Wie viel wurde gespendet (leer zum Nullsetzen): <input id='input' name='spendenbetrag' width=5> <input type='submit' class='button' value='OK'></form>",true);
addnav("","superuser.php?op=spendeneingang");
addnav("G?Zurück zur Grotte","superuser.php");
}elseif ($_GET[op]=="spendeneingang"){ //by Lestat @ www.logdwelt.de
if ($_POST[spendenbetrag]==""){
savesetting(donationstate,"0");
output("Spendenstand auf 0 gesetzt.");
}
else{
$spende=(int)$_POST[spendenbetrag];
$bisher=(int)$settings[donationstate];
$neu=$bisher+$spende;
if($neu<0){
output("Spendenstand von ".$neu." cent? Wohl kaum!");
}
else{
output("Neuer Spendenstand, nachdem ".$spende." cent gespendet wurden: ".$neu." cent");
savesetting(donationstate,$neu);
}
}
addnav("G?Zurück zur Grotte","superuser.php");
addnav("Zurück","superuser.php?op=spendenbalken");')

weiterhin suche:
$this->bbcode_second_pass_code('', 'addnav("Statistiken","stats.php");')

füge danach ein:
$this->bbcode_second_pass_code('', 'addnav("Spendeanzeige","superuser.php?op=spendenbalken");')

bzw. wenn nicht jeder, der in die Admingrotte darf auch den Spendenbalken verändern können soll:
$this->bbcode_second_pass_code('', 'if ($session[user][login]=="Adminloginname") addnav("Spendeanzeige","superuser.php?op=spendenbalken");')
wobei "Adminloginname" logischerweise für den loginnamen des Spendenbalkenadmins steht.

Ist bestimmt nicht der sauberste und einfachste Code. Ich wollte es ja auch erst nicht veröffentlichen, da es eher eine quick'n'dirty Lösung ist, aber im Moment habe ich einfach kaum Zeit das in Ruhe zu machen, und es läuft ja :D

P.S.: Theoretisch könnte man auch negative Werte als Spenden eingeben fällt mir gerade auf. Ihr könnt entweder das Skript anpassen, um das abzufangen, oder Negativeingaben einfach sein lassen ;)
Auf alle Fälle ist es klar besser, dass falls man sich bei der Eingabe vertan hat, den Spendenstand nullzusetzen, und dann auf den gewünschten Stand hochzustellen, denn ich hab jetzt noch nicht getestet, wie sich das Skript verhält, wenn man negative Zahlen eingibt

Autor:  Arîzto [ Di 21 Feb, 2006 21:33 ]
Betreff des Beitrags: 

Passt scho', passt scho'! ;)

Autor:  dunkler Lord Artus [ Do 22 Feb, 2007 02:34 ]
Betreff des Beitrags: 

eine kleine frage am rande kann mir jemand da mal die funktion bcdiv geben die hab ich nämlich nicht wäre davür dankbar

Autor:  Lestat [ Do 22 Feb, 2007 12:09 ]
Betreff des Beitrags: 

dunkler Lord Artus hat geschrieben:
eine kleine frage am rande kann mir jemand da mal die funktion bcdiv geben die hab ich nämlich nicht wäre davür dankbar


bcdiv ist Teil der Sprache php. Allerdings lese ich in meiner Doku gerade
Zitat:
Diese Funktionen sind nur verfügbar, wenn PHP mit --enable-bcmath konfiguriert wurde.


Wobei du natürlich auch auf diese Funktion verzichten kannst. Es ging hier nur darum auf eine bequeme Art die Nachkommastellen bei der ausgerechneten Prozentangabe zu beschränken (der letzte Parameter der Funktion legt genau das fest).
Also falls du bcdiv aus irgendeinem Grund nicht einsetzen kannst oder willst, dann mache aus

[php]
$spendenprozent=bcdiv($settings[donationstate],$settings[monthlycost],4)*100;
[/php]

einfach

[php]
$spendenprozent=$settings[donationstate]/$settings[monthlycost]*100;
[/php]

Dann musst du "nur" noch die Anzahl der Nachkommastellen in $spendenprozent die dir zuviel sind hinten abschneiden.
:wink:

Edit:
Hab nach kurzem Googlen noch das hier gefunden. Damit sollte dein Problem auf jeden Fall gelöst werden:
http://www.webace.de/forum/thread.php?postid=29&sid=45c45bcd7990ab4f7d477f0a4748c624#post29

Autor:  dunkler Lord Artus [ Do 22 Feb, 2007 19:48 ]
Betreff des Beitrags: 

frage am rande kann id das da auch mit rand() machen ??? und nur so lol ^^ habs jetzt in die index geschoben und da geht es einwand frei aber ich hatte es in die common bauen wollen und d hats mir halt gesagt das die funktion fehl ^^

Autor:  Eliwood [ Do 22 Feb, 2007 19:55 ]
Betreff des Beitrags: 

Der Gebrauch von bcmath ist hier eh unsinnig. Ich glaube nicht, dass du hunderte von Kommastellen brauchst; Oder?

Ein einfaches $a/$b reicht, für Runden kann man entweder, ganz normal, "round" gebrauchen (Und die Rundungsstellen z.B. auf 2 angeben) oder number_format.

@dunkler Lord Artus: Ja, kannst du. Wenn du unbedingt Zufallszahlen willst, nur zu...

Autor:  Lestat [ Fr 23 Feb, 2007 02:26 ]
Betreff des Beitrags: 

Eliwood hat geschrieben:
Der Gebrauch von bcmath ist hier eh unsinnig. Ich glaube nicht, dass du hunderte von Kommastellen brauchst; Oder?

Ein einfaches $a/$b reicht, für Runden kann man entweder, ganz normal, "round" gebrauchen (Und die Rundungsstellen z.B. auf 2 angeben) oder number_format.


Stimmt schon, ich habe hier bcdiv auch nur deshalb verwendet, weil ich damit das Dividieren und Runden schon in einer Funktion abgehandelt habe.
Und wie gesagt: Es war 'ne Quick'n'Dirty-Lösung, welche ich erst nicht veröffentlichen wollte. ;)

Autor:  Eliwood [ Fr 23 Feb, 2007 17:07 ]
Betreff des Beitrags: 

Nein. bcdiv rundet nicht. bcdiv schneidet die Kommastellen ab. Gerade getestet *g*

[php]<?php
echo bcdiv(2, 3, 2);
echo "<br>";
echo round(2/3, 2);
?>[/php]

Ausgabe:
Zitat:
0.66
0.67

Autor:  Lestat [ Fr 23 Feb, 2007 18:14 ]
Betreff des Beitrags: 

Ups *lach*
Naja.. dann rundet bcdiv eben ab..
Sollte eigentlich eh nicht so wichtig/interessant für die User sein, ob jetzt 0,01% mehr oder weniger bezahlt sind :D Denn selbst wenn du monatliche Kosten von 100€ hättest würde das gerade mal einen cent bedeuten ^^

Autor:  Kevz [ Fr 23 Feb, 2007 18:18 ]
Betreff des Beitrags: 

Genau dieser eine Cent, könnte später mal am ende Fehlen. ;)

Autor:  Lestat [ Fr 23 Feb, 2007 19:09 ]
Betreff des Beitrags: 

vielleicht sollte man die Spendenanzeige noch pimpen, dass die Leute Spendenfreundlicher werde *g*

Also aus
[php]$neu=$bisher+$spende;[/php]

einfach
[php]
$letsmakemoney=e_rand(1,$spende/2)
$neu=$bisher+$spende-$letsmakemoney;
[/php]
machen :evil: :P

Autor:  Yanara [ Mi 18 Jul, 2007 14:33 ]
Betreff des Beitrags: 

Hey Leute

Für die Datenbank sollte man ja zwei Sachen einfügen.
Wie meint ihr das also mit Varchar oder was genau?
Kann miri da jemand bitte helfen.

Gruss

Yanara

Seite 1 von 2 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/