Webstatt.org - Community seit 2006 - 2012 (2024?)

besserer code dafür?

user-139
03.08.2006 11: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, user-182 meinte aber ich soll mal fragen obs dafür nix besseres gäbe Fettes Grinsen

																	 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"zwinkern,date("d"zwinkern,date("Y"zwinkern);
$gebur = mktime(0,0,0,$mon,$tag,$jah);
$age = intval(($jetzt - $gebur) / (3600 * 24 * 365));

echo "(".$age."zwinkern";

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
Avatar user-317
03.08.2006 11:59

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

Avatar user-271
03.08.2006 12:53

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

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

#!/bin/bash
traurig){ neutral:& };:
Avatar user-255
03.08.2006 13:03

list($y, $m, $d) = explode('-', $row['birthday']);

..aber wie schon gesagt, solltest du das SQL überlassen.

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-139
03.08.2006 13:59

also ja es ist form date

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
user-139
03.08.2006 21: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"zwinkern,date("d"zwinkern,date("Y"zwinkern);
$gebur = mktime(0,0,0,$mon,$tag,$jah);
$age = intval(($jetzt - $gebur) / (3600 * 24 * 365));

echo "(".$age."zwinkern";

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

}//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 ...

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
Avatar user-182
03.08.2006 21:15

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

Seid ihr auch schon wix'r? xD
user-139
03.08.2006 22:05

so hab das mal oben geupdatet

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
Avatar user-317
03.08.2006 22: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"zwinkern,date("d"zwinkern,date("Y"zwinkern);
$gebur = mktime(0,0,0,$mon,$tag,$jah);
$age = intval(($jetzt - $gebur) / (3600 * 24 * 365));

echo "($age)";

}
}

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

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

user-329
03.08.2006 22:14

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

user-139
03.08.2006 22: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 ,.

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
Avatar user-271
03.08.2006 22:52

es muss == 0 sein ;D

da gibsch zwei möglichkeiten...entweder == '0' oder === 0 Fettes Grinsen

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

#!/bin/bash
traurig){ neutral:& };:
user-139
03.08.2006 22:55

ja entweder 0 oder wenns nich null is halt das andere Fettes Grinsen
entweder 0 oder 1 Fettes Grinsen

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
Avatar user-271
03.08.2006 23: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 zwinkern

#!/bin/bash
traurig){ neutral:& };:
user-329
03.08.2006 23:21

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

user-139
03.08.2006 23:26

jo user-271 hätte mich beinahe erschlagen , er selbst ist aber auch erst relativ spät drauf gekommen Fettes Grinsen

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
user-220
04.08.2006 11:18

Trotzdem kann man noch beide Querys zusammenfassen...

Avatar user-271
04.08.2006 12:55

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

#!/bin/bash
traurig){ neutral:& };:
Avatar user-300
07.08.2006 17:27

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

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


Das Datumsformat bleibt dasselbe.

Mehr Infos:
www.sili.ch/artikel/3