Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]przekazanie zamiennej do listy rozwijanej
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam.
Mam skrypt który pobiera dane i przekazuje je do pliku gdzie jedna ze zmiennych ma być polem selected w liście rozwijanej. Siedzę na tym jakiś czas i kombinuje, ale coś nie chce mi wyjść. Czy może ktoś doświadczony rzucić na to okiem gdzie jest błąd:
Pytanie na podstawie przesłanego id z innego pliku
  1. <?php
  2. $file="edycja.php";
  3. include('cookie.php');
  4. include('connect2.php');
  5. $id = $_GET['id'];
  6. $sql3 = 'select id, id_lek, bad_usg, nazwisko, imie, rok_ur, opis, termin,nazwisko_imie,now from usg_opis join usg using (id_usg)
  7. join lekarze using (id_lek) where id='.$id;
  8. $rez3= mysqli_query($mysqli, $sql3);
  9. while ($rekord = mysqli_fetch_array($rez3, MYSQLI_ASSOC)) {
  10. $mid=$rekord['id_usg'];
  11. $nazwisko = $rekord['nazwisko'];
  12. $imie = $rekord['imie'];
  13. $rok_ur = $rekord['rok_ur'];
  14. $bad=$rekord['bad_usg'];
  15. $opis = $rekord['opis'];
  16. $termin = $rekord['termin'];
  17. $lekarz = $rekord['nazwisko_imie'];
  18. $now=$rekord['now'];
  19. }

Przekazanie zmiennych do formularza o stałych polach:
  1. echo "<form method=\"POST\" form action=\"".$file."\">";
  2. echo "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"'.$id.'\">";
  3. echo "<table><tr><td>Nazwisko:</td>
  4. <td><input type=\"text\" name=\"nazwisko\" VALUE=\"$nazwisko\"size=\"30\" maxlength=\"30\"></input></td></tr>
  5. <tr><td>Imie:</td>
  6. <td><input type=\"text\" name=\"imie\" VALUE=\"$imie\" size=\"30\" maxlength=\"30\"></input></td></tr>
  7. <TR><TD>Rok Urodzenia:</TD><TD><INPUT TYPE=\"text\"
  8. NAME=\"rok_ur\" VALUE=\"$rok_ur\"MAXLENGTH=\"20\"></TD></TR>
  9. <tr><td>Badanie:</td><td>";

I do tego momentu wszystko działa.
Dalej jest już tylko gorzej. Mam zmienną którą chcę przekazać do listy rozwijanej.
  1.  
  2. echo "<select name=\"bad\">";
  3. $sql2= "select id_usg, bad_usg from usg order by 2";
  4. $rez2= mysqli_query($mysqli, $sql2);
  5. while ($nowaTab=mysqli_fetch_array($rez2, MYSQLI_ASSOC))
  6. {
  7. $mid = intval($nowaTab['id_usg']);
  8. $badanie=$nowaTab['bad_usg'];
  9. echo"<option value=\"".$mid."\">".$badanie."</option>";
  10. echo"<option selected = \"selected\">".$bad."</option>";
  11. }
  12. echo "</select></tr>";

I nie bardzo wiem jak mogę "wymusić" żeby formularz pokazywał tą konkretną zmienną w polu wybranym jako domyślne. W momencie kiedy już zaznacza powiedzmy pole1 to niestety pole 1 znajduje się dokładnie w miejscu na końcu listy oraz poza tym, ze jest na końcu listy to znajduje się jako nieoznaczone pole w samej rozwijanej liście. W niektórych przypadkach pole11 jest powtarzane co każdy element listy rozwijanej. Wygląda to w ten sposób pole1 pole2 pole1 pole 3 itd... Nie bardzo wiem jak to można dalej ugryźć. Poproszę o pomoc.
Z góry dziękuję
smietek
  1. echo"<option selected = \"selected\">".$bad."</option>";

Jeśli to jest to pole, to zobacz gdzie ono się znajduje - w pętli.
Musisz dodać je tylko raz.
jacusek
No tak tylko w którym miejscu to zrobić? Dokładnie chyba w tym leży cały problem. Jak zrobie to w ten sposób:
  1. echo "<select name=\"bad\">";
  2. $sql2= "select id_usg, bad_usg from usg order by 2";
  3. $rez2= mysqli_query($mysqli, $sql2);
  4. while ($nowaTab=mysqli_fetch_array($rez2, MYSQLI_ASSOC))
  5. {
  6. $mid = intval($nowaTab['id_usg']);
  7. $badanie=$nowaTab['bad_usg'];
  8. "<option selected = \"selected\">".$bad."</option>";
  9. }

