I would solve it with a left join
like this:
<?php
$query = $db->prepare(
"SELECT *, preorder.title, preorder.number " .
"FROM contact " .
"LEFT JOIN preorder ON (contact.contactid = preorder.contactid) " .
"WHERE type = ? ORDER BY contactid, date")
or die(mysqli_error($db));
$type = "order";
$query->bind_param('s', $type);
$query->execute();
$query->store_result();
$query->bind_result($id, $name, $email, $date, $title, $number);
$last_id = false;
while ($query->fetch()) {
$date = strtotime($date);
$date = date("F jS Y", $date);
if ($contactid != $last_id) {
?>
From: <?php echo $name ?>
<input type="Checkbox" name="checkbox[]"
id="checkbox[]" value="<? echo $contactid; ?>">
<p>
<?php
echo $comments
?>
</p>
<?php
echo $date;
}
echo $title, $number;
$last_id = $contactid;
}
?>