Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Alter in PHP berechnen

Frage Entwicklung PHP

Mitglied: 46356

46356 (Level 2)

01.12.2007, aktualisiert 08.05.2011, 8012 Aufrufe, 13 Kommentare

Hallo

Leider konnte ich das Thema in meinem alten Beitrag nicht fortsetzen, da dieser von einem Moderator geschlossen wurde.
Deshalb eröffne ich einen neuen...

Ich würde gerne mittels PHP das Alter von einem User ausgeben...
Das Geburtsdatum ist in meiner Datenbank gespeichert, und der Script klappt auch prima, wenn es nicht mehrere Benutzer mit dem gleichen Adressen Wert geben würde...

Mein Script:

01.
$abfrage = "SELECT Fullname, Photo, Adress, Day, Month, Year FROM GENERALLY WHERE Adress LIKE 'michigansee'"; 
02.
$ergebnis = mysql_query($abfrage); 
03.
if (mysql_errno()) die ("MySQL-Error: " . mysql_error()); 
04.
while($row = mysql_fetch_object($ergebnis)) 
05.
06.
echo "<font face='Arial'>"; 
07.
echo "<table border='0'>"; 
08.
echo "<tr>"; 
09.
echo "<td width='50px'>"; 
10.
echo "Name: <br> <br> Stadt:"; 
11.
echo "</td>"; 
12.
echo "<td width='270px'>"; 
13.
echo "$row->Fullname <br><br> $row->Adress"; 
14.
echo "</td>"; 
15.
echo "<td>"; 
16.
$photo = $row->Photo; 
17.
echo "<br><img src='".$photo."'>"; 
18.
echo "</td>"; 
19.
echo "<br>"; 
20.
echo "<img src='/images/pixel_red.jpg' width='481px' height='1px'>"; 
21.
echo "</font>"; 
22.
 
23.
 
24.
// Age 
25.
 
26.
   $day = $row->Day; 
27.
   $month = $row->Month; 
28.
   $year = $row->Year; 
29.
 
30.
 
31.
   $jetzt = mktime(0,0,0,date("m"),date("d"),date("Y")); 
32.
   $geburt = mktime(0,0,0,$month,$day,$year); 
33.
   $age   = intval(($jetzt - $geburt) / (3600 * 24 * 365)); 
34.
   echo "<br>"; 
35.
   echo $age . " Jahre alt"; 
36.
 
37.
   }
Ich glaube, dass PHP die Werte der db ddiert...
Aber wie gesagt, ich weiß nicht wo der Fehler liegt, denn der obere Teil des Scripts funktioniert bereits ganz gut!


Vielen Dank für Eure Mithilfe
Mitglied: Jon
01.12.2007 um 22:07 Uhr
Mach mal unter der Zeile:
echo $age . " Jahre alt";
ein
unset ($age);

Damit wird die Varible $age gelöscht und beim nächsten Aufruf neu angelegt. Dann gibt es auch nichts mehr zuaddieren ...

Kleiner Tip: Speichere ein Datum in einer DB nicht als 'Tag', 'Monat', 'Jahr' ab, sondern als Unix-Timestamp. Macht erstens die DB schlanker und zweitens hast du immer Werte die du für derartige Berechnungen nicht erst konvertieren musst.
Bitte warten ..
Mitglied: 46356
01.12.2007 um 22:14 Uhr
Hallo

Leider hats nicht geklappt...
Das Ergebnis ist immer noch falsch.

Mfg. Alex
Bitte warten ..
Mitglied: Dani
01.12.2007 um 22:20 Uhr
Hi!
Was geben den die einzelnen Variablen aus:

  • $jetzt
  • $geburt


Grüße
Dani
Bitte warten ..
Mitglied: Arano
01.12.2007 um 22:35 Uhr
Naben zusammen.

Also die Sach mit dem unset($age); finde ich unnötig denn es wird nirgends ein Wert zu dieser Variable hinzuaddiert und durch $age=n; wird die Variable mit einem neuem Wert belegt, dieser wird jedoch nicht hinzuaddiert.

