2012-03-25 8 views
1

Ich habe ein seltsames Problem. Grundsätzlich funktioniert meine Seite gut, aber nach ein wenig PHP, alles nach diesen Zeilen laden Sie nicht die Seite.Einige PHP-Code bricht den Rest der Seite

<?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>"; 

?> 

alles vor das funktioniert, die PHP-Teil funktioniert, aber etwas nach diesem echo „wählen Sie“ tut

jede mögliche Hilfe würde

+2

Aktivieren Sie die Fehlerberichterstattung, und überprüfen Sie, ob Fehler in Ihrem Skript auftreten. – Bojangles

+0

Wenn Sie nur das Feld 'id' aus der Tabelle auswählen, erhalten Sie nur ausgewählte Optionen mit numerischen Daten (vorausgesetzt, 'id' ist ein Auto-Inkrement-Feld in Ihrer mysql-Tabelle). Vielleicht möchten Sie dies in etwas wie "ID auswählen, Name aus der Schule" ändern. Ich stimme JamWaffles jedoch, sollten Sie Ihr Web-Server-Fehlerprotokoll für Details überprüfen. – iandouglas

Antwort

4

nie die(mysql_error()) rufen in einer Schleife holen erstaunlich. mysql_fetch_array() gibt FALSE zurück, wenn keine weiteren Zeilen verfügbar sind. Wenn die letzte Zeile erreicht ist, wird die() aufgerufen und Ihr Skript wird beendet, wobei </select> nicht geschlossen bleibt. Sie erhalten keine Fehlermeldung, aber Sie werden unvollständigen HTML-Code erhalten, der im Browser nicht richtig dargestellt wird.

// 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

Es ist erfrischend zu sehen, dass mysql_error() 'zu viel * anstelle des üblichen * gar nicht * verwendet. – JJJ

+0

Danke, das war die Lösung. :) Wird Antwort annehmen, wenn die Zeit abgelaufen ist :) – nmyster

0

Die Chancen stehen gut Ihr Skript ist or die() innerhalb des <select> Tag ing, die im Browser unsichtbar ist.

Sehen Sie sich die Quelle der Seite an, und Sie werden wahrscheinlich am Ende einen schwerwiegenden PHP-Fehler oder eine die Nachricht sehen.

EDIT: Oder lesen Sie Michael's Antwort, denn ich habe vergessen, wie die Dinge funktionierten. Duh: p Wenigstens diese Antwort wird dir helfen, ähnliche Probleme in der Zukunft zu finden.

Verwandte Themen