close× Call Us +49 (1805) 01 29 59
Thread Author: AlexH99
Thread ID: 2561
Thread Info
Es gibt 15 Beiträge zu diesem Thema, und es wurde 2668 mal angesehen.
Wer ist hier? 1 Gäste
 Thema drucken
Birthdate Panel falsche Jahres Anzeige
AlexH99
Hallo,

das Birthdate Panel zeigt bei mir die falschen Jahre der Geburtstage an. Und zwar genau um 1 Jahr weniger. Bei allen Usern. Datum im PHP passt. z.B: Geb.: 01.04.1970 - wäre dann heute 40 Jahre - zeigt aber 39 Jahre. Ist der Bug bekannt? Und was kann ich da tun.

Vielen Dank für eure Hilfe

Gruß Alex
Bearbeitet von AlexH99 am 01.04.2010 um 08:56
 
SC-Ad-Bot
 
AlexH99
Mmh Eigenartig. Die Datumsanzeige stimmt in PHP. Noch ein Tipp wo ich schauen könnte? Danke schon mal für die prompte Antwort. Gruß Alex
 
emblinux
Ich glaube so etwas schon mal gelesen zu haben. Dort lag es letzendlich am Script selbst, die Berechnung des Geburtstages war nicht ganz korrekt.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
emblinux
Alternativ mal eine andere Funktion.

Code 

function getAlter($datum)
{
    $akt_jahr = date("Y");
    $akt_monat = date("m");
    $akt_tag = date("d");

    $gebdat = explode("-", $datum);

    $geb_jahr = $gebdat[0];
    $geb_monat = $gebdat[1];
    $geb_tag = $gebdat[2];

    $alter = $akt_jahr - $geb_jahr;
    $v = $akt_monat - $geb_monat;

    // Geb-Monat in der Zukunft
    if ($v < 0) {
    $alter = $alter - 1;

    // aktuelles Monat ist Geb-Monat
    } elseif ($v == 0) {
    $d = $akt_tag - $geb_tag;
    if ($d < 0) { $alter = $alter - 1; }
    }

    // Rückgabe des Alters
    return $alter;
}



Dieser Funktion braucht man lediglich das Geburtsdatum übergeben, z.B $data['user_birthdate']

Diese Funktion wird z.B. im Wer ist online-Panel benutzt und hat keinerlei Probleme.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
AlexH99
Ja steht bei mir auch so drin. Doch woher greift er das Jahr. Wie gesagt in der Datumsanzeige steht "2010"
Kann ich die neue Funktion ind das Script einbinden? Wenn ja wo....Danke für eure prompthe Hilfe !
Bearbeitet von AlexH99 am 01.04.2010 um 10:50
 
emblinux
Es wird das Jahr vom Server und aus dem Geburtstags-Datum benutzt.

Die Funktion bindest du einfach in die Datei mit ein, bzw. dort mithin, wo die andere Funktion zur Altersberechnung steht. Der Aufruf kann dann z.B. so aussehen.

Code 

echo getAlter($user_data['user_birthdate']);


Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
AlexH99
Würde dies dann alles in dieses Script gepackt? Wenn ja wo? Sorry bin nicht so ganz versiert mit der Thematik aus diesem Grund frage ich.

[geshi=php]

<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright © 2002 - 2008 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Birthdate Panel for PHP-Fusion v7
| Author: Ralf Thieme
| Homepage: www.PHPFusion-SupportClub.de
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }

if (!function_exists("ALTER")) {
function ALTER($gebd,$gebm,$geby){
$alter = date("Y") - $geby;
if (mktime(0,0,0,date("m"),date("d"),date("Y")) < mktime(0,0,0,$gebm,$gebd,date("Y"))) {
$alter--;
}
return $alter;
}
}

if (file_exists(INFUSIONS."birthdate_panel/locale/".LOCALESET."index.php")) {
include INFUSIONS."birthdate_panel/locale/".LOCALESET."index.php";
} else {
include INFUSIONS."birthdate_panel/locale/German/index.php";
}

$months = explode("|", $locale['months']);
$month = $months[number_format(date("m"))];

