Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP] problem formularz <option selected>
Forum PHP.pl > Forum > Przedszkole
limonides
  1. <?
  2. $query=" SELECT * FROM kat_dzialalnosci";
  3. $result=mysql_query($query);
  4. $num=mysql_numrows($result);
  5. $wynik = mysql_query("SELECT * FROM firma WHERE id='$sklep'") or die('Błąd zapytania');
  6. $r = mysql_fetch_assoc($wynik);
  7. $kategoria=$r['kategoria']-1;
  8. $promocja=$r['promocja'];
  9. $i=0;
  10. while ($i < $num) {
  11. $nazwa=mysql_result($result,$i,"nazwa");
  12. if ($i==$kategoria) {
  13. echo "<option selected>$nazwa<option>";
  14. }
  15. else {
  16. echo "<option>$nazwa</option>";
  17. }
  18. $i++;
  19. }
  20. ?>


wyświetlam kategorie z bazy, domyślnie ustawiam kategorie taką do jakiej jest przypisana firma którą edytuję.
mój problem polega na tym iż zawsze po tej domyślnie ustawionej kategorii mam jedno puste pole w liście i dalej już leci normalnie.



może ktoś naprowadzi mnie jak to zlikwidować questionmark.gif
pozdrawiam i z góry dziękuje za wszelką pomoc.
_Borys_
Problem w tym, że tutaj liczysz od zera a w bazie masz prawdopodobnie od jeden.
Zmień na
  1. $i=1;

limonides
jak tak zmienię to nie wyświetla mi pierwszej kategorii :/
białe pole jest nadal :/

czy może mi ktoś pomóc ?
_Borys_
Pewnie przy zerowym $i wywala pustą nazwę.
a poza tym nie rozumiem dlaczego przy
  1. $kategoria=$r['kategoria']-1;

jest -1 ?
Ostatecznie można zastosować
  1. if ($nazwa != '') {
  2. echo "<option>$nazwa</option>";
  3. }

ale to tylko ukrywanie dziury i nie tędy droga.
Nie znam struktury twojej bazy a więc mogę się tylko domyślać,że gdzieś jest dziura, albo przy pobieraniu rekordów albo przy wypisywaniu.
Spróbuj wylistować każdą zmienną tego kodu aby sprawdzić gdzie jest dziura np:
  1. if ($i==$kategoria) {
  2. echo $i.' - '.$kategoria.' - '.$nazwa.'<br>';
  3. echo "<option selected>$nazwa<option>";
  4. }
  5. else {
  6. echo "<option>$nazwa</option>";
  7. }
  8. $i++;
  9. }

niech wywala każdą zmienną na ekran, czarno na białym i wtedy będzie widać gdzie brakuje nazwy.
Ale najpierw zakomentuj znaczniki<select> i </select> weź w komentarz tylko te znaczniki bo nie będzie widać listowania.
Najlepszy debugger to napisany przez siebie nawet taki prostacki jak podpowiadam.
d3ut3r
  1. if ($i==$kategoria) {
  2. echo $i.' - '.$kategoria.' - '.$nazwa.'<br />';
  3. echo "<option selected=\"selected\">$nazwa</option>";
  4. }
  5. else {
  6. echo "<option>$nazwa</option>";
  7. }
  8. $i++;
  9. }


nie zamknąłeś tagu option smile.gif
_Borys_
Cytat
  1. if ($i==$kategoria) {
  2. echo $i.' - '.$kategoria.' - '.$nazwa.'<br />';
  3. echo "<option selected=\"selected\">$nazwa</option>";
  4. }
  5. else {
  6. echo "<option>$nazwa</option>";
  7. }
  8. $i++;
  9. }


nie zamknąłeś tagu option smile.gif

Własnie biggrin.gif, i to jest ten problem, to się zgadza, przez jeden ukośnik tyle główkowania biggrin.gif
limonides
wielkie dzieki wstydnis.gif
kurza ślepota wstydnis.gif
jeszcze raz serdecznie dziękuje i pozdrawiam

temat można zamknąć
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.