人が見るテーブルを生成するコードは次のとおりです (デフォルトでは $date が今日の日付で、将来の日付または過去の日付を選択した場合、$date は URL 変数に基づいて変更されます。$time は単なる $row[time] です)。
$query = mysql_query("SELECT * FROM times", $db);
while ($row = mysql_fetch_array($query)){ //grab all available times
$time = $row[time];
$query2 = mysql_query("SELECT * FROM appts WHERE time = '$time' AND date = '$date' ", $db); //select all appointments that match current date and available times
$aptid = $apt[id];
while($apt = mysql_fetch_array($query2))
{
$mem = $apt[mem];
if($mem != ''){
$class = 'green';
}
$ns = $apt[ns];
$x = $apt[x];
if($ns || $x != ''){
$class = 'yellow';
}
echo "<tr><td class='$class'>$apt[date_set]</td><td class='$class'>";
echo date('h:i A', strtotime($row[time]));
echo "</td>";
$aptid = $apt[id];
echo "<td class='$class'>$apt[name]</td>
<td class='$class'>$apt[phone]</td>
<td class='$class'>$apt[phone2]</td>
<td class='$class'>$apt[src]</td>
<td class='$class'>$apt[coach]</td>
<td class='$class'>$apt[v1]</td>
<td class='$class'>$apt[v2]</td>
<td class='$class'>$apt[mem]</td>
<td align='center' class='$class'>$apt[x]</td>
<td align='center' class='$class'>$apt[ns]</td>
<td class='$class'>$apt[comments]</td>
<td align='center'>";
if($aptid != ''){//i dont want to display options on blank rows
echo "<a href='index.php?date=$date&apptid=$aptid&action=edit'>Edit</a>
<a href='index.php?year=$year&month=$month&date=$date&apptid=$aptid&action=x'>X</a>
<a href='index.php?year=$year&month=$month&date=$date&apptid=$aptid&action=ns'>NS</a> ";
//<a href='index.php?year=$year&month=$month&date=$date&apptid=$aptid&action=delete'>Delete</a> (HIDDEN FOR NOW)
}
echo "</td></tr>";
}
}
?>
</tbody>
</table>
データベースに新しいレコードを追加するコードは次のとおりです。
<div class='dialog' title='New Appointment'>
<form id='newappt' method='post'>
<table>
<tr>
<td>Time</td>
<td><select name='time'>
<? $query = mysql_query("SELECT * FROM times", $db); //set time option as times available from times db
while($row = mysql_fetch_array($query)){
echo "<option value = '$row[time]'>";
echo date('h:i A', strtotime($row[time]));
echo "</option>";
}
?>
</td>
</tr>
<tr>
<td>Date</td>
<td><input type='text' id='datepicker' name='date'></td>
</tr>
<tr>
<td>Name</td>
<td><input type='text' name='name'></td>
</tr>
<tr>
<td>Phone</td>
<td><input type='text' name='phone'></td>
</tr>
<tr>
<td>Phone 2</td>
<td><input type='text' name='phone2'></td>
</tr>
<tr>
<td>Src</td>
<td><input type='text' name='src'></td>
</tr>
<tr>
<td>Coach</td>
<td><input type='text' name='coach'></td>
</tr>
<tr>
<td>Comments</td>
<td><input type='text' name='comments'></td>
</tr>
</table>
<input type='submit' name='submit-newappt' value='Add Appointment'>
</form>
</div>
次に、送信時に何が起こるかを次に示します。
if($_POST['submit-newappt']){ //when submitted insert new record and display success message.
$dateset = date("Y-m-d");
$q = "INSERT INTO appts (date_set, time, date, name, phone, phone2, src, coach, comments) VALUES ('$dateset', '$_POST[time]', '$_POST[date]', '$_POST[name]', '$_POST[phone]', '$_POST[phone2]', '$_POST[src]', '$_POST[coach]', '$_POST[comments]')";
$result = mysql_query($q) or die(mysql_error());
echo "<br>New appointment added successfully for ";
echo $_POST['name'];
echo " at ";
echo $_POST['date'];
echo " at ";
echo date('h:i A', strtotime($_POST['time']));
}
したがって、現在今日表示しているとすると、テーブルにはすべての予定が今日の日付で表示されます。次に、2013 年 7 月 14 日に「新しい予定を追加」します。今日にとどまるのではなく、アポイントメントを追加したばかりの日付のアポイントメントを表示するようにテーブルを変更します。
tl;dr(ish) - 新しいレコードをデータベースに追加すると、php クエリが変更されるのはなぜですか?
日付の由来:
if(isset($_GET['date'])){
$date = $_GET['date'];
}
if(!$date){
$date = date('Y-m-d');
}