Mathe mit PHP was ist möglich? :D
- Christian_N
- Beiträge: 1787
- Registriert: Sa 19.Feb, 2005 21:48
- Wohnort: Frankfurt am Main
- Kontaktdaten:
Mathe mit PHP was ist möglich? :D
Hallo,
also mich interessiert mal was so alles mit PHP möglich ist, ob mein vorhaben PHP unterstützt und somit uns Menschen die Mathearbeit (Kopfrechnen, falls man so faul ist *ggg*) abnimmt
Also wie man 2 Beiträge jetzt addiert hab ich durch des andere thema erfuhren und mit str_replace() sogar das man nach wie vor komma im ACP eintragen kann bei der Zahl da er bei die Berechnung des komma zu eine Punkt wandelt dann, so das aus 1,99 halt 1.99 wird bei der brechnug aber bei der ausgabe er weiterhin des komma anzeigt.
Jedenfalls müsste man den Betrag für des restliches Jahr (2006) berechnen.
Diese berechne ich momentan so 0,45 EUR. (Monatpreis) geteilt durch 30Tage = 0,015 (Tagespreis)
Wenn jetzt heute der 25.11.2006 ist sind es noch 37Tage (Heute und den 31.12. mitgezählt) bis ende 2006. Also tun ich berechnen 0,015 x 37 = 0,555 EUR. - da aber es kein halber cent gibt tun ich es aufrunden auf 0,56 EUR.
Nur ob PHP auch aufrundet kann weiss ich jetzt noch nicht.
Jedenfalls hab ich mir überlegt, ob man es so machen kann wenn sich ein Benutzer anmeldet und auf den Button "Absenden" klickt anfängt zu rechnen. 31.12.date(Y) minus anmeldungsdatum glaube ist $userdata['user_regdate'] bei phpBB - das er dann dieses Erbenis sich merkt also die Zahl was in meinem Beispiel mit dem Heutige Tag 37 war und dann 37 x 0,02 rechnet und diese Ergebnis2 dann in die DB noch zusätzlich in die Tabelle user_sales speichert was 0,74 wäre.
Geht das oder ist das für PHP jetzt etwas zu schwerig?
also mich interessiert mal was so alles mit PHP möglich ist, ob mein vorhaben PHP unterstützt und somit uns Menschen die Mathearbeit (Kopfrechnen, falls man so faul ist *ggg*) abnimmt
Also wie man 2 Beiträge jetzt addiert hab ich durch des andere thema erfuhren und mit str_replace() sogar das man nach wie vor komma im ACP eintragen kann bei der Zahl da er bei die Berechnung des komma zu eine Punkt wandelt dann, so das aus 1,99 halt 1.99 wird bei der brechnug aber bei der ausgabe er weiterhin des komma anzeigt.
Jedenfalls müsste man den Betrag für des restliches Jahr (2006) berechnen.
Diese berechne ich momentan so 0,45 EUR. (Monatpreis) geteilt durch 30Tage = 0,015 (Tagespreis)
Wenn jetzt heute der 25.11.2006 ist sind es noch 37Tage (Heute und den 31.12. mitgezählt) bis ende 2006. Also tun ich berechnen 0,015 x 37 = 0,555 EUR. - da aber es kein halber cent gibt tun ich es aufrunden auf 0,56 EUR.
Nur ob PHP auch aufrundet kann weiss ich jetzt noch nicht.
Jedenfalls hab ich mir überlegt, ob man es so machen kann wenn sich ein Benutzer anmeldet und auf den Button "Absenden" klickt anfängt zu rechnen. 31.12.date(Y) minus anmeldungsdatum glaube ist $userdata['user_regdate'] bei phpBB - das er dann dieses Erbenis sich merkt also die Zahl was in meinem Beispiel mit dem Heutige Tag 37 war und dann 37 x 0,02 rechnet und diese Ergebnis2 dann in die DB noch zusätzlich in die Tabelle user_sales speichert was 0,74 wäre.
Geht das oder ist das für PHP jetzt etwas zu schwerig?
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Ja das geht.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
Um mit PHP zu runden, schau dir mal die folgenden Links an:
Site: www.mx-forums.de - New!
phpBB MODs: Click Here
phpBB MODs: Click Here
- Christian_N
- Beiträge: 1787
- Registriert: Sa 19.Feb, 2005 21:48
- Wohnort: Frankfurt am Main
- Kontaktdaten:
Und wie kann man das genau jetzt machen, muss das in der usercp_register.php dann rein?
So das könnte man ja Hardcodet machen 31.12. nur des Jahr müsste mit date(Y) sein damit er immer des richtige jahr hat 31.12. gibt es ja jedes jahr. so das er immer also von dem Datum dann des Anmeldungdatum abzieht und als Ergebis die Tage bis dorthin liefert.
Und dann kann ja man den Tagessatz 0,015 weieder hardcodet machen und dies x des Ergebnis nehmen so das Ergebnis2 raus kommt und Ergebnis2 dann ggf. aufgerundet wird.
So das Ergebnis2 (ggf. aufgerundet) nach Absenden der Anmeldung in der Tabelle der DB user_sales gespeichert wird.
So gut bin ich in PHP noch nicht und weiss noch nicht wo ich genau suchen muss ggf. bei Google und Co nach welchen begriffen.
So das ich erstmal beispiele habe um ggf. dann die variabel an user_sales etc. anzupassen.
Denn das Problem liegt schon bei mir wie die man es machen kann das es überhaupt er die restliche Tage bis ende 2006 rechnet?
EDIT: Hab ein Countdown gefunden vllt. kann man aus diesen script schonmal es machen damit die restliche Tagen berechnet werden bis ende des Jahres.
Und dann dementsprechend erweitern damit er den Tagessatz mal nimmt und des ergebnis in die DB speichert. Des Script sah so aus:
So das könnte man ja Hardcodet machen 31.12. nur des Jahr müsste mit date(Y) sein damit er immer des richtige jahr hat 31.12. gibt es ja jedes jahr. so das er immer also von dem Datum dann des Anmeldungdatum abzieht und als Ergebis die Tage bis dorthin liefert.
Und dann kann ja man den Tagessatz 0,015 weieder hardcodet machen und dies x des Ergebnis nehmen so das Ergebnis2 raus kommt und Ergebnis2 dann ggf. aufgerundet wird.
So das Ergebnis2 (ggf. aufgerundet) nach Absenden der Anmeldung in der Tabelle der DB user_sales gespeichert wird.
So gut bin ich in PHP noch nicht und weiss noch nicht wo ich genau suchen muss ggf. bei Google und Co nach welchen begriffen.
So das ich erstmal beispiele habe um ggf. dann die variabel an user_sales etc. anzupassen.
Denn das Problem liegt schon bei mir wie die man es machen kann das es überhaupt er die restliche Tage bis ende 2006 rechnet?
EDIT: Hab ein Countdown gefunden vllt. kann man aus diesen script schonmal es machen damit die restliche Tagen berechnet werden bis ende des Jahres.
Und dann dementsprechend erweitern damit er den Tagessatz mal nimmt und des ergebnis in die DB speichert. Des Script sah so aus:
Code: Alles auswählen
<?
// Silvester countdown
// stichtag 1.1.2007 als Unixtime erzeugen
$newDate = mktime(0,0,0, 1, 1, 2007);
// aktuelle Zeit im Unixformat erzeugen
$actDate = time();
// Differenz berechnen (in Sekunden)
$diffDate = ($newDate-$actDate);
// Anzahl Tage = Sekunden /24/60/60
// floor() liefert nur den Anteil vor dem Komma
$days = floor($diffDate / 24 / 60 / 60 );
// den verbleibenden Rest berechnen = Stunden
$diffDate = $diffDate - ($days*24*60*60);
// den Stundenanteil herausrechnen
$hours = floor($diffDate / 60 / 60);
$diffDate = ($diffDate - ($hours*60*60));
// den Minutenanteil
$minutes = floor($diffDate/60);
$diffDate = $diffDate - ($minutes*60);
// die verbleibenden Sekunden
$seconds = floor($diffDate);
// und das ganze dann Anzeigen:
echo "Noch: $days Tage, $hours Stunden, $minutes Minuten und $seconds Sekunden<br>";
?>
Zuletzt geändert von Christian_N am Sa 25.Nov, 2006 11:41, insgesamt 1-mal geändert.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Warum willst Du denn das Ergebnis in der Datenbank speichern?
Das ändert sich doch sekündlich...
Oder hab ich jetzt was verpasst?
Das ändert sich doch sekündlich...
Oder hab ich jetzt was verpasst?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- Christian_N
- Beiträge: 1787
- Registriert: Sa 19.Feb, 2005 21:48
- Wohnort: Frankfurt am Main
- Kontaktdaten:
Jep glaub hast was verpasst den warum sollte sich der Ändert. Ich will doch das er die Tage also nur die Tage berechnet bei der Anmeldung und diese Tagen was es noch sind bis ende 2006 also ab heute 37Tage sollen dann mit dem Tagessatz von 0,015 EUR. genommen werden was ein Betrag wie im erste Post erwähnt von 0,555 diese muss dann allerdings auf 0,56 aufgerundet werden und dieser Preis 0,56 soll in der DB user_sales gespeichert werden.
Da dieser bei dem Mitglied ja dann bleibt selbst am 30.11. soll 0,56 bleiben da ja des Mitglied sich am 25.11 angemeldet hatte.
Da dieser bei dem Mitglied ja dann bleibt selbst am 30.11. soll 0,56 bleiben da ja des Mitglied sich am 25.11 angemeldet hatte.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Axo, die von der Anmeldung zum Jahresende verbleindenden Tage mal X/Tag.
Wenn man mal fragen darf: Welchen Sinn soll das überhaupt ergeben?
Bekämen ja so User, die sich am 1.1. eines Jahres anmelden deutlich mehr gutgeschrieben, als User von 31.12.
Soweit, naja, verstanden, aber das Folgejahr???
Errechenbar ist das allerdings sehr einfach, wie auch in Deinem Snippet genannt (wenngleich hier etwas kompliziert dargestellt).
Und speichern in der Datenbank kann man das bei der Anmeldung auch gleich.
Wäre eben noch die Frage, ob der Tagessatz immer fest steht und was eben mit "Folgejahren" passiert.
Wenn Du diese nicht mit einbeziehst, würden sich User zu einem späteren Zeitpunkt im Jahr wohl weniger gerne anmelden
Wenn man mal fragen darf: Welchen Sinn soll das überhaupt ergeben?
Bekämen ja so User, die sich am 1.1. eines Jahres anmelden deutlich mehr gutgeschrieben, als User von 31.12.
Soweit, naja, verstanden, aber das Folgejahr???
Errechenbar ist das allerdings sehr einfach, wie auch in Deinem Snippet genannt (wenngleich hier etwas kompliziert dargestellt).
Und speichern in der Datenbank kann man das bei der Anmeldung auch gleich.
Wäre eben noch die Frage, ob der Tagessatz immer fest steht und was eben mit "Folgejahren" passiert.
Wenn Du diese nicht mit einbeziehst, würden sich User zu einem späteren Zeitpunkt im Jahr wohl weniger gerne anmelden
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- Christian_N
- Beiträge: 1787
- Registriert: Sa 19.Feb, 2005 21:48
- Wohnort: Frankfurt am Main
- Kontaktdaten:
Naja im der Tagessatz ist immer 0,015 x 365 (was ein Jahr hat ausser Schaltjahr da ist es ein Tag mehr) sind es 5,48 EUR. da der Jahr aber 5,00 EUR. ist könnte man am anfang eines Jahres 0,00 EUR. er eintägt in die DB, so das als vom 1.1. bis 31.1. er 0,00 EUR. macht das er vllt. erst ab 334 rechnet also ab 1.2. den dann wäre es 5,01 EUR. somit schon den Jahrespreis.
P.S. da ein Monat (0,45) noch Gratis sei müsste er im Endergebnis die 0,45 noch abziehn. spricht einer Meldet sich am 1.1. an so sollte die Rechnung wie ich des gerade selbst mache mit Kopfarbeit wie folgt aussehen.
5,00 EUR. Jahrespreis für nächstes Jahr (2008)
+ 0,00 EUR. Jahrespreis für dieses Jahr (2007)
- 0,45 EUR. Gutschrift wegen des Gratis Monats
Gesamtbetrag 4,55 EUR.
Sollte sich jemand am 1.2. anmelden wo also er anfängt zu zählen sollte es wie folgt sein:
5,00 EUR. Jahrespreis für nächstes Jahr (2008)
+ 5,01 EUR. Jahrespreis für dieses Jahr (2007)
- 0,45 EUR. Gutschrift wegen des Gratis Monats
Gesamtbetrag 9,56 EUR.
Die Accounts werden dann auch bis 31.12.2008 freigeschaltet.
Momentan wenn ich im ACP bei der Benutzer Einstellung den Betrag eintrage welcher dann in der user_sales gespeichert wird, zeigt es in der E-Mail auch so aufgelistet dann auf nachdem der Account aktiviert wurde in die Mail welcher der Benutzer bekommt dann.
Allerdings muss man vor die freischaltung erst ins ACP und es ausrechnen und Eintragen und dann wieder in die Mail um zu aktivieren, da wenn dort nicht eingetragen ist man es vergisst dann nur aktiviert sendet er die Mail und schreibt 0 EUR. weil ja nichts eingetragen wurde.
Naja etwas kompliziert das ganze und ob man mit PHP es wirklich so erreichen kann, wäre es praktisch, da meine Freundin sich kaum traut welche freizuschalten da sie kein Fehler machen will bei dem Rechnenkram und ich ja Zeitlich eingeschränkt bin, so hatte jetzt ein Mitglied über 3tage auf Freischaltung gewartet, was nicht so gut ist.
Das Benutzer die sich Anfangs eines Jahres Anmelden mehr Zahlen als die am Ende ist ja klar da der Jahrespreis nur mal 5 EUR. ist dennoch ist die freischaltung (gültigkeit) gleich jem. also der Anfang sich anmeldet und mehr Zahlt hat bis ende 2008 den Account und jemand der sich später Ende anmeldet auch bis ende 2008 also weniger davon.
Falls das Mitglied bis 30.12.2008 dann die 5,00 EUR. nicht zahlt weils ggf. kein Mitglied mehr bleibe möchte wirds am 31.12.2008 vom autom. deaktiviert. Zahlt es die für ein weiteres Jahr wird im Benutzer Einstellung im ACP 2009 eingetragen so das es bis 31.12.2009 freigeschaltet ist dann.
Hoffe das das ganze jetzt verständlicher war.
Wobei des mit dem ACP auch momentan geht für was gibts Taschenrechner um die Tage mit dem Tagessatz zu berechnen, ist halt nur kompliziert die Tage auszurechnen immer
P.S. da ein Monat (0,45) noch Gratis sei müsste er im Endergebnis die 0,45 noch abziehn. spricht einer Meldet sich am 1.1. an so sollte die Rechnung wie ich des gerade selbst mache mit Kopfarbeit wie folgt aussehen.
5,00 EUR. Jahrespreis für nächstes Jahr (2008)
+ 0,00 EUR. Jahrespreis für dieses Jahr (2007)
- 0,45 EUR. Gutschrift wegen des Gratis Monats
Gesamtbetrag 4,55 EUR.
Sollte sich jemand am 1.2. anmelden wo also er anfängt zu zählen sollte es wie folgt sein:
5,00 EUR. Jahrespreis für nächstes Jahr (2008)
+ 5,01 EUR. Jahrespreis für dieses Jahr (2007)
- 0,45 EUR. Gutschrift wegen des Gratis Monats
Gesamtbetrag 9,56 EUR.
Die Accounts werden dann auch bis 31.12.2008 freigeschaltet.
Momentan wenn ich im ACP bei der Benutzer Einstellung den Betrag eintrage welcher dann in der user_sales gespeichert wird, zeigt es in der E-Mail auch so aufgelistet dann auf nachdem der Account aktiviert wurde in die Mail welcher der Benutzer bekommt dann.
Allerdings muss man vor die freischaltung erst ins ACP und es ausrechnen und Eintragen und dann wieder in die Mail um zu aktivieren, da wenn dort nicht eingetragen ist man es vergisst dann nur aktiviert sendet er die Mail und schreibt 0 EUR. weil ja nichts eingetragen wurde.
Naja etwas kompliziert das ganze und ob man mit PHP es wirklich so erreichen kann, wäre es praktisch, da meine Freundin sich kaum traut welche freizuschalten da sie kein Fehler machen will bei dem Rechnenkram und ich ja Zeitlich eingeschränkt bin, so hatte jetzt ein Mitglied über 3tage auf Freischaltung gewartet, was nicht so gut ist.
Das Benutzer die sich Anfangs eines Jahres Anmelden mehr Zahlen als die am Ende ist ja klar da der Jahrespreis nur mal 5 EUR. ist dennoch ist die freischaltung (gültigkeit) gleich jem. also der Anfang sich anmeldet und mehr Zahlt hat bis ende 2008 den Account und jemand der sich später Ende anmeldet auch bis ende 2008 also weniger davon.
Falls das Mitglied bis 30.12.2008 dann die 5,00 EUR. nicht zahlt weils ggf. kein Mitglied mehr bleibe möchte wirds am 31.12.2008 vom autom. deaktiviert. Zahlt es die für ein weiteres Jahr wird im Benutzer Einstellung im ACP 2009 eingetragen so das es bis 31.12.2009 freigeschaltet ist dann.
Hoffe das das ganze jetzt verständlicher war.
Wobei des mit dem ACP auch momentan geht für was gibts Taschenrechner um die Tage mit dem Tagessatz zu berechnen, ist halt nur kompliziert die Tage auszurechnen immer
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Darstellbar wäre das schon mit PHP, das ist nicht das Problem.
Ich müsste nur mal Zeit haben, all die hier nun genannten "Regeln" zu verstehen und in eine Funktion zu fassen...
Ich müsste nur mal Zeit haben, all die hier nun genannten "Regeln" zu verstehen und in eine Funktion zu fassen...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- Christian_N
- Beiträge: 1787
- Registriert: Sa 19.Feb, 2005 21:48
- Wohnort: Frankfurt am Main
- Kontaktdaten:
Lass dir Zeit, so viele Anmeldungen haben wir (noch nicht), da Chantal auch erstmal berühmter werden muss, was noch auch dauern kann, da sie ja noch andere Pflichten wie Schule was wichtiger ist als Konzerte zu geben etc. hat.
Solange kann ich auch noch es selbst berechnen vllt. bau is das Script auch irgendwo ein, das ich erstmal seh wieviele danke es immer sind bis Ende des Tages, das ich des nicht immer im Kalender abzählen brauch das nur noch ich den Tagesatz mit die Tage mit Rechner berechnen brauche und dann im ACP eintrage.
Falls noch frage auftauchen, dann einfach stelle und ich geb mein bestes es zu erklären.
Jedenfalls schon mal danke, ggf. findet sich ja auch noch jemand anders der die Zeit zu hat an den ich auch schon dann im voraus mal danke sage.
Gruß Chris
Solange kann ich auch noch es selbst berechnen vllt. bau is das Script auch irgendwo ein, das ich erstmal seh wieviele danke es immer sind bis Ende des Tages, das ich des nicht immer im Kalender abzählen brauch das nur noch ich den Tagesatz mit die Tage mit Rechner berechnen brauche und dann im ACP eintrage.
Falls noch frage auftauchen, dann einfach stelle und ich geb mein bestes es zu erklären.
Jedenfalls schon mal danke, ggf. findet sich ja auch noch jemand anders der die Zeit zu hat an den ich auch schon dann im voraus mal danke sage.
Gruß Chris
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Naja, ich habe den Meeting MOD demnächst in Bearbeitung, der ist mal wieder fällig und dann ggf. auch noch den Download MOD (der aber vermutlich nicht in den nächsten Wochen).
Mal schaun, ob ich Deine "Rechenregeln" zwischen schieben kann...
Mal schaun, ob ich Deine "Rechenregeln" zwischen schieben kann...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- Christian_N
- Beiträge: 1787
- Registriert: Sa 19.Feb, 2005 21:48
- Wohnort: Frankfurt am Main
- Kontaktdaten:
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Nun, aus Zeitmangel zunächst nur die Formel zum Berechnen des aktuellen Jahres:
Damit stünden die Tage für das aktuelle Jahr fest.
Eleganter wäre dieses hier:
Auf jeden Fall hätte man mit $restliche_tage * 0.015 den Wert für user_sales.
Also z. B.
Dann noch den Betrag für die freien Tage bestimmen:
und abziehen
Somit wärst Du dann in der Lage, diesen Wert in die User-Tabelle zu schreiben, sobald sich ein User angemeldet hat.
Code-Ausschnitt hierfür:
und o. g. Codes einfach vor diese SQl-Anweisung gestellt, würde unverrückbar den richtigen Preis für den User einstellen.
Über die Folgejahre müsste man sich dann nochmal unterhalten, aber für mehr habe ich aktuell nicht wirklich Zeit.
BTW:
Am elegantesten wäre auch, die 0,015 Euro / Tag durch eine Board-Variable zu ersetzen, die dann in den allgemeinen Board-Einstellungen (ACP > Allgemein) verwaltbar wäre.
Dann könnte der gesamte Code so aussehen:
wobei der Wert (hier 0,015 Euro) in "sale_per_day" verwaltet würde, sofern man dieses in die Board-Konfig packt...
Und wenn Du Aktionen machen willst mit längeren Freibeträgen (für mehr Tage), könnte man auch die "30" bei $freibetrag auch in eine verwaltbare Board-Einstellung packen, um aus 30 gschwind mal 60 machen zu können, oder so...
Code: Alles auswählen
$jahresende = mktime(23, 59, 59, 12, 31, create_date('Y', time(), $board_config['board_timezone']), date('I'));
$jetzt = time();
$differenz = $jahresende - $jetzt;
$restliche_tage = ciel($differenz / 86400);
Eleganter wäre dieses hier:
Code: Alles auswählen
$tage_insgesamt = (date('L')) ? 366 : 365;
$aktueller_tag = date('z');
$restliche_tage = $tage_insgesamt - $aktueller_tag + 1;
Also z. B.
Code: Alles auswählen
$user_sales = $restliche_tage * 0.015;
Code: Alles auswählen
$freibetrag = 30 * 0.015;
Code: Alles auswählen
$user_sales -= $freibetrag;
Code-Ausschnitt hierfür:
Code: Alles auswählen
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
$sql = "INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
VALUES ($user_id, '" . str_replace("\'", "''", $username) . "', " . time() . ", '" . str_replace("\'", "''", $password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $interests) . "', '" . str_replace("\'", "''", $signature) . "', '$signature_bbcode_uid', $avatar_sql, $viewemail, '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', '" . str_replace("\'", "''", $yim) . "', '" . str_replace("\'", "''", $msn) . "', $attachsig, $allowsmilies, $allowhtml, $allowbbcode, $allowviewonline, $notifyreply, $notifypm, $popuppm, $user_timezone, '" . str_replace("\'", "''", $user_dateformat) . "', '" . str_replace("\'", "''", $user_lang) . "', $user_style, 0, 1, ";
#
#-----[ IN-LINE FIND ]------------------------------------------
#
user_interests
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, user_sales
#
#-----[ IN-LINE FIND ]------------------------------------------
#
$interests) . "'
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, $user_sales
Über die Folgejahre müsste man sich dann nochmal unterhalten, aber für mehr habe ich aktuell nicht wirklich Zeit.
BTW:
Am elegantesten wäre auch, die 0,015 Euro / Tag durch eine Board-Variable zu ersetzen, die dann in den allgemeinen Board-Einstellungen (ACP > Allgemein) verwaltbar wäre.
Dann könnte der gesamte Code so aussehen:
Code: Alles auswählen
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
$user_id = $row['total'] + 1;
#
#-----[ AFTER, ADD ]------------------------------------------
#
$tage_insgesamt = (date('L')) ? 366 : 365;
$aktueller_tag = date('z');
$restliche_tage = $tage_insgesamt - $aktueller_tag + 1;
$user_sales = $restliche_tage * $board_config['sale_per_day'];
$freibetrag = 30 * $board_config['sale_per_day'];
$user_sales -= $freibetrag;
#
#-----[ FIND ]------------------------------------------
#
$sql = "INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
VALUES ($user_id, '" . str_replace("\'", "''", $username) . "', " . time() . ", '" . str_replace("\'", "''", $password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $interests) . "', '" . str_replace("\'", "''", $signature) . "', '$signature_bbcode_uid', $avatar_sql, $viewemail, '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', '" . str_replace("\'", "''", $yim) . "', '" . str_replace("\'", "''", $msn) . "', $attachsig, $allowsmilies, $allowhtml, $allowbbcode, $allowviewonline, $notifyreply, $notifypm, $popuppm, $user_timezone, '" . str_replace("\'", "''", $user_dateformat) . "', '" . str_replace("\'", "''", $user_lang) . "', $user_style, 0, 1, ";
#
#-----[ IN-LINE FIND ]------------------------------------------
#
user_interests
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, user_sales
#
#-----[ IN-LINE FIND ]------------------------------------------
#
$interests) . "'
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, $user_sales
Und wenn Du Aktionen machen willst mit längeren Freibeträgen (für mehr Tage), könnte man auch die "30" bei $freibetrag auch in eine verwaltbare Board-Einstellung packen, um aus 30 gschwind mal 60 machen zu können, oder so...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- Christian_N
- Beiträge: 1787
- Registriert: Sa 19.Feb, 2005 21:48
- Wohnort: Frankfurt am Main
- Kontaktdaten:
Danke erstmal bis hier hin, werds mir nachher mal ggf. genauer anschauen :-)
EDIT: Nun ist es fast 2Monate her, hatte aber bisher nicht die Zeit dazu und habe die auch jetzt noch kaum, allerdings hat sich das ganze etwas ab dem 01.01 geändert mit der neue Domain etc.
Aber da ich den Code habe dürfte und ich die Zeit dazu finde mal, dürfte das kein größeres Problem sein, vor allem wenn ich wie schriebs den Tagessatz mit eine Board-Variable ersetze, was ich womöglich auch tun werde, da der sich somit ab 01.01. da der Jahrespreis 6€ ist auch geändert hat.
Nur was ich noch wissen wollte ist, du hast geschrieben
Und wenn ich dann eine Aktion mache z.B. vom 1.12. bis 31.12, 1Monat gratis das ich dort einfach 30 Eintrage und er dann abzieht wieder was.
EDIT2: Ich würde dieses hier benutzen gerne
Jetzt müsste ich aber noch wissen wie ich es in der Mail rein bekomme, also in der usercp_register.php habe ich in dem Teil der zustätig ist für die E-Mail (Freischaltung durch Admin) noch eingefügt und in der admin_welcome_inactive.tpl mit {SALES} logischerweise defeniert.
Nur das Problem ist (habe es noch nicht eingebaut, aber kann mir es so vorstelle) das er dann bei einen Tagessatz von 0,0164383561 in der Mail ausgeben würde 5,9999999765 - jetzt da die 3. Zahl hinter komma höher als 5 ist also eine 9 ist wird ja aufgerundet also wäre es 6,00.
Die frage wäre nur wie kann man den Code jetzt noch anpassen das er es auch automatisch so macht also Auf bzw. Abrunden die 3. Zahl hinter dem Komma....
Also wenn auch jetzt 4,3211111 sein sollte so das er dann 4,32 ausgeben würde das er die restliche Zahle löscht und nur 2 Zahle nach dem Komma ausgeben tut.
Gruß Chris
EDIT: Nun ist es fast 2Monate her, hatte aber bisher nicht die Zeit dazu und habe die auch jetzt noch kaum, allerdings hat sich das ganze etwas ab dem 01.01 geändert mit der neue Domain etc.
Aber da ich den Code habe dürfte und ich die Zeit dazu finde mal, dürfte das kein größeres Problem sein, vor allem wenn ich wie schriebs den Tagessatz mit eine Board-Variable ersetze, was ich womöglich auch tun werde, da der sich somit ab 01.01. da der Jahrespreis 6€ ist auch geändert hat.
Nur was ich noch wissen wollte ist, du hast geschrieben
also das werde ich auch wahrscheinlich machen eine Board-Variable ersetze, nur wollte ich mal frage kann man da auch 0 dann eintragen, so das er dann kein Freibetrag absieht?oxpus hat geschrieben:Und wenn Du Aktionen machen willst mit längeren Freibeträgen (für mehr Tage), könnte man auch die "30" bei $freibetrag auch in eine verwaltbare Board-Einstellung packen, um aus 30 gschwind mal 60 machen zu können, oder so...
Und wenn ich dann eine Aktion mache z.B. vom 1.12. bis 31.12, 1Monat gratis das ich dort einfach 30 Eintrage und er dann abzieht wieder was.
EDIT2: Ich würde dieses hier benutzen gerne
Code: Alles auswählen
1. #
2. #-----[ OPEN ]------------------------------------------
3. #
4. includes/usercp_register.php
5.
6. #
7. #-----[ FIND ]------------------------------------------
8. #
9. $user_id = $row['total'] + 1;
10.
11. #
12. #-----[ AFTER, ADD ]------------------------------------------
13. #
14. $tage_insgesamt = (date('L')) ? 366 : 365;
15. $aktueller_tag = date('z');
16. $restliche_tage = $tage_insgesamt - $aktueller_tag + 1;
17.
18. $user_sales = $restliche_tage * $board_config['sale_per_day'];
19. $freibetrag = 30 * $board_config['sale_per_day'];
20. $user_sales -= $freibetrag;
21.
22. #
23. #-----[ FIND ]------------------------------------------
24. #
25. $sql = "INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
26. VALUES ($user_id, '" . str_replace("\'", "''", $username) . "', " . time() . ", '" . str_replace("\'", "''", $password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $interests) . "', '" . str_replace("\'", "''", $signature) . "', '$signature_bbcode_uid', $avatar_sql, $viewemail, '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', '" . str_replace("\'", "''", $yim) . "', '" . str_replace("\'", "''", $msn) . "', $attachsig, $allowsmilies, $allowhtml, $allowbbcode, $allowviewonline, $notifyreply, $notifypm, $popuppm, $user_timezone, '" . str_replace("\'", "''", $user_dateformat) . "', '" . str_replace("\'", "''", $user_lang) . "', $user_style, 0, 1, ";
27.
28. #
29. #-----[ IN-LINE FIND ]------------------------------------------
30. #
31. user_interests
32.
33. #
34. #-----[ IN-LINE AFTER, ADD ]------------------------------------------
35. #
36. , user_sales
37.
38. #
39. #-----[ IN-LINE FIND ]------------------------------------------
40. #
41. $interests) . "'
42.
43. #
44. #-----[ IN-LINE AFTER, ADD ]------------------------------------------
45. #
46. , $user_sales
Code: Alles auswählen
'SALES' => $row['user_sales'],
Nur das Problem ist (habe es noch nicht eingebaut, aber kann mir es so vorstelle) das er dann bei einen Tagessatz von 0,0164383561 in der Mail ausgeben würde 5,9999999765 - jetzt da die 3. Zahl hinter komma höher als 5 ist also eine 9 ist wird ja aufgerundet also wäre es 6,00.
Die frage wäre nur wie kann man den Code jetzt noch anpassen das er es auch automatisch so macht also Auf bzw. Abrunden die 3. Zahl hinter dem Komma....
Also wenn auch jetzt 4,3211111 sein sollte so das er dann 4,32 ausgeben würde das er die restliche Zahle löscht und nur 2 Zahle nach dem Komma ausgeben tut.
Gruß Chris
Zuletzt geändert von Christian_N am Sa 20.Jan, 2007 23:14, insgesamt 2-mal geändert.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
- Christian_N
- Beiträge: 1787
- Registriert: Sa 19.Feb, 2005 21:48
- Wohnort: Frankfurt am Main
- Kontaktdaten:
Oki danke, dann werd ich es später mal ausprobieren alles nur jetzt die nächste paar Minute kommt erstmal Besuch um meine Geb. nachzufeieren wo ich am Mi. nicht getan habe weil ich Arbeite war.
EDIT: Habs eingebaut, allerdings funktioniert es aus irgend ein Grund nicht, er tut in der E-Mail 0 EUR. zeigen und in der Datenbank tut er auch 0 eintragen statt den Betrag was eigentlich drin stehen sollte.
Hab ich was falsch gemacht oder ist wohl am Code was noch falsch?
EDIT: Habs eingebaut, allerdings funktioniert es aus irgend ein Grund nicht, er tut in der E-Mail 0 EUR. zeigen und in der Datenbank tut er auch 0 eintragen statt den Betrag was eigentlich drin stehen sollte.
Hab ich was falsch gemacht oder ist wohl am Code was noch falsch?
Zuletzt geändert von Christian_N am So 21.Jan, 2007 19:02, insgesamt 1-mal geändert.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
- Christian_N
- Beiträge: 1787
- Registriert: Sa 19.Feb, 2005 21:48
- Wohnort: Frankfurt am Main
- Kontaktdaten:
die habe ich erstmal drausse gelassen, weil ich erstmal schauen wollte ob es überhaupt funktioniert.
Hänge die usercp_register.php am beste mal mit an...
[ Attachment gelöscht am So 21.Jan, 2007 21:31 von oxpus ]
Hänge die usercp_register.php am beste mal mit an...
[ Attachment gelöscht am So 21.Jan, 2007 21:31 von oxpus ]
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Du musst nur nach
das hier einfügen:
Code: Alles auswählen
$user_sales -= $freibetrag;
Code: Alles auswählen
$user_sales = round($user_sales, 2);
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
- Christian_N
- Beiträge: 1787
- Registriert: Sa 19.Feb, 2005 21:48
- Wohnort: Frankfurt am Main
- Kontaktdaten:
Klar hatte ich, aber es funktioniert einfach nicht deshalb hab ich es erstmal wieder raus genommen um zu schauen ob es überhaupt funktioniert wobei er dann ja 1,3456788 ausgegeben hätte müssen da er dann ohne dies nicht ab/aufrundet, aber tut er ja auch nicht mal, er speichert in die DB einfach 0 und somit tut er in die E-Mail auch 0 EUR. logischer weise ausgeben.
Daher bin ich der Meinung es sei irgendwo einen Fehler nur wo... *grubel*
Daher bin ich der Meinung es sei irgendwo einen Fehler nur wo... *grubel*
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Ist $board_config['sale_per_day'] eventuell gleich 0???
Denn 3 mal 0 is 0 is 0 ... *träller*
Denn 3 mal 0 is 0 is 0 ... *träller*
Zuletzt geändert von AmigaLink am Mo 22.Jan, 2007 15:22, insgesamt 1-mal geändert.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
- Christian_N
- Beiträge: 1787
- Registriert: Sa 19.Feb, 2005 21:48
- Wohnort: Frankfurt am Main
- Kontaktdaten:
Glaube nicht, habe die Tabelle in phpbb_config angelegt und dort steht bei value der Wert drin
Code: Alles auswählen
0,016438356164383561643835616438356
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Dann kann es ja nur noch sein, das $user_sales irgendwo wieder gelöscht wird.
(Übrigens ein wenig Übertrieben die vielen Nachkommastellen. Findest du nicht auch?)
(Übrigens ein wenig Übertrieben die vielen Nachkommastellen. Findest du nicht auch?)
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
- Christian_N
- Beiträge: 1787
- Registriert: Sa 19.Feb, 2005 21:48
- Wohnort: Frankfurt am Main
- Kontaktdaten:
Deshalb hatte ich auch die usercp_register.php angehängt gehabt.
Naja, hatte mit dem Rechner der bei Windoof dabei ist 6,00 / 365 genommen und das kam als Ergebnis aus was ich dann auch einkopiert hatte als Wert in die Tabelle.
Nur habe jetzt mal 0.01643 genommen als Wert, achte auf den Punkt statt Komma, jetzt ist in der DB auch keine 0 mehr sondern der Betrag fiel mir nur gerade ein zwecks eines andere Thema das man mit Punkt es machen muss schrieb Oxpus mal, wo ich es bei dem dann mit str_replace(); gelöscht hatte wenn Komma ist das er es in einen Punkt umwandelt aber als Komma ausgeben tut im Text.
Mal schauen wo das Thema war und in welche Datei ich es gemacht hatte, damit ich dort dasselbe nutzen kann bei dann dürfte es auch dort funktionieren.
Mit diesen Wert von oben reicht es sogar auch, da er 5,996... ausgeben tut bei 365Tage da die 6 somit auch noch größer ist als 5 tut er es auf 6,00 EUR. aufrunden. Den die lange Zahl hinter Komma war schon etwas übertrieben
EDIT: Habe da noch eine Frage zu dem Code ob ich jetzt ein Denkfehler habe oder ob das vielleicht doch anders lauten müssten statt + 1 nähmlich - 1 in der letzte Zeile vom Code-Block
Den ich würde es jetzt so rechnen des Jahr hat 365 Tage (kein Schaltjahr) dann tut der date('z') beim echo 22 ausgeben also 365 - 22 = 343 Tage rest (wenn der heutige mitgezählt wird), wenn man jetzt + 1 nimmt dann wäre es bei Rest 344 Tage wobei dieses Jahr nur noch 342 Tage hätte (wenn der heutige nicht mitgezählt wird) daher denk ich mal sollte es doch sicher heißen oder?
Aber könnte ja auch doch sicher nehmen um den heutige Tag mitzuzählen noch oder?
Naja, hatte mit dem Rechner der bei Windoof dabei ist 6,00 / 365 genommen und das kam als Ergebnis aus was ich dann auch einkopiert hatte als Wert in die Tabelle.
Nur habe jetzt mal 0.01643 genommen als Wert, achte auf den Punkt statt Komma, jetzt ist in der DB auch keine 0 mehr sondern der Betrag fiel mir nur gerade ein zwecks eines andere Thema das man mit Punkt es machen muss schrieb Oxpus mal, wo ich es bei dem dann mit str_replace(); gelöscht hatte wenn Komma ist das er es in einen Punkt umwandelt aber als Komma ausgeben tut im Text.
Mal schauen wo das Thema war und in welche Datei ich es gemacht hatte, damit ich dort dasselbe nutzen kann bei
Code: Alles auswählen
'SALES' => $user_sales,
Mit diesen Wert von oben reicht es sogar auch, da er 5,996... ausgeben tut bei 365Tage da die 6 somit auch noch größer ist als 5 tut er es auf 6,00 EUR. aufrunden. Den die lange Zahl hinter Komma war schon etwas übertrieben
EDIT: Habe da noch eine Frage zu dem Code ob ich jetzt ein Denkfehler habe oder ob das vielleicht doch anders lauten müssten statt + 1 nähmlich - 1 in der letzte Zeile vom Code-Block
Code: Alles auswählen
$tage_insgesamt = (date('L')) ? 366 : 365;
$aktueller_tag = date('z');
$restliche_tage = $tage_insgesamt - $aktueller_tag + 1;
Code: Alles auswählen
$restliche_tage = $tage_insgesamt - $aktueller_tag - 1;
Aber könnte ja auch doch sicher
Code: Alles auswählen
$restliche_tage = $tage_insgesamt - $aktueller_tag;
Zuletzt geändert von Christian_N am Di 23.Jan, 2007 00:38, insgesamt 1-mal geändert.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
- oxpus
- Administrator
- Beiträge: 28737
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Bei der letzten Rechnung wird der aktuelle Tag nicht mitgerechnet. Das wäre dann immer + 1!
Und zu Deiner Rundung:
Wenn die Werte vorher alle korrekt berechnet sind, war die von mir gepostete Änderung die gewünschte Vorgehensweise.
Daher ist zu prüfen, was vorher mit den Werten passiert und ab wann 0 rauskommt
Und zu Deiner Rundung:
Wenn die Werte vorher alle korrekt berechnet sind, war die von mir gepostete Änderung die gewünschte Vorgehensweise.
Daher ist zu prüfen, was vorher mit den Werten passiert und ab wann 0 rauskommt
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!