login  Naam:   Wachtwoord: 
Registreer je!
 Forum

verjaardagen in database zetten en aaroepen...

Offline Christiaan - 12/11/2004 20:12
Avatar van ChristiaanLid Ik wil voor mijn site alle verjaardagen in een database stoppen en ze per maand aanroepen (op volgorde dan hè ).

Dus dat er straks op mijn site staat:
_________________________________
| jarigen deze maand: |
|________________________________|
| Christiaan Rietjens, 25, (11-03-1980)|
| Gert Rietjens, 50, (16-03-1955) |
| bla bla bla, 179 (18-03-1826) |
|_________________________________|

:D

Iemand die dit kan/wil maken/uitleggen/link naar tutorial heeft?

8 antwoorden

Gesponsorde links
Offline Thomas - 12/11/2004 20:22 (laatste wijziging 12/11/2004 20:33)
Avatar van Thomas Moderator Heh. Het is vooral belangrijk dat je je de datums een beetje handig opslaat, de rest is een kwestie van uitlezen ?
Ik weet niet precies hoeveel gegevens je wilt bijhouden ? Alleen de naam en de geboorte-datum ? Of hangt er nog een heel profiel aan.
Ik zou ofwel de geboortedatum vastleggen als DATE, of je maakt gewoon 3 integer-velden aan (dag, maand, jaar), zodat je er makkelijk mee kunt rekenen / er makkelijk queries mee kunt uitvoeren. Werken met een afzonderlijke dag, maand en geboortejaar lijkt me nog altijd makkelijker dan klooien met (sub)strings (in queries).
Offline Christiaan - 12/11/2004 20:29
Avatar van Christiaan Lid ik wil alleen naam, huidige leeftdijd en geboortedatum bijhouden. Er hoeft geen profiel aan te hangen. Het probleem is dat ik vrijwel niks van mySQL afweet .
Dus als je een site weet waar e.e.a. uitgelegd wordt....
Offline Thomas - 12/11/2004 20:36
Avatar van Thomas Moderator De huidige leeftijd is afleidbaar. Afleidbare informatie hoef je niet op te slaan in een database. Het vergt dan wel wat rekenwerk om te bepalen wat voor leeftijd iemand heeft. Volgens mij heb ik een keer zoiets gemaakt. Ff zoeken.
Offline Thomas - 12/11/2004 20:52 (laatste wijziging 12/11/2004 20:59)
Avatar van Thomas Moderator
  1. CREATE TABLE birthday (
  2. month int(2) NOT NULL default '0',
  3. day int(2) NOT NULL default '0',
  4. year int(4) NOT NULL default '0',
  5. name varchar(30) NOT NULL default ''
  6. ) TYPE=MyISAM;


Dit is een OUD script, dus ff aanpassen aan eigen gebruik (en ff conntecten naar je DB uiteraard ;)).

