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