$result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_birthdate like '____-".date("m")."-__' ORDER BY DAYOFMONTH(user_birthdate) ASC");
openside($locale['pfsc_gb1'].$month);
if (dbrows($result)) {
while($data = dbarray($result)) {
if (array_key_exists("user_birthdate", $data) && $data['user_birthdate'] != "0000-00-00") {
$user_birthdate = explode("-", $data['user_birthdate']);
if ($user_birthdate[2] == date("d")) {
echo "<img src='".INFUSIONS."birthdate_panel/birthday.gif' alt='bd' />&nbsp;\n";
}
echo $user_birthdate[2].".".$user_birthdate[1]."&nbsp;";
echo "<a href='".BASEDIR."profile.php?lookup=".$data['user_id']."'>".trimlink($data['user_name'], 15)."</a>";
echo "&nbsp;(".ALTER(number_format($user_birthdate['2']),number_format($user_birthdate['1']),$user_birthdate['0']).")";
echo "<br />\n";
}
}
} else {
echo $locale['pfsc_gb2'].$month;
}
closeside();
?>
[/geshi]
 
emblinux
Ich habs mal soweit angepasst, jedoch ungetestet.

Code 

<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright © 2002 - 2008 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Birthdate Panel for PHP-Fusion v7
| Author: Ralf Thieme
| Homepage: www.PHPFusion-SupportClub.de
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }

if (!function_exists("ALTER")) {
   function ALTER($gebd,$gebm,$geby){
      $alter = date("Y") - $geby;
      if (mktime(0,0,0,date("m"),date("d"),date("Y")) < mktime(0,0,0,$gebm,$gebd,date("Y"))) {
         $alter--;
      }
      return $alter;
   }
}

function getAlter($datum)
{
    $akt_jahr = date("Y");
    $akt_monat = date("m");
    $akt_tag = date("d");

    $gebdat = explode("-", $datum);

    $geb_jahr = $gebdat[0];
    $geb_monat = $gebdat[1];
    $geb_tag = $gebdat[2];

    $alter = $akt_jahr - $geb_jahr;
    $v = $akt_monat - $geb_monat;

    // Geb-Monat in der Zukunft
    if ($v < 0) {
    $alter = $alter - 1;

    // aktuelles Monat ist Geb-Monat
    } elseif ($v == 0) {
    $d = $akt_tag - $geb_tag;
    if ($d < 0) { $alter = $alter - 1; }
    }

    // Rückgabe des Alters
    return $alter;
}

if (file_exists(INFUSIONS."birthdate_panel/locale/".LOCALESET."index.php")) {
   include INFUSIONS."birthdate_panel/locale/".LOCALESET."index.php";
} else {
   include INFUSIONS."birthdate_panel/locale/German/index.php";
}

$months = explode("|", $locale['months']);
$month = $months[number_format(date("m"))];

$result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_birthdate like '____-".date("m")."-__' ORDER BY DAYOFMONTH(user_birthdate) ASC");
openside($locale['pfsc_gb1'].$month);
if (dbrows($result)) {
   while($data = dbarray($result)) {
      if (array_key_exists("user_birthdate", $data) && $data['user_birthdate'] != "0000-00-00") {
         $user_birthdate = explode("-", $data['user_birthdate']);
         if ($user_birthdate[2] == date("d")) {
            echo "<img src='".INFUSIONS."birthdate_panel/birthday.gif' alt='bd' />&nbsp;\n";
         }
         echo $user_birthdate[2].".".$user_birthdate[1]."&nbsp;";
         echo "<a href='".BASEDIR."profile.php?lookup=".$data['user_id']."'>".trimlink($data['user_name'], 15)."</a>";
//         echo "&nbsp;(".ALTER(number_format($user_birthdate['2']),number_format($user_birthdate['1']),$user_birthdate['0']).")";
                        echo "&nbsp;(".getAlter($data['user_birthdate']).")";
         echo "<br />\n";
      }
   }
} else {
   echo $locale['pfsc_gb2'].$month;
}
closeside();
?>


Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Porky
Moinsen

Habe das selbe Problem mit dem Birthday Panel.
Habe die Lösung von emblinux ausprobiert aber leider hat es nicht funktioniert.
Es zeigt immer noch an das einer 18 wird obwohl er 1991 geboren wurde.
Der Server von mir läuft auf der richtigen zeit.
@emblinux:hast du noch eine Idee?

Gruß Porky
Stark sein bedeutet nicht, nie zu fallen!
Stark sein bedeutet, immer wieder auf zu stehen!
 
emblinux
Um das ganze mal nachzuvollziehen, gib doch mal das genaue Geburtsdatum dieser Person an. Vielleicht wird daraus schon ersichtlich, warum er das anzeigt.
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Porky
Das Bithday panel habe ich hier runtergelden und das ist von Gr@n@dE.

Hier mal der Code:[geshi=php]<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright © 2002 - 2008 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Birthdate Panel for PHP-Fusion v7
| Author: Ralf Thieme
| Homepage: www.PHPFusion-SupportClub.de
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
if (!defined("IN_FUSION")) { die("Access Denied"); }