Anstelle von $jetzt = mktime(0,0,0,date("m"),date("d"),date("Y")); würde ich $jetzt=time(); verwenden.

Dein Scriptteil welches das Alter berechnet funktioniert bei mir:
01.
<?php 
02.
  // ich hatte anfang des jahres geburtstag und wurde 1 jahr alt 
03.
  $day = 30; 
04.
  $month = 1; 
05.
  $year = 2006; 
06.
  $jetzt = mktime(0,0,0,date("m"),date("d"),date("Y")); 
07.
  $geburt = mktime(0,0,0,$month,$day,$year); 
08.
  $age   = intval(($jetzt - $geburt) / (3600 * 24 * 365)); 
09.
  echo $age . " Jahre alt"
10.
  echo "<br>"
11.
   
12.
  // ich wurde ende letzten jahres gebohren und werde erst noch 1 jahr alt (bin 0 jahre alt) 
13.
  $day = 30; 
14.
  $month = 12; 
15.
  $year = 2006; 
16.
  $jetzt = mktime(0,0,0,date("m"),date("d"),date("Y")); 
17.
  $geburt = mktime(0,0,0,$month,$day,$year); 
18.
  $age   = intval(($jetzt - $geburt) / (3600 * 24 * 365)); 
19.
  echo $age . " Jahre alt"
20.
  echo "<br>"
21.
 
22.
?>
Ausgabe bei mir:
1 Jahre alt
0 Jahre alt


Dann schau doch mal was für Werte in der DB stehen, vielleicht kommt ja wirklich etwas falsches herraus.
Kleiner Tip: Speichere ein Datum in einer DB nicht als 'Tag', 'Monat', 'Jahr' ab, sondern als Unix-Timestamp...
Klingt so als sollte man es immer so machen. Aber das kommt natürlich auf den Verwendungszweck an ! Wenn du das Geburtsdatum nur ausgeben möchtest wäre ein Unixtimestamp nicht so Praktisch weil man es dann erst umrechnen müsste. Allerdings den Geburtstag, -monat und -jahr einzelnd in die DB zu speichern vielleicht auch nicht die besste Lösung, da wäre ein Feld mit dem Typ "DATE" evtl, besser. Wie wir sehen ist es immer wichtig zuwissen wie wir den Wert verwenden möchten und dementsprechend die Art der Speicherung zu wählen.
Musste ich auch gerade erst lernen ;)

Gruß Arano


Edit: Man was tipp ich langsam... !?
Bitte warten ..
Mitglied: 46356
01.12.2007 um 22:36 Uhr
Hallo

Hab das Problem nun fast gelöst ...
Leider kommt noch eine Fehlermeldung, aber das Alter wird trotzdem richtig ausgegeben...

Die Fehlermeldung:
01.
Warning: mktime() expects parameter 4 to be long, string given in /usr/export/www/vhosts/funnetwork/hosting/... on line 42
Mfg. Alex

P.s.: Der Fehler lag in meiner Datenbank...
Bitte warten ..
Mitglied: 46356
01.12.2007 um 23:42 Uhr
Hallo

Ich bekomme zwar das richtige Alter ausgegeben, aber folgende Fehlermeldung ströt mich:

Warning: mktime() expects parameter 4 to be long, string given in /usr/export/www/vhosts/funnetwork/hosting/... on line 42

Was bedeutet das?

Alex
Bitte warten ..
Mitglied: filippg
02.12.2007 um 01:45 Uhr
Hallo,

ich bin mir nicht sicher, wie php das handhabt. Aber nicht jedes Jahr hat 365 Tage, und insofern kann die Berechnung damit falsche Werte liefern.

Filipp
Bitte warten ..
Mitglied: 46356
02.12.2007 um 10:43 Uhr
Hallo

Hab die alten Einträge der Db einfach mal gelöscht und 10 neue hinzugefügt...
Nun funktioniert alles ...

Vielen Dank für Eure Mithilfe
Bitte warten ..
Mitglied: 46356
02.12.2007 um 12:48 Uhr
Hallo

