Это потому, что вы возвращаетесь из функции в конце первой итерации. Попробуйте:
function GetEventsList() {
$result = mysql_query("SELECT * FROM `events`") or trigger_error(mysql_error());
$push = '';
while ($row = mysql_fetch_array($result)) {
foreach($row AS $key => $value) {
$row[$key] = stripslashes($value);
}
$id = $row['id'];
$en = $row['name'];
$endt = $row['date'];
$push .= "<option value=$id>$en - $endt</option>";
}
return $push;
}
На заметку: если бы вы использовали хорошее форматирование / отступ, вам было бы намного легче это определить.
Кроме того, вы уверены, что вам нужно использовать stripslashes()
?