if (!function_exists("ALTER")) {
function ALTER($gebd,$gebm,$geby){
$alter = date("Y") - $geby;
if (mktime(0,0,0,date("m"),date("d"),date("Y")) < mktime(0,0,0,$gebm,$gebd,date("Y"))) {
$alter--;
}
return $alter;
}
}

if (file_exists(INFUSIONS."birthdate_panel/locale/".LOCALESET."index.php")) {
include INFUSIONS."birthdate_panel/locale/".LOCALESET."index.php";
} else {
include INFUSIONS."birthdate_panel/locale/German/index.php";
}

$months = explode("|", $locale['months']);
$month = $months[number_format(date("m"))];

$result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_birthdate like '____-".date("m")."-__' ORDER BY DAYOFMONTH(user_birthdate) ASC");
openside($locale['pfsc_gb1'].$month);
if (dbrows($result)) {
while($data = dbarray($result)) {
if (array_key_exists("user_birthdate", $data) && $data['user_birthdate'] != "0000-00-00") {
$user_birthdate = explode("-", $data['user_birthdate']);
if ($user_birthdate[2] == date("d")) {
echo "<img src='".INFUSIONS."birthdate_panel/birthday.gif' alt='bd' />&nbsp;\n";
}
echo $user_birthdate[2].".".$user_birthdate[1]."&nbsp;";
echo "<a href='".BASEDIR."profile.php?lookup=".$data['user_id']."'>".trimlink($data['user_name'], 15)."</a>";
echo "&nbsp;(".ALTER(number_format($user_birthdate['2']),number_format($user_birthdate['1']),$user_birthdate['0']).")";
echo "<br />\n";
}
}
} else {
echo $locale['pfsc_gb2'].$month;
}
closeside();
?>[/geshi]
Stark sein bedeutet nicht, nie zu fallen!
Stark sein bedeutet, immer wieder auf zu stehen!
 
emblinux
Wer hat was davon gesagt, das du den Code hier postet sollst, der steht schon weiter oben. Ich bräuchte einfach nur genau das Geburtsdatum dieser Person, um das ganze nachzuvollziehen. Habe ich so unverständlich geschrieben !? nach denken
Das Lernen ist wie ein Meer ohne Ufer. Konfuzius

Alles wird Gut!

KEIN Support per Mail, ICQ oder PN !
www.heiseclan.de/fusion/sig.gif

www.heiseclan.de/geosig.gif
 
Porky
Moinsen

Habs schon selber gefunden.

Den Abschnitt der rot makiert ist.

if (!function_exists("ALTER")) {
function ALTER($gebd,$gebm,$geby){
$alter = date("Y") - $geby;
if (mktime(0,0,0,date("m"),date("d"),date("Y")) < mktime(0,0,0,$gebm,$gebd,date("Y"))) {
$alter--;
}
return $alter;[geshi=php][/geshi]

mit dem auswechseln oder selbst reinschreiben.

if (!function_exists("ALTER")) {
function ALTER($gebd,$gebm,$geby){
$alter = date("Y") - $geby;
if (mktime(0,0,0,date("m"),date("d"),date("Y")) < mktime(0,0,0,$gebm,$gebd,date("Y"))) {
$alter+1;
}
return $alter;

Dann wird es angezeigt wie alt der jenige wird.

@emblinux:nein hast nicht aber ich falsch gelesen und nicht gleich meckern ;)

Gruß Porky
Stark sein bedeutet nicht, nie zu fallen!
Stark sein bedeutet, immer wieder auf zu stehen!
 
AlexH99
Hallo orig. Panel.php mit der Änderung von Porky passt und es funktioniert zu 100%. Nochmals Danke für eure Mühe. LG Alex
 
Darkdevil
Hallo zusammen

Hab hier folgendes problem !
Hab alles so angepasst wie oben beschrieb aber die anzeige funzt bei mir immer noch nich !
Hoffe ihr könnt mir weiterhelfen

Danke schonmal
 
Springe ins Forum:

 Ähnliche Themen 

TEST
Thema Forum Antworten Letzter Beitrag
Whats New Panel Infusionen 2 02.06.2019 um 00:50
Advanced Whats New Panel Allgemeine Diskussionen 3 23.10.2018 um 19:43
slideshow panel (mitte) Allgemeine Diskussionen 9 24.06.2018 um 17:08
warnuwetter panel Infusionen 5 16.01.2018 um 19:41
[suche] Social Networks Panel Infusionen 7 06.06.2017 um 17:08
SGI Fusion