to w ogóle nie pokazuje mi listy.
Kiedy to pole wstawiam w ten sposób:
  1. echo "<select name=\"bad\">";
  2. echo"<option selected = \"selected\">".$bad."</option>";
  3. $sql2= "select id_usg, bad_usg from usg order by 2";
  4. $rez2= mysqli_query($mysqli, $sql2);
  5. while ($nowaTab=mysqli_fetch_array($rez2, MYSQLI_ASSOC))
  6. {
  7. $mid = intval($nowaTab['id_usg']);
  8. $badanie=$nowaTab['bad_usg'];
  9. //echo"<option selected = \"selected\">".$bad."</option>";
  10. }

Pokazuje mi tylko jedną opcję. Poza tym $bad jest przecież de facto zmienną spoza pętli i czy to w ogóle da się jakoś zrobić?


W takim z kolei przypadku
  1. echo "<select name=\"bad\">";
  2. $sql2= "select id_usg, bad_usg from usg order by 2";
  3. $rez2= mysqli_query($mysqli, $sql2);
  4. while ($nowaTab=mysqli_fetch_array($rez2, MYSQLI_ASSOC))
  5. {
  6. $mid = intval($nowaTab['id_usg']);
  7. $badanie=$nowaTab['bad_usg'];
  8. //podaje razem z numerem id usg. Bez tego nie dziala
  9. echo"<option value=\"".$mid."\">".$badanie."</option>";
  10. }
  11. echo"<option selected value= \"$mid3\">".$bad."</option>";
  12. echo "</select>";

żądane pole selected ląduje na koniec listy - co w tym przypadku jest akurat logiczne. Jak to w takim razie "wsadzić" do istniejącej pętli??

tzn cały problem polega na tym, że nie wiem jak mam wybrać i przekazać do pętli które pole ma zostać zaznaczone. Siedzę już nad tym od dwóch dni
sciana.gif
smietek
Skoro zmienna jest poza pętlą, to po co dodajesz pole domyślne do pętli? Kto Ci to kazał zrobić?
Jak sama nazwa wskazuje, pętla wykonuje się kilka razy, więc po co masz dodawać pole domyślne kilka razy do tej samej listy?
Czy ty w ogóle wiesz co robisz?

BTW: dlaczego się dziwisz, że w 2 pierwszych przykładach nie pokazuje Ci listy, jak nie zamknąłeś znacznika select?
jacusek
select był cały czas tylko go nie wstawiłem do kodu na forum - niechcący mi obcięło. wstydnis.gif Niemniej nie zmienia to faktu, że nadal nie wiem czy da się w liście rozwijanej "dołożyć" takie pole, które jest wynikiem jakiegoś konkretnego selecta z bazy danych. Zresztą próbowałem w pętli coś wywołać (tzn wstawić następną pętlę, ale też miałem cały czas jakieś błędy - tzn. wyskakiwały mi same głupoty.
Więc moje pytanie brzmi - Czy to się w ogóle da zrobić - bo zaczynam mieć poważne wątpliwości - tzn tak, żeby jedno z pól pętli było domyślne, ale nie zawsze to samo i zależne od wyboru jakieś zmiennej w innym formularzu.
Dzięki
smietek
Boże, przecież to jest proste...
  1. while($data = mysql_fetch_array($result)){
  2. echo '<option value="wartosc"';
  3. if($data['czy_domyslny'] == 1){
  4. echo ' selected';
  5. }
  6. echo '>Tutaj jakis tekst</option>';
  7. }

To najprostszy przykład jaki może być, po prostu banał.
Pomyśleć się nie chciało?
jacusek
no nie bardzo umiem to sobie wyobrazić bo przecież mam dwie zmienne. W selecct pokazują mi się dwie zmienne $badanie z pętli oraz $mid, a nie jedna i tutaj chyba leży cały problem. natomiast w przypadku o którym mówisz to z tego co rozumiem, chodzi tylko o jedną zmienną. Poza tym przykład dla mnie wcale nie jest taki banalny jak może dla Ciebie. Ja się po prostu zwróciłem o pomoc. To wszystko.

Poza tym chyba nie do końca dobrrze opisałem o co mi chodzi. Ta wartość domyślna ma być dynamiczna. Ze statyczną nie byłoby przecież problemu....
smietek
Przecież ten przykład który podałem wyżej pasuje do wszystkiego, niezależnie od tego ile zmiennych masz, możesz mieć ich nawet pięćset tysięcy a i tak zadziała - chyba, że nie o to Ci chodziło - musisz opisać DOKŁADNIE o co Ci chodzi...
A co do dynamizmu, przecież $data['czy_domyslny'], więc to ty ustalasz czy jest ustawione na 1 czy na 0.
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.