Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z polem typu select
Forum PHP.pl > Forum > Przedszkole
kotek2185
Witam, otóż mam problem chociaż nie wiem jak to wytlumaczyć dobrze...mam tabele użytkownicy ktora jest uzupełniana formularzem z polami text oraz jedno pole województwo za pomocą pola select pociągnięte z tabeli wykazów 'województwa'. I chciałbym edytować poszczególny rekord takiego delikwenta, użytkownika i nie moge poradzić sobie z tym aby na stronce edycji widniało ponownie pole select z województwami do wyboru i aby dotychczasowe województwo było jako opcja zaznaczona (pierwsza z góry). Tabela użytkownicy ma postać: id_user, id_woj, imie etc. tabela województwa: id_woj1, nazwa. tab uzytkownicy uzupełniają id_woj liczbą id_woj1. Skleiłem coś takiego jeżeli chodzi o edycje:
  1. <form name="form1" method="post" action="user_edit_script.php">
  2. <?php
  3. $nr_woj = $rows['id_woj']; // <-- jest to id wojewóztwa które jest zapisane dla danego użytkownika przekazane z innej tabeli
  4. $result2=mysql_query("SELECT * FROM wojewodztwa WHERE '$nr_woj'=id_woj1");
  5. $rows2=mysql_fetch_array($result2);
  6.  
  7. $wym = @mysql_query('SELECT id_woj1, nazwa FROM wojewodztwa order by id_woj1 asc');
  8. ?>
  9. <select name="aid" size="1">
  10. <option selected value=""><?php echo $rows2['nazwa']; ?></option>
  11. <option value="">---------</option>
  12.  
  13. <?php
  14. while ($wym1 = mysql_fetch_array($wym)) {
  15. $aid = $wym1['id_woj1'];
  16. $aname = htmlspecialchars($wym1['nazwa']);
  17. echo "<option value='$aid'>$aname</option>\n";
  18. }
  19. ?>
  20. </select>
  21. </form>

Powyższy kodzik działa, na okrętke troche bo wyrzuca mi 'na górze' dane województwo i poniżej całą liste, ale chciałbym by było tak, że jeżeli zmiany będa dotyczyć tylko imienia itp a województwo bez zmian to nie trzeba ponownie wybierać z listy... a teraz niestety tak jest...:/
Sęk w tym że zwraca mi id_woj tylko nie wiem jak to połączyć z id_woj1 i pokazać w select nazwe województwa?

Sory za zawiłość tematu ale nie wiedziałęm jak ująć:/ z góry dzięki za pomoc
Rysh
Po pierwsze, po co robisz 2 razy takie same zapytanie do bazy danych?
Po drugie, Twój problem w bardzo łatwy sposób można rozwiązać dodając jeden warunek:
  1. if($nr_woj == $aid) {
  2. echo '<option value='$aid' selected="selected">$aname</option>';
  3. } else {
  4. echo '<option value='$aid'>$aname</option>';
  5. }

Po trzecie, po co dajesz htmlspecialchars na zmianną $wyml['nazwa'] ?
kotek2185
coś nie idzie....nie wiem juz gdzie błąd .... mam tak:
  1. <?php
  2. $nr_woj = $rows['id_woj']; // <-- jest to id wojewóztwa które jest zapisane dla danego użytkownika przekazane z innej tabeli
  3. print("<BR/>".$nr_woj."<br/>"); // <-- zwraca dobra wartość
  4. $wym = @mysql_query('SELECT id_woj1, nazwa FROM wojewodztwa order by id_woj1 asc');
  5. ?>
  6. <select name="aid" size="1">
  7. <?php
  8. while ($wym1 = mysql_fetch_array($wym)) {
  9. $aid = $wym1['id_woj1'];
  10. $aname = $wym1['nazwa'];
  11. echo "<option value='$aid'>$aname</option>\n";
  12. }
  13. if($nr_woj == $aid) {
  14. echo "<option value='$aid' selected>$aname</option>"; // <-- jeśli tutaj wrzuce selected="selected" wywala mi błąd skladniowy?
  15. } else {
  16. echo "<option value='$aid'>$aname</option>";
  17. }
  18. ?>
  19. </select>


ad 1 i ad 3 dziwne przyzwyczajenie jakieś mam, coś skopiuje potem zostawie...podpowie ktoś jak to złożyć w całość?
Rysh
No widzisz bo sam Ci z błędem napisałem, poprawiona wersja:
  1. if($nr_woj == $aid) {
  2. echo "<option value=\"". $aid ."\" selected=\"selected\">". $aname ."</option>";
  3. } else {
  4. echo "<option value=\"". $aid ."\">". $aname ."</option>";
  5. }
kotek2185
uff udało się..dzięki za pomoc...już miałem pisać że coś nie gra itd... ale manual pomógł...jednak trzeba dużo czytać by coś zrozumiećsmile.gif

temat do zamknięcia
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.