Mathe mit PHP was ist möglich? :D

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Benutzeravatar
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

Beitrag von Christian_N »

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 :D

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? :D
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Ja das geht. :)
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
Giga4000
Beiträge: 181
Registriert: Sa 26.Nov, 2005 09:19
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Giga4000 »

Um mit PHP zu runden, schau dir mal die folgenden Links an:
Site: www.mx-forums.de - New!
phpBB MODs: Click Here
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

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:

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
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Warum willst Du denn das Ergebnis in der Datenbank speichern?
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!
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

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.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

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 ;)
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!
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

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 :D
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

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...
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!
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

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
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

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...
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!
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

Wäre jedenfalls super :)
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Nun, aus Zeitmangel zunächst nur die Formel zum Berechnen des aktuellen Jahres:

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);
Damit stünden die Tage für das aktuelle Jahr fest.
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;
Auf jeden Fall hätte man mit $restliche_tage * 0.015 den Wert für user_sales.
Also z. B.

Code: Alles auswählen

$user_sales = $restliche_tage * 0.015;
Dann noch den Betrag für die freien Tage bestimmen:

Code: Alles auswählen

$freibetrag = 30 * 0.015;
und abziehen

Code: Alles auswählen

$user_sales -= $freibetrag;
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:

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
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:

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
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...
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!
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

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
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...
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?

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
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

Code: Alles auswählen

'SALES' => $row['user_sales'],
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
Zuletzt geändert von Christian_N am Sa 20.Jan, 2007 23:14, insgesamt 2-mal geändert.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

$variable = round($variable, 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!
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

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?
Zuletzt geändert von Christian_N am So 21.Jan, 2007 19:02, insgesamt 1-mal geändert.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Vielleicht die im Beispiel genannte "$variable" mit dem korrekten Wert ersetzen?
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!
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

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 ]
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Du musst nur nach

Code: Alles auswählen

			$user_sales -= $freibetrag;
das hier einfügen:

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!
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

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. ^1

Daher bin ich der Meinung es sei irgendwo einen Fehler nur wo... *grubel*
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Ist $board_config['sale_per_day'] eventuell gleich 0???
Denn 3 mal 0 is 0 is 0 ... *träller* ;) :D
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]
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

Glaube nicht, habe die Tabelle in phpbb_config angelegt und dort steht bei value der Wert

Code: Alles auswählen

0,016438356164383561643835616438356
drin
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

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?)
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
Christian_N
Beiträge: 1787
Registriert: Sa 19.Feb, 2005 21:48
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von Christian_N »

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

Code: Alles auswählen

'SALES' => $user_sales,
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

Code: Alles auswählen

			$tage_insgesamt = (date('L')) ? 366 : 365;
			$aktueller_tag = date('z');
			$restliche_tage = $tage_insgesamt - $aktueller_tag + 1;
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

Code: Alles auswählen

$restliche_tage = $tage_insgesamt - $aktueller_tag - 1;
heißen oder?

Aber könnte ja auch doch sicher

Code: Alles auswählen

$restliche_tage = $tage_insgesamt - $aktueller_tag;
nehmen um den heutige Tag mitzuzählen noch oder?
Zuletzt geändert von Christian_N am Di 23.Jan, 2007 00:38, insgesamt 1-mal geändert.
Meine Projekte: Chantals - Fanpage .::. phpBB Projekt
Benutzeravatar
oxpus
Administrator
Beiträge: 28737
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

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 ;)
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!
Antworten