Ik wéét dat er eea beter kan, maar dit script is illustratief genoeg.

  1. <?php
  2. $user = "...";
  3. $pass = "...";
  4. $dbase = "...";
  5. $host = "...";
  6.  
  7. if(!mysql_connect($host, $user, $pass)) {
  8. echo "Cannot connect to database";
  9. } else {
  10. mysql_select_db($dbase);
  11. }
  12. ?>
  13. <HTML>
  14. <HEAD>
  15. <TITLE>birthday calendar</TITLE>
  16. <STYLE>
  17. <!--
  18. .top {BACKGROUND-COLOR: #999999;}
  19.  
  20. BODY {FONT-FAMILY: Arial;
  21. FONT-SIZE: 8pt;
  22. COLOR: #000000;}
  23.  
  24. TD {FONT-FAMILY: Arial;
  25. FONT-SIZE: 8pt;
  26. COLOR: #000000;}
  27.  
  28. A:LINK {FONT-SIZE: 8pt;
  29. FONT-WEIGHT: bold;
  30. TEXT-DECORATION: none;
  31. COLOR: #0000ff;}
  32.  
  33.  
  34. A:VISITED {TEXT-DECORATION: none;
  35. FONT-WEIGHT: bold;
  36. COLOR: #0000ff;}
  37.  
  38. A:ACTIVE {TEXT-DECORATION: underline;
  39. FONT-WEIGHT: bold;
  40. COLOR: #ff0000;}
  41.  
  42. A:HOVER {TEXT-DECORATION: underline;
  43. FONT-WEIGHT: bold;
  44. COLOR: #ff0000;}
  45. //-->
  46. </STYLE>
  47. </HEAD>
  48.  
  49. <BODY>
  50. <U>birthday calendar</U><BR><BR>
  51. <TABLE WIDTH="900" BORDER="1" CELLSPACING="0" CELLPADDING="1">
  52. <TR CLASS="top">
  53. <TD>jan<BR></TD>
  54. <TD>feb<BR></TD>
  55. <TD>mar<BR></TD>
  56. <TD>apr<BR></TD>
  57. <TD>may<BR></TD>
  58. <TD>jun<BR></TD>
  59. <TD>jul<BR></TD>
  60. <TD>aug<BR></TD>
  61. <TD>sep<BR></TD>
  62. <TD>oct<BR></TD>
  63. <TD>nov<BR></TD>
  64. <TD>dec<BR></TD>
  65. </TR>
  66.  
  67. <?
  68. echo "<TR>";
  69. for($c = 1; $c <=12; $c++) {
  70. $month = mysql_query("select day, name from birthday where month=$c order by day asc");
  71. echo " <TD WIDTH=\"75\" VALIGN=\"top\">";
  72. if(!mysql_num_rows($month)) {
  73. echo " <BR>\n";
  74. } else {
  75. while($bd = mysql_fetch_array($month)) {
  76. echo " <A HREF=\"calendar.php?d=".$bd['day']."&m=".$c."\">";
  77. echo ($bd['day'] < 10 ? "0" : "").$bd['day']." ".array_pop(array_reverse(explode(" ",$bd['name'])))."</A><BR>";
  78. }
  79. }
  80. echo " </TD>";
  81. }
  82. echo "</TR>";
  83. ?>
  84. </TABLE>
  85. <BR>
  86.  
  87. <?
  88. // Bepaal datum voor het berekenen van leeftijden
  89. list($a_day, $a_month, $a_year) = split(' ',date("j n Y"));
  90. if(!empty($_GET['d']) && !empty($_GET['m'])) {
  91. $res = mysql_query("select * from birthday where month='$m' and day='$d' order by year asc");
  92.  
  93. echo ($d < 10 ? "0" : "").$d." ";
  94. switch($m) {
  95. case 1: echo "January" ; break;
  96. case 2: echo "February" ; break;
  97. case 3: echo "March" ; break;
  98. case 4: echo "April" ; break;
  99. case 5: echo "May" ; break;
  100. case 6: echo "June" ; break;
  101. case 7: echo "July" ; break;
  102. case 8: echo "August" ; break;
  103. case 9: echo "September"; break;
  104. case 10: echo "October" ; break;
  105. case 11: echo "November" ; break;
  106. case 12: echo "December" ; break;
  107. }
  108. echo "<BR>";
  109.  
  110. echo "<TABLE BORDER=\"0\" CELLSPACING=\"0\" CELLPADDING=\"3\">";
  111. while($names = mysql_fetch_array($res)) {
  112. echo "<TR>";
  113. echo "<TD>";
  114. echo $names['year']." - <B>".$names['name']."</B>";
  115. echo "</TD>";
  116.  
  117. // berekenen van leeftijd
  118. if(($a_month < $m) || ($a_day < $d && $a_month == $m)) {
  119. $age = $a_year - $names['year'] - 1;
  120. }
  121. if(($a_month > $m) || ($a_day >= $d && $a_month == $m)) {
  122. $age = $a_year - $names['year'];
  123. }
  124. echo "<TD>";
  125. echo " <FONT COLOR=\"#0000ff\">".$age."</FONT><BR>";
  126. echo "</TD>";
  127. echo "</TR>";
  128. }
  129. echo "</TABLE>";
  130. } else {
  131. echo "click on a date to see more info.<BR>";
  132. }
  133. ?>
  134. </BODY>
  135. </HTML>
Offline Christiaan - 12/11/2004 21:11 (laatste wijziging 12/11/2004 23:11)
Avatar van Christiaan Lid http://christiaan.pcextreme.nl/verjaardagen.php/

Ik heb mezelf erin gezet, maar hoe krijg ik die nu op http://christiaan.pcextreme.nl/ in het kopje 'jarig deze maand'?

[edit]
als ik op mijn naam klik; krijg ik een error pagina...moest er niet nog een deel zijn?
[/edit]
Offline Thomas - 13/11/2004 00:19 (laatste wijziging 13/11/2004 00:19)
Avatar van Thomas Moderator Verander de URL in je script waar de link naar wijst naar je scriptnaam ?

calendar.php --> verjaardagen.php ?
Offline Christiaan - 13/11/2004 10:32
Avatar van Christiaan Lid FangorN, stomme fout zeg, het werkt nu goed. Maar kan ik nu ook de gegevens per maand uit de database halen en op http://christiaan.pcextreme.nl/ laten zien in het kopje: Jarig deze maand?
Offline Thomas - 13/11/2004 11:45
Avatar van Thomas Moderator Je pakt de huidige maand, en gaat zoeken naar mensen die deze maand jarig zijn - hierbij sorteer je de resultaten oplopend op dag:

  1. <?php
  2. // huidige maand
  3. $maand = date("n", time());
  4.  
  5. $res = mysql_query("SELECT * FROM birthday WHERE month=".$maand." ORDER BY day") or die(mysql_error());
  6.  
  7. if(mysql_num_rows($res) == 0) {
  8. // niemand jarig - je zou een boodschap kunnen laten zien die dit zegt:
  9. echo "Niemand jarig deze maand.";
  10. } else {
  11. // resultaten
  12. while($row = mysql_fetch_assoc($res)) {
  13. // het hangt er een beetje van af wat je hier wilt laten zien,
  14. // maar een dag en een naam lijken mij handig
  15. echo $row['day']." ".$row['name']."<br />";
  16. }
  17. // geef de resultaten vrij
  18. }
  19. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.214s