Willkommen in der Webstatt Zum Webstatt Blog und Stories
Bonze 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, Franky 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?
Sven Sven am 03.08.06 13:59

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

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

milahu milahu am 03.08.06 15:03

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

Bonze am 03.08.06 15:59

also ja es ist form date

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

Franky Franky am 03.08.06 23:15

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

Bonze am 04.08.06 00:05

so hab das mal oben geupdatet

Sven Sven 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!? |';
}
}
?>

tnY am 04.08.06 00:14

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

Bonze 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 ,.

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

Bonze am 04.08.06 00:55

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

nuit nuit 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 ;)

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

Bonze am 04.08.06 01:26

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

Kevz am 04.08.06 13:18

Trotzdem kann man noch beide Querys zusammenfassen...

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

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