Willkommen in der Webstatt
User-1 am 03.08.06 13:53

gibts hierfür nen besseren code?
das datum liegt in der form jahr-monat-Tag in der db vorund soll das alter aus dem geburtsdatum berechnen
so funktionierts, xyz-72 meinte aber ich soll mal fragen obs dafür nix besseres gäbe :D

preg_match("/(\d{4,})-(\d{1,2})-(\d{1,2})/", $row['birthday'], $alter);
#########schnipsel
$mon = $alter[2];
$tag = $alter[3];
$jah = $alter[1];

$jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
$gebur = mktime(0,0,0,$mon,$tag,$jah);
$age = intval(($jetzt - $gebur) / (3600 * 24 * 365));

echo "(".$age.")";

netcup.de Warum gibt es hier Werbung?
User-2 am 03.08.06 13:59

Ich würde statt RegEx einfach mit explode an den Bindestrichen die einzelnen Zahlen rauskloppen.

User-3 am 03.08.06 14:53

ist die spalte zufällig die form date? weil dann kann man das ganze auch über einen SQL Befehl beim auslesen lösen ;)

aber klar...nachdem es immer gleich ist, machs mit einem explode

User-4 am 03.08.06 15:03

list($y, $m, $d) = explode('-', $row['birthday']);
..aber wie schon gesagt, solltest du das SQL überlassen.

User-1 am 03.08.06 15:59

also ja es ist form date

User-1 am 03.08.06 23:11

möcht keinen neuen thread aufmachen
aba erkennt jemand darin den fehler? ich bekomme bei den letzten 2 if anweisungen immer das selbe ausgegeben , egal ob sich der wert 0 oder 1 ändert,.
$sql = mysql_query("SELECT * FROM freundesliste WHERE User_a = ".$user_info['user_id']." OR User_b = ".$user_info['user_id']);//abfrage aus der freundesliste tabelle
while($row = mysql_fetch_assoc($sql))
{ //anfang while
$site_sess->load_user_info($row['User_b']);
if($row['User_a'] == $user_info['user_id']) {
$query = mysql_query("SELECT * FROM 4images_users WHERE user_id = ".$row['User_b']);//abfrage aus der 4images_user
while($row = mysql_fetch_assoc($query))
{ echo $row['user_name']; //angfang while 4images uer
preg_match("/(\d{4,})-(\d{1,2})-(\d{1,2})/", $row['birthday'], $alter);
#########schnipsel
$mon = $alter[2];
$tag = $alter[3];
$jah = $alter[1];

$jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
$gebur = mktime(0,0,0,$mon,$tag,$jah);
$age = intval(($jetzt - $gebur) / (3600 * 24 * 365));

echo "(".$age.")";

############

}//ende while 4images_user
}
echo $row['aktiv'];
if($row['aktiv'] == 0)
{echo"nicht befreundet!? |";
}else{
echo"befreundet! |";}

if($row['aktiv'] == 0)
{echo"Freundschaft annehmen!? |";
}else{
echo"Freundschaft kündigen!? |";}



}



so besser :_D?

irgendwie kann ichs ned besser ...

User-5 am 03.08.06 23:15

rücke erstmal richtig ein...
ausserdem könnte man die beiden querys zusammenfassen

User-1 am 04.08.06 00:05

so hab das mal oben geupdatet

User-2 am 04.08.06 00:12

Lern mal richtig einrücken, so geht das einfach nicht weiter. Halte dich z.b. daran : http://tut.php-q.net/einruecken.html

<?php
$sql = mysql_query("SELECT * FROM freundesliste WHERE User_a = ".$user_info['user_id']." OR User_b = ".$user_info['user_id']);
while($row = mysql_fetch_assoc($sql)) {
$site_sess->load_user_info($row['User_b']);
if($row['User_a'] == $user_info['user_id']) {
$query = mysql_query("SELECT * FROM 4images_users WHERE user_id = ".$row['User_b']);
while($row = mysql_fetch_assoc($query)) {
echo $row['user_name'];
$alter = explode('-', $row['birthday']);

$mon = $alter[1];
$tag = $alter[2];
$jah = $alter[0];

$jetzt = mktime(0,0,0,date("m"),date("d"),date("Y"));
$gebur = mktime(0,0,0,$mon,$tag,$jah);
$age = intval(($jetzt - $gebur) / (3600 * 24 * 365));

echo "($age)";

}
}

if($row['aktiv'] == '0') {
echo 'nicht befreundet!? |';
} else {
echo 'befreundet! |';
}

if($row['aktiv'] == '0') {
echo 'Freundschaft annehmen!? |';
} else {
echo 'Freundschaft kündigen!? |';
}
}
?>

User-6 am 04.08.06 00:14

is das auch wirklich row['aktiv'] == 0 oder empty?

User-1 am 04.08.06 00:50

ja klar der eine datensatz $row[aktiv] in der db ist 1 und der andere = 0
jedoch bekomme ich das selbe angeziegt bei beiden , und das is ja falsch

bei dem einen müsste es
nicht befreundet!?
bei dem anderen
befreundet!

anzeigen

es zeigt aber bei beiden befreundet!
an ,. und ich weiss nich warum ,.


EDIT;
der witz is aber auch der das wenn ich über die zwei ifs
echo $row['aktiv'];
schreibe bekomme ich keine ausgabe ,.

schreibe ich es aber direkt hinter die anfangsklammer der while schleife bekomme ich eine ,.

User-3 am 04.08.06 00:52

es muss == 0 sein ;D

da gibsch zwei möglichkeiten...entweder == '0' oder === 0 :D

das eine macht es einfach zu einem string...das andere prüft den wert genau...nachdem 0 auch false sein kann ;) aber bei === eben nicht..da ist 0 === 0 und nicht false

User-1 am 04.08.06 00:55

ja entweder 0 oder wenns nich null is halt das andere :D
entweder 0 oder 1 :D

User-3 am 04.08.06 01:09

dada...zweite while schleife...da wird $row überschrieben ;D und deshalb ist es nichtmehr da...wollte er nur nochmal hier schreiben...dass alle es mitbekommen ;)

User-6 am 04.08.06 01:21

achja stimmt :D beim oberen das z.b. auf row2 ändern.. aber scheint ihr ja eh schon gelöst zu haben ^^

User-1 am 04.08.06 01:26

jo xyz-161 hätte mich beinahe erschlagen , er selbst ist aber auch erst relativ spät drauf gekommen :D

User-7 am 04.08.06 13:18

Trotzdem kann man noch beide Querys zusammenfassen...

User-3 am 04.08.06 14:55

der eine query ist nu komplett draussen, weil man die daten auch über eine klasse direkt bekommt ;) deshalb brauch man nur 1 Query...

User-8 am 07.08.06 19:27

Deine Methode um das Alter auszurechnen finde ich etwas dürftig ;)

function alter($datum)
{
list($y, $m, $d) = explode('-', $datum);
$alter = date('Y') - $y;
$monat = date('m');
if ($monat < $m or ($monat == $m and $d > date('d'))) {
$alter--;
}
return $alter;
}


Das Datumsformat bleibt dasselbe.

Mehr Infos:
http://www.xyz-190.ch/artikel/3

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt