fork download
  1. <?php
  2. /* This calculator is your for free by Calendarscripts.info. You have no obligations for anything - you can modify, redistribute, sell it or whatever you want to do.
  3. We will appreciate if you don't remove the link at the bottom, but that's not required. */
  4.  
  5. /* Feel free to modify the CSS and the texts below. - no problem at all. Just don't touch the PHP code or the specual codes which are surrounded with %% unless you know what you are doing. */
  6.  
  7. /* Version 1.1 released on Nov 7, 2011*/
  8. ?>
  9. <style type="text/css">
  10. .calculator_table
  11. {
  12. font-size:11px;
  13. font-family:verdana, arial, sans-serif;
  14. border:2pt solid #4444FF;
  15. padding:25px;
  16. width:300px;
  17. }
  18. </style>
  19. <?php if(!empty($_POST['calculator_ok'])):
  20. //last cycle date
  21. $date="$_POST[dateyear]-$_POST[datemonth]-$_POST[dateday]";
  22.  
  23. //convert to time
  24. $lasttime=mktime(0,0,0,$_POST['datemonth'],$_POST['dateday'],$_POST['dateyear']);
  25.  
  26. // next period start
  27. $next_period=$lasttime + $_POST['days']*24*3600;
  28. $next_period=date("F d, Y",$next_period);
  29.  
  30. //first fertile day
  31. $firstdaytime=$lasttime + $_POST['days']*24*3600 - 16*24*3600;
  32. $firstday=date("F d, Y",$firstdaytime);
  33.  
  34. //last fertile day
  35. $lastdaytime=$lasttime + $_POST['days']*24*3600 - 12*24*3600;
  36. $lastday=date("F d, Y",$lastdaytime);
  37.  
  38. //have to adjust due date?
  39. $diff=$_POST['days'] - 28;
  40.  
  41. //due date $date + 280 days
  42. $duedatetime=$lasttime + 280*24*3600 + $diff*24*3600;
  43. $duedate=date("F d, Y",$duedatetime);
  44.  
  45. ?>
  46. <div class="calculator_table">
  47. <p>Here are the results based on the information you provided:</p>
  48. <p>Your next <b>menstrual period</b> is expected to start on <strong><?php echo $next_period?></strong>.</p>
  49. <p>You next <b>most fertile</b> period is <strong><?php echo $firstday?> to <?php echo $lastday?></strong>.</p>
  50. <p>If you conceive within this timeframe, your estimated <b>due date</b> will be <strong><?php echo $duedate?></strong>.</p>
  51. <p align="center"><input type="button" value="Calculate again!" onclick="window.location='http://<?php echo $_SERVER['HTTP_HOST'];?><?php echo $_SERVER['REQUEST_URI']?>'"></p>
  52. </div>
  53. <?php else:
  54. //the calculator comes here
  55. ?>
  56. <div class="calculator_table">
  57. <form method="post">
  58. <p>Please select the first day of your last menstrual period:</p>
  59. <p><?php echo date_chooser("date",date("Y-m-d"))?></p>
  60. <p>Usual number of days in your period: <select name="days">
  61. <?php
  62. for($i=20;$i<=45;$i++)
  63. {
  64. if($i==28) $selected='selected="true"';
  65. else $selected='';
  66. echo "<option $selected value='$i'>$i</option>";
  67. }
  68. ?>
  69. </select></p>
  70. <p align="center"><input type="submit" name="calculator_ok" value="Calculate"></p>
  71. </form>
  72. </div>
  73. <?php endif;
  74.  
  75. //to print a date chooser - get name and value in mysql date format
  76. function date_chooser($name,$value="")
  77. {
  78. $months=array('','January','February','March','April','May','June','July','August',
  79. 'September','October','November','December');
  80.  
  81. if(empty($value)) $value=date("Y-m-d");
  82.  
  83. $parts=explode("-",$value);
  84.  
  85. $day=$parts[2]+0;
  86. $month=$parts[1]+0;
  87. $year=$parts[0];
  88.  
  89. $chooser="";
  90.  
  91. $chooser.="<select name='".$name."month'>";
  92. for($i=1;$i<=12;$i++)
  93. {
  94. if($i==$month) $selected='selected="true"';
  95. else $selected='';
  96. $chooser.="<option $selected value='$i'>$months[$i]</option>";
  97. }
  98. $chooser.="</select> / ";
  99.  
  100. $chooser.="<select name='".$name."day'>";
  101. for($i=1;$i<=31;$i++)
  102. {
  103. if($i==$day) $selected='selected';
  104. else $selected='';
  105. $chooser.="<option $selected value='$i'>$i</option>";
  106. }
  107. $chooser.="</select> / ";
  108.  
  109. $chooser.="<select name='".$name."year'>";
  110. for($i=(date("Y")-1);$i<=2050;$i++)
  111. {
  112. if($i==$year) $selected='selected';
  113. else $selected='';
  114. $chooser.="<option $selected>$i</option>";
  115. }
  116. $chooser.="</select> ";
  117.  
  118. return $chooser;
  119. }
  120. ?>
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
<style type="text/css">
.calculator_table
{
	font-size:11px;
	font-family:verdana, arial, sans-serif;
	border:2pt solid #4444FF;
	padding:25px;
	width:300px;	
}
</style>
	<div class="calculator_table">
	<form method="post">
	<p>Please select the first day of your last menstrual period:</p>
	<p><select name='datemonth'><option selected="true" value='1'>January</option><option  value='2'>February</option><option  value='3'>March</option><option  value='4'>April</option><option  value='5'>May</option><option  value='6'>June</option><option  value='7'>July</option><option  value='8'>August</option><option  value='9'>September</option><option  value='10'>October</option><option  value='11'>November</option><option  value='12'>December</option></select> / <select name='dateday'><option  value='1'>1</option><option  value='2'>2</option><option  value='3'>3</option><option  value='4'>4</option><option  value='5'>5</option><option  value='6'>6</option><option selected value='7'>7</option><option  value='8'>8</option><option  value='9'>9</option><option  value='10'>10</option><option  value='11'>11</option><option  value='12'>12</option><option  value='13'>13</option><option  value='14'>14</option><option  value='15'>15</option><option  value='16'>16</option><option  value='17'>17</option><option  value='18'>18</option><option  value='19'>19</option><option  value='20'>20</option><option  value='21'>21</option><option  value='22'>22</option><option  value='23'>23</option><option  value='24'>24</option><option  value='25'>25</option><option  value='26'>26</option><option  value='27'>27</option><option  value='28'>28</option><option  value='29'>29</option><option  value='30'>30</option><option  value='31'>31</option></select> / <select name='dateyear'><option >2013</option><option selected>2014</option><option >2015</option><option >2016</option><option >2017</option><option >2018</option><option >2019</option><option >2020</option><option >2021</option><option >2022</option><option >2023</option><option >2024</option><option >2025</option><option >2026</option><option >2027</option><option >2028</option><option >2029</option><option >2030</option><option >2031</option><option >2032</option><option >2033</option><option >2034</option><option >2035</option><option >2036</option><option >2037</option><option >2038</option><option >2039</option><option >2040</option><option >2041</option><option >2042</option><option >2043</option><option >2044</option><option >2045</option><option >2046</option><option >2047</option><option >2048</option><option >2049</option><option >2050</option></select> </p>
	<p>Usual number of days in your period: <select name="days">
	<option  value='20'>20</option><option  value='21'>21</option><option  value='22'>22</option><option  value='23'>23</option><option  value='24'>24</option><option  value='25'>25</option><option  value='26'>26</option><option  value='27'>27</option><option selected="true" value='28'>28</option><option  value='29'>29</option><option  value='30'>30</option><option  value='31'>31</option><option  value='32'>32</option><option  value='33'>33</option><option  value='34'>34</option><option  value='35'>35</option><option  value='36'>36</option><option  value='37'>37</option><option  value='38'>38</option><option  value='39'>39</option><option  value='40'>40</option><option  value='41'>41</option><option  value='42'>42</option><option  value='43'>43</option><option  value='44'>44</option><option  value='45'>45</option>	</select></p>
	<p align="center"><input type="submit" name="calculator_ok" value="Calculate"></p>
	</form>
	</div>