webForumDet fria alternativet

Hjälp!

11 svar · 171 visningar · startad av Php

PhpMedlem sedan sep. 2001224 inlägg
#1

Hej!

Jag undrar om det är någon som vet hur man kan få ut dagens födelsedags barn från en MySql databas. Jag har ett fält i min databas där de har fyllt i när de fyller år.

spangoMedlem sedan juni 20008 205 inlägg
#2

Det här hade passat bättre i MySQL-forumet, men låt gå :)
Det hela beror ju på vilken datatyp du har i den kolumn där födelsedatum lagras. Är det någon av de datatyper som lagrar datum (och inte t.ex. text) kan du göra en select som ser ut sä här:

SELECT kolumner FROM medlemmar WHERE MONTH(födelsedag) = MONTH(NOW()) AND DAYOFMONTH(födelsedag) = DAYOFMONTH(NOW())

------------------
You can't be young forever, but you can be immature indefinitely.

[Redigerat av spango den 13 okt 2001]

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Hur ligger det lagrat? Är det födelsedatum eller bara dag och månad?

Om det är födelsedatum så kan du skriva en sqlfråga:

$sql = "select * from members where month(birthday) = month(current_date) and dayofmonth(birthday) = dayofmonth(current_date)";
//hämta värden som vanligt

------------------
essentitia preter non sans multiplicandum

PhpMedlem sedan sep. 2001224 inlägg
#4

Men detta skriver ju inte ut namnet på den perssonen som fyller år!

LarsGMedlem sedan dec. 200012 464 inlägg
#5
$l = mysql_connect("localhost", "magdur", "crepert");
mysql_select_db("magic_mystery");

$sql = "select * from members where month(birthday) = month(current_date) and dayofmonth(birthday) = dayofmonth(current_date)";

$result = mysql_query($sql) or die mysql_error();
if ( mysql_num_rows($result) ) {
  echo "Dagens födelsedagsbarn: <br>";

while ( $row = mysql_fetch_array($result) ) {
echo $row["Namn"] . "<br>";
}
}

------------------
essentitia preter non sans multiplicandum

PhpMedlem sedan sep. 2001224 inlägg
#6

Det fungerar inte jag får följande felmedelande:
Parse error: parse error in /web/sites/221/test/www.test.f2s.com/test.php on line 74

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Då är det intressant att se rad 60-80 i din kod.

------------------
essentitia preter non sans multiplicandum

PhpMedlem sedan sep. 2001224 inlägg
#8

Jag gjorde en nys sida då fick jag detta felmedelandet:
Parse error: parse error in /web/sites/221/test/www.test.f2s.com/test1.php on line 6

hela koden är så gär:
<?
$l = mysql_connect("db.test.f2s.com", "användarnamn", "lösenord");
mysql_select_db("magic_mystery");
$sql = "select * from anvandare where month(manad) = month(current_date) and dayofmonth(dag) = dayofmonth(current_date)";

$result = mysql_query($sql) or die mysql_error();
if ( mysql_num_rows($result) ) {
echo "Dagens födelsedagsbarn: <br>";

while ( $row = mysql_fetch_array($result) ) {
echo $row["anv_namn"] . "<br>";
}
}
?>

LarsGMedlem sedan dec. 200012 464 inlägg
#9

Som vanligt idag så blev det lite fel. Hade glömt parenteser vid anrop till die.

mysql_select_db behövs nog inte (i vilket fall så tror jag inte att din databas heter magical_mystery)

<?
$l = mysql_connect("db.test.f2s.com", "användarnamn", "lösenord");
//
$sql = "select * from anvandare where manad = month(current_date) and dag = dayofmonth(current_date)";

$result = mysql_query($sql) or die( mysql_error());
if ( mysql_num_rows($result) ) {
echo "Dagens födelsedagsbarn: <br>";

while ( $row = mysql_fetch_array($result) ) {
echo $row["anv_namn"] . "<br>";
}
}
?>

Jag gjorde också om select-frågan då det ser ut som du lagrar månad och dag och inte ett datum.

------------------
essentitia preter non sans multiplicandum

PhpMedlem sedan sep. 2001224 inlägg
#10

Tack du det fungerar nu men jag har forfarande några frågor:
1. Min server ligger inte i Sverige så när klockan är 00.00 i sverige altså nu ska det vara den 14 oktober men eftersom server inte är i Sverige så är det forfarande 13 oktober för servern jag undrar om det går att fixa så att den går efter svensk tid?

2. Kan man inte göra så att om det inte finns några födelsedagsbarn så ska det stå att det inte finns några födelsedags barn idag?

LarsGMedlem sedan dec. 200012 464 inlägg
#11

Om du byter sql-satsen mot detta

$sql = "select * from anvandare where manad = month(from_unixtime(unix_timestamp(current_date)+6*3600)) and dag = dayofmonth(from_unixtime(unix_timestamp(current_date)+6*3600))";

Du får ändra 6 till det antal timmar som skiljer mellan serverns tid och svensk tid

2.

if ( mysql_num_rows($result) ) {
echo "Dagens födelsedagsbarn: <br>";

while ( $row = mysql_fetch_array($result) ) {
echo $row["anv_namn"] . "<br>";
}
} else {
  echo "Ingen fyller år idag <br>";
}
?>

------------------
essentitia preter non sans multiplicandum

PhpMedlem sedan sep. 2001224 inlägg
#12

Tack!

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)