2012-03-25 2 views
1

У меня есть странная проблема. В основном моя страница работает отлично, но после небольшого количества php, все после того, как эти строки не загружают слишком страницу.Некоторые PHP-коды нарушают остальную страницу страницы

<?php 


//GET SCHOOLS 
$sql = "SELECT `id` FROM `school`"; 
$query = mysql_query($sql) or die(mysql_error()); 
$numschools = mysql_num_rows($query); 

echo "<select id=\"schoolselect\" class=\"schoolselect\" value=\"Select School\"> 
<option id='selectschool' value = \"select\" name=\"select\">Select A School</option> 

"; 
while($result = mysql_fetch_array($query) or die(mysql_error())) 
{ 

    $school = $result['id']; 
    echo "<option value = \"$school\" name=\"$school\">".$school ."</option>"; 


} 
echo "</select>"; 

?> 

все до того, что работает, РНР часть работает, но ничего после этого эхо «выберите» оленья кожа

любая помощь будет удивительно

+2

Включите отчет об ошибках и посмотрите, есть ли у вас ошибки в вашем скрипте. – Bojangles

+0

Кроме того, если вы выбираете только поле «id» из таблицы, вы получите только опции выбора с числовыми данными (если «id» является полем автоматического увеличения в вашей таблице mysql). Возможно, вы захотите изменить это на что-то вроде «select id, name from school». Я согласен с JamWaffles, но вы должны проверить свой журнал ошибок веб-сервера для каких-либо подробностей. – iandouglas

ответ

4

Никогда не называйте die(mysql_error()) внутри цикла выборки. mysql_fetch_array() возвращает FALSE, когда больше нет строк, поэтому, когда достигнута последняя строка, вызывается die(), и ваш скрипт будет завершен, оставив </select> незакрытыми. Вы не получите сообщение об ошибке, но вы останетесь с неполным HTML, который не будет отображаться должным образом в браузере.

// Don't call die(mysql_error()) in a fetch loop! 
while($result = mysql_fetch_array($query)) 
{ 
    $school = $result['id']; 
    echo "<option value = \"$school\" name=\"$school\">".$school ."</option>"; 
} 
+1

Обновляется, чтобы увидеть 'mysql_error()' used * too much * вместо обычного * вообще не *. – JJJ

+0

Спасибо, Это было решение. :) Примите ответ, когда время закончится :) – nmyster

0

Скорее всего, ваш скрипт or die() ИНГ внутри <select> тега, который невидим в браузере.

Просмотрите источник страницы, и вы, скорее всего, увидите фатальную ошибку PHP или сообщение die в конце.

EDIT: Или прочитайте ответ Майкла, потому что я забыл, как все работает. Duh: p По крайней мере, этот ответ поможет вам найти связанные проблемы в будущем.

Смежные вопросы