Optionfeld schon ausgewählt
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
abstract
ankommen
auftritt
ausgeben
aussehen
code
datenbank
ersten drei
fehler
folgendes problem
kategorie
problem
re
richtige kategorie
stehen
url
vergleichen
versuch
vorstellen
- 
    
    Hallo,
 
 ich habe das folgende Script zum Ändern einer ref="/tag/kategorie">Kategorie:
 
 $kategorie_query = "SELECT * FROM dl_rezept_kategorien"; $res = $abstract->query ( $kategorie_query ); $i=1; while ( $kategorie = $abstract->fetchRow () ) { if ($i == $kategorie_id) { echo '<option value="' . $kategorie ['id'] . '" selected>' . $kategorie ['name'] . '</option>'; } else { echo '<option value="' . $kategorie ['id'] . '">' . $kategorie ['name'] . '</option>'; } $i++; }
 
 In der Datenbank steht eine Kategorie ID, und das Script gibt die aktuelle Kategorie als selected aus.
 
 Folgendes Problem gibt es mit diesem Script:
 
 Wenn die Kategorie IDs nicht fortlaufend in der Datenbank stehen, bleibt das Script schon bei der ersten Kategorie stehen.
 Warum ist das so?
 
 Beispiel:
 
 1|Testkategorie1
 2|Testkategorie2
 3|Testkategorie3
 .....
 7|Testkategorie7
 
 Bei den ersten drei zeigt das Script die richtige Kategorie bei der Änderung an, aber wenn die 7. Kategorie ausgewählt ist, nicht.
- 
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden! lima-city: Gratis werbefreier Webspace für deine eigene Homepage 
- 
    
    Hallo php-oop!
 
 Wie bleibt das Script stehen? Gibt es einen Fehler?
 
 Du könntest bei der Schleife ein debugging einbauen:
 
 while ( $kategorie = $abstract->fetchRow () ) { echo $kategorie_id.'<br>';
 
 So kann man sehen ob nicht genügend Werte aus der Datenbank kommen oder etwas anderes der Fehler ist.
- 
    
    Hallo php-oop,
 
 sehe ich das richtig, dass du die Kategorie standardmäßig willst, die die id $kategorie_id hat?
 
 Ist es dann nicht sinnlos, einen Zähler $i hochzuzählen und damit zu vergleichen?
 Müsste der Code dann nicht eher so aussehen?
 $kategorie_query = "SELECT * FROM dl_rezept_kategorien"; $res = $abstract->query ( $kategorie_query ); while ( $kategorie = $abstract->fetchRow () ) { if ($kategorie['id'] == $kategorie_id) { echo '<option value="' . $kategorie ['id'] . '" selected>' . $kategorie ['name'] . '</option>'; } else { echo '<option value="' . $kategorie ['id'] . '">' . $kategorie ['name'] . '</option>'; } }
 
 Ich kann mir zwar nicht vorstellen, dass das dein Problem behebt, aber da es ja bei fortlaufenden nicht auftritt, und $i auch fortlaufend ist, würde ich es auf einen Versuch ankommen lassen...
 
 Ansonsten lass dir, wie maxplus schon gesagt hat, am Besten mal alle Werte, die in der Abfrage drinstehn, ausgeben...
- 
    
    Ja, das ist richtig !
 
 Ich habe es eben mit deinem Code probiert, jetzt funktioniert alles, wie es soll ;)
 
 Danke für deine Hilfe !
 
 fr34qy schrieb: 
 Hallo php-oop,
 
 sehe ich das richtig, dass du die Kategorie standardmäßig willst, die die id $kategorie_id hat?
 
 Ist es dann nicht sinnlos, einen Zähler $i hochzuzählen und damit zu vergleichen?
 Müsste der Code dann nicht eher so aussehen?
 $kategorie_query = "SELECT * FROM dl_rezept_kategorien"; $res = $abstract->query ( $kategorie_query ); while ( $kategorie = $abstract->fetchRow () ) { if ($kategorie['id'] == $kategorie_id) { echo '<option value="' . $kategorie ['id'] . '" selected>' . $kategorie ['name'] . '</option>'; } else { echo '<option value="' . $kategorie ['id'] . '">' . $kategorie ['name'] . '</option>'; } }
 
 Ich kann mir zwar nicht vorstellen, dass das dein Problem behebt, aber da es ja bei fortlaufenden nicht auftritt, und $i auch fortlaufend ist, würde ich es auf einen Versuch ankommen lassen...
 
 Ansonsten lass dir, wie maxplus schon gesagt hat, am Besten mal alle Werte, die in der Abfrage drinstehn, ausgeben...
- 
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden! lima-city: Gratis werbefreier Webspace für deine eigene Homepage 