Hab den Script nun als eine Suche weiterverbaut...
Wie kann ich es machen, damit mir bei keinem Suchtreffer angezeigt wird:
Nichts gefunden??

Sonst funktioniert mein Script schon gut...

01.
$abfrage = "SELECT Fullname, Photo, Adress, Day, Month, Year FROM GENERALLY WHERE Adress LIKE '$city'"; 
02.
$ergebnis = mysql_query($abfrage); 
03.
 
04.
if (mysql_errno()) die ("MySQL-Error: " . mysql_error()); 
05.
while($row = mysql_fetch_object($ergebnis))
Habs mit else etc. versucht, aber nichts geklappt...

Kann mir da jemand weiterhelfen?

Mfg. Alex
Bitte warten ..
Mitglied: Arano
03.12.2007 um 19:56 Uhr
Jup kann ich ^^

Schau dir mal mysql_num_rows() an, als Rückgabewert erhälst du die Anzahl der ausgelesenen Zeilen (Treffer). Die verbaust du in eine IF-Bedingung und prüfst ob das Ergebnis größer als 0 ist.
01.
<?php 
02.
  if(mysql_num_rows($result)>=1){ 
03.
     while($treffer = mysql_fetch_assoc($result)){ 
04.
            echo $treffer['Fullname'].'<br>'
05.
06.
07.
     else
08.
           echo 'Deine Suche ergabe leider kein Ergebnis.<br>'
09.
10.
?>

Gruß Arano
Bitte warten ..
Mitglied: 46356
03.12.2007 um 22:08 Uhr
Danke für deine Hilfe, werde es später noch ausprobieren...
Lg. Alex
Bitte warten ..
Mitglied: masterG
03.01.2008 um 10:24 Uhr
Hier ein ungetestetes Codeschnippsel von mir:
01.
<? 
02.
   $tag   = 1; 
03.
   $monat = 6; 
04.
   $jahr  = 1950; 
05.
 
06.
   $jetzt = mktime(0,0,0,date("m"),date("d"),date("Y")); 
07.
   $geburtstag = mktime(0,0,0,$monat,$tag,$jahr); 
08.
   $alter   = intval(($jetzt - $geburtstag) / (3600 * 24 * 365)); 
09.
 
10.
   echo "Du bist $alter Jahre alt."
11.
?> 
Bitte warten ..
Mitglied: 46356
03.01.2008 um 13:23 Uhr
Hallo!

Habs ausprobiert und es hat funktioniert ;)

Danke für Eure Mithilfe!

Lg. Alex
Bitte warten ..
Ähnliche Inhalte
PHP
Bewertungssystem wie berechnen?
gelöst Frage von icegetPHP4 Kommentare

Hallo liebe Community, ich habe folgendes Problem: Die Benutzer auf einer Website (angemeldet mit ihrer email) dürfen Rezepte bewerten. ...

Ausbildung
Datenübertragung berechnen
Frage von M.MarzAusbildung6 Kommentare

Hallo zusammen, ich habe folgende Aufgabe zu erledigen und weis nicht wie ich da vorgehen soll, kann mir da ...

Batch & Shell
Zwischenzeit berechnen
gelöst Frage von MPFGBatch & Shell5 Kommentare

Hallo, ich suche eine Möglichkeit ein Programm zu einer eingegebenen Zeit mit Batch zu schließen. mit timeout soll die ...

RedHat, CentOS, Fedora
PHP geht wieder zurück auf alte Version auf einem CentOS-Server
Frage von StefanKittelRedHat, CentOS, Fedora2 Kommentare

Hallo, bei einem Kunden steht noch ein alter CentOS-Server mit 5.11 (final). Darauf läuft Plesk und PHP 5.3. Nun ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 19 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 21 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows Server
Sichere Remote Desktop Verbindung wie?
gelöst Frage von nuss33Windows Server11 Kommentare

Hallo zusammen, eins vorweg: Ich besitze einen privaten Windows Server 2008 R2 zu Hause im Netzwerk er wird nicht ...