Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Pobieranie danych z bazy danych do listy rozwijalnej.
Vion
post
Post #1





Grupa: Zarejestrowani
Postów: 112
Pomógł: 2
Dołączył: 27.06.2008

Ostrzeżenie: (0%)
-----


Witam
Zrobiłem sobie taki skrypt który pozwala dodać menu które może należeć do dowolnego bloku. I teraz chcę umożliwić edycję danego menu, żeby użytkownik mógł wybrać z listy rozwijalnej blok do którego ma należeć menu po edycji. Ale ważne jest aby w liście rozwijalnej jako selected była zaznaczony blok przed edycją. Zrobiłem do tego taki skrypt

  1. <select name="blok_id">
  2.            <option value="<?php echo $row1['blok_id'];?>" selected>
  3.            
  4.            <?php echo $row1['blok_name'];?>
  5.            </option>
  6.            <?php
  7.            $wynik = mysql_query("SELECT * FROM engine_menu_blok");
  8.            while($row = mysql_fetch_assoc($wynik)) { ?>
  9.            <option value="<?php echo $row['blok_id'];?>"><?php echo $row['blok_name'];?></option>; <?php
  10.             } ?>
  11.    </select>


Ale wychodzi mi coś takiego że w liście rozwijalnej jest jako selected zaznaczona stara opcja, ale też jest w liście jako nowa opcja czyli 2 razy. Więc jak zrobić aby opcja zaznaczona w selected sie nie powtarzała ? Dla lepszego zrozumienia dodaję obrazek gdzie widać ten błąd. Opcja Menu Glowne wystepuje 2 dwukrotnie raz jako selected a drugi raz gdy z bazy są pobierane wszystkie opcje.

(IMG:http://img40.imageshack.us/img40/8311/beznazwy2gnq.jpg)
Go to the top of the page
+Quote Post
Daiquiri
post
Post #2





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Jeżeli musi tam być ten wynik górny (o ile dobrze rozumiem) to po prostu zrób warunek po while: jeżeli $row['blok_name'] = cośtam to nie rób nic, w innym przypadku wyświetl kolejny poziom listy. Ewentualnie jeżeli $row['blok_name'] = cośtam to wyświetlaj jako selected, a w innym przypadku normalnie (IMG:http://forum.php.pl/style_emoticons/default/party.gif) .
Go to the top of the page
+Quote Post
Miszazdw
post
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 1
Dołączył: 3.08.2009

Ostrzeżenie: (0%)
-----


Cytat(Vion @ 7.08.2009, 13:23:06 ) *
  1. <select name="blok_id">
  2.            <option value="<?php echo $row1['blok_id'];?>" selected>
  3.            
  4.            <?php echo $row1['blok_name'];?>
  5.            </option>
  6.            <?php
  7.            $wynik = mysql_query("SELECT * FROM engine_menu_blok");
  8.            while($row = mysql_fetch_assoc($wynik)) { ?>
  9.            <option value="<?php echo $row['blok_id'];?>"><?php echo $row['blok_name'];?></option>; <?php
  10.             } ?>
  11.    </select>


Popatrz na swój kod. Najpierw dajesz jedna opcje - na początku.

  1. <option value="<?php echo $row1['blok_id'];?>" selected>
  2.  
  3. <?php echo $row1['blok_name'];?>
  4. </option>


a później wszystko listujesz pętlą while. To logiczne ze pierwszy wpis pojawi się dwa razy. Tak na szybko zagnieźdź kolejną pętle w while, i wtedy if-a daj i po problemie. if($==1) {}.

Pozdrawiam
Go to the top of the page
+Quote Post
kefirek
post
Post #4





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $result = mysql_query("SELECT * FROM engine_menu_blok");
  3. $link = ""; $sel = "";
  4. while ($data = mysql_fetch_assoc($result)) {
  5. if (isset($site_links)) $sel = ($site_links == $data['blok_id'] ? " selected" : "");
  6. $link .= "<option value='".$data['blok_id']."'$sel>".$data['blok_name']."</option>\n";
  7. }
  8. echo "<select name='cat'  style='width:250px;'>$link</select>";
  9. ?>
Go to the top of the page
+Quote Post
Vion
post
Post #5





Grupa: Zarejestrowani
Postów: 112
Pomógł: 2
Dołączył: 27.06.2008

Ostrzeżenie: (0%)
-----



gdyby ktoś miał podobny problem to prezentuje tutaj rozwiązanie które dostałem na innym forum

  1. <select name="blok_id">
  2. <?php
  3. $wynik = mysql_query("SELECT * FROM engine_menu_blok");
  4. while($row = mysql_fetch_assoc($wynik)) { ?>
  5. <option value="<?php echo $row['blok_id'];?>" <?php echo $row1['blok_id']==$row['blok_id']?"selected":""; ?>><?php echo $row['blok_name'] ?></option>; <?php
  6. } ?>
  7. </select>


Ten post edytował Vion 13.08.2009, 19:31:59
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 21:09