Reputation: 640
I am writing an appointment book type thing, and i have a table for just possible times, so my first query is to list all of the times, then my 2nd table is scheduled appointments, which lists inside the table the appointment if its time and date match the time and date pulled from the first query.
What i cannot figure out is if 2 entries on the 2nd query match the criteria to display both results at the same time.
Heres my setup:
$query = mysql_query("SELECT * FROM times", $db);
while ($row = mysql_fetch_array($query)){
$time = $row[time];
$query2 = mysql_query("SELECT * FROM appts WHERE time = '$time' AND date = '$date' ", $db);
$apt = mysql_fetch_array($query2);
$aptid = $apt[id];
echo "<tr><td>";
echo date('h:i A', strtotime($row[time]));
echo "</td><td>$apt[name]</td></td><td>$apt[phone]</td><td>$apt[phone2]</td><td>$apt[src]</td><td>$apt[coach]</td><td>$apt[comments]</td><td>";
if($aptid != ''){
echo "<a href='index.php?date=$date&apptid=$aptid&action=delete'>Delete</a> <a href='index.php?date=$date&apptid=$aptid&action=x'>X</a> <a href='index.php?date=$date&apptid=$aptid&action=ns'>NS</a>";
}
echo "</td></tr>";
}
E.G.: 2 appointments set for 9am, its only displaying the first one. See screenshot
Upvotes: 0
Views: 142
Reputation: 5012
Modify it to
$query = mysql_query("SELECT * FROM times", $db);
while ($row = mysql_fetch_array($query)){
$time = $row[time];
$query2 = mysql_query("SELECT * FROM appts WHERE time = '$time' AND date = '$date' ", $db);
while($apt = mysql_fetch_array($query2))
{
$aptid = $apt[id];
echo "<tr><td>";
echo date('h:i A', strtotime($row[time]));
echo "</td><td>$apt[name]</td></td><td>$apt[phone]</td><td>$apt[phone2]</td><td>$apt[src]</td><td>$apt[coach]</td><td>$apt[comments]</td><td>";
if($aptid != ''){
echo "<a href='index.php?date=$date&apptid=$aptid&action=delete'>Delete</a> <a href='index.php?date=$date&apptid=$aptid&action=x'>X</a> <a href='index.php?date=$date&apptid=$aptid&action=ns'>NS</a>";
}
echo "</td></tr>";
}
}
You have to run another nested loop inside.
Upvotes: 5
Reputation: 2118
mysql_fetch_array will only fetch one row of data. From the php manual:
mysql_fetch_array — Fetch a result row as an associative array, a numeric array, or both
That means you need to loop to get multiple appointments, just like the first loop:
while($apt = mysql_fetch_array($query2)) {
$aptid = $apt[id];
echo "<tr><td>";
echo date('h:i A', strtotime($row[time]));
echo "</td><td>$apt[name]</td></td><td>$apt[phone]</td><td>$apt[phone2]</td><td>$apt[src]</td><td>$apt[coach]</td><td>$apt[comments]</td><td>";
if($aptid != ''){
echo "<a href='index.php?date=$date&apptid=$aptid&action=delete'>Delete</a> <a href='index.php?date=$date&apptid=$aptid&action=x'>X</a> <a href='index.php?date=$date&apptid=$aptid&action=ns'>NS</a>";
}
echo "</td></tr>";
}
Upvotes: 0