2009-05-25 6 views
0

Ich versuche, eine Funktion zu kodieren, die eine Dropdown-Liste von Schulnamen erzeugt, die aus einer Datenbank ausgewählt wurden. Es ist gut, ein Dropdown zu erstellen, aber es fügt nichts in das Drop-down-Menü ein. Hier ist der Code:Wie erstellen Sie ein Formular-Dropdown aus einer Datenbanktabelle in PHP?

function schoolDD($name, $selected){ 
    $select = ''; 
    if($selected != null) 
    { 
     $select = $selected; 
    } 

    $qry = "select * 
      from school 
      order by name, id 
      where display = 'Y'"; 

    $schools = _execQry($qry); 


    $html = '<select name="'.$name.'" >'; 

    foreach($schools as $s){ 
     $html .= '<option value="'. $s['id'] .'"'; 
     if($select == $s['name']){ 
     $html .= 'selected="selected"'; 
     } 
     $html .= '>'. $s['name'] . '</option>'; 

    } 
    $html .= '</select>'; 
    return $html; 
} 

Antwort

0

Problem gelöst. Es lag daran, dass ich in der Abfrage vorher eine Bestellung hatte. Es hätte sein müssen:

$qry = "select * 
      from school 
      where display = 'Y' 
      order by name, id"; 

Nicht:

$qry = "select * 
      from school 
      order by name, id 
      where display = 'Y'"; 
+0

:) Sie sollten wahrscheinlich Ihre _execQry Funktion ändern, eine Ausnahme zu werfen, wenn die Abfrage ungültig ist. Suchen Sie nach mysql_error –

+0

Es überprüft mysql_error, die es dann eine E-Mail an mich mit dem Problem sendet. Was es mir dafür sagte, war: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von 'where display =' Y '' in Zeile 4 entspricht, aber ich konnte das Problem dort nicht herausfinden. –

0

sieht nicht gut aus, aber schwer zu sagen, ohne zu wissen, was _execQry tut.

Wenn Sie die Zeile

print_r($schools); 

hinzufügen, nachdem Sie _execQry rufen, abrufen Sie auf jeden Fall ergibt sich aus der Datenbank?

+0

_execQry führt die Abfrage nur so aus, dass alle Fehler auf einen Punkt fallen. _execQry funktioniert gut. Ich benutze es seit über einem Jahr ohne irgendwelche Probleme. –

0

Ich bin froh, dass Sie Ihre Antwort gefunden haben, aber ich haaattee PHP und HTML gemischt so zusammen.

was tsomethign so ...

<?php 

$schools = getSchools(); 
$selectedSchool = 'sfgsfgd'; 
$name = 'asdfsafd'; 

?> 

<select name="<?= $name ?>"> 
<?php foreach($schools as $s): ?> 
    <option value="<?= $s['id'] ?>"<?php if($s['name'] == $selectedSchool): ?> selected="selected"<?php endif; ?>><?= $s['name'] ?></option> 
</select>