Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pobieranie wartosci zmiennej
Forum PHP.pl > Forum > Przedszkole
blizniak
mam taki kod. pobiera on jakies dane z bazy i wyswietla je w takim polu wybory

  1. <?php
  2.  
  3. echo &#092;"<SELECT>\"; 
  4. $wynik = mysql_query(&#092;"select tytul from kategorie\");
  5.  
  6.  
  7. while($rzad = mysql_fetch_row($wynik))
  8. {
  9. $id = addslashes($rzad[0]);
  10. echo '<option>'.$id;
  11. }
  12.  
  13. echo &#092;"</SELECT>\"; 
  14.  
  15. echo &#092;"$wyswietl\";
  16.  
  17. ?>

chodzi mi o cos takiego zeby ta zmienna wyswietl pokazywala mi to co jest aktualnie wybrane w select jezeli zmienie cos w select to zmienna tez sie zmienia
help me
SongoQ
A w czym chesz to zrobic w js czy php, bo sa 2 mozliwosci.
blizniak
w php
SongoQ
  1. <?php
  2.  
  3. echo '<SELECT name=\"abc\">'; 
  4. $wynik = mysql_query(&#092;"select tytul from kategorie\");
  5.  
  6. while($rzad = mysql_fetch_row($wynik))
  7. {
  8. $id = addslashes($rzad[0]);
  9. echo '<option>'.$id;
  10. }
  11.  
  12. echo &#092;"</SELECT>\"; 
  13.  
  14. $wyswietl = $_POST['abc'];
  15.  
  16. echo $wyswietl;
  17.  
  18. ?>
blizniak
no wlasnie tak samo robilem juz wczesniej i to nie dziala bo jak ta zmienna wyswietlam to nic tam nie ma
nospor
post od selecta zawiera jego wartości. Wartości określa się w option w value. Tutaj w kodzie tego brakuje. POwinno być:
  1. <?php
  2.  
  3. echo '<SELECT name=\"abc\">'; 
  4. $wynik = mysql_query(&#092;"select  tytul from kategorie\");
  5.  
  6. while($rzad = mysql_fetch_row($wynik))
  7. {
  8.   $id = addslashes($rzad[0]);
  9.   echo '<option value=\"'.$id.'\">'.$id.'</option>';
  10. }
  11.  
  12. echo &#092;"</SELECT>\"; 
  13.  
  14. $wyswietl = $_POST['abc'];
  15.  
  16. echo $wyswietl;
  17.  
  18. ?>
SongoQ
A w formularzu jaka metode wysylania masz post czy get? Bo pewnie w tym jest problem.

  1. <?php
  2.  
  3. echo '<FROM name=\"a\" method=\"post\" action=\"index.php\">
  4. <SELECT name=\"abc\">'; 
  5. $wynik = mysql_query(&#092;"select tytul from kategorie\");
  6.  
  7. while($rzad = mysql_fetch_row($wynik))
  8. {
  9. $id = addslashes($rzad[0]);
  10. echo '<option value=\"'.$id.'\">'.$id.'</option>';
  11. }
  12.  
  13. echo &#092;"</SELECT>
  14. </FORM>&#092;"; 
  15.  
  16. $wyswietl = $_POST['abc'];
  17.  
  18. echo $wyswietl;
  19.  
  20. ?>


Cos sie tagi nie pozamykaly
blizniak
robilem metoda post
ale teraz wziolem ten twoj kod wkleilem no i nietety tez nie wyswietla
nospor
No bo kodów tak bezmyslnie się nie wkleja. Songoq pomylil form z from biggrin.gif.
Poprawka:
  1. <?php
  2.  
  3. echo '<FORM name=\"a\" method=\"post\" action=\"index.php\"><SELECT name=\"abc\">'; 
  4. $wynik = mysql_query(&#092;"select  tytul from kategorie\");
  5.  
  6. while($rzad = mysql_fetch_row($wynik))
  7. {
  8.   $id = addslashes($rzad[0]);
  9.   echo '<option value=\"'.$id.'\">'.$id.'</option>';
  10. }
  11.  
  12. echo '</SELECT><input type=\"submit\" value=\"go\" /></FORM>'; 
  13.  
  14. $wyswietl = $_POST['abc'];
  15.  
  16. echo $wyswietl;
  17.  
  18. ?>
blizniak
akurat ten blad zauwazylem. ale teraz zauwazylem ze zapisuje mi ta wartosc ale dopiero po nacisnieciu przycisku 'go' a mi chodzi o to zeby bylo to przed przycisnieciem tego przycisku poniewaz mam cos takiego
  1. <?
  2.  
  3. echo '<FORM name=\"a\" method=\"post\" action=\"index.php\"><SELECT name=\"abc\">'; 
  4. $wynik = mysql_query(&#092;"select tytul from kategorie\");
  5.  
  6. while($rzad = mysql_fetch_row($wynik))
  7. {
  8. $id = addslashes($rzad[0]);
  9. echo '<option value=\"'.$id.'\">'.$id.'</option>';
  10. }
  11.  
  12. echo '</SELECT>';
  13.  
  14. $wyswietl = $_POST['abc'];
  15.  
  16. //echo $wyswietl;
  17.  
  18.  
  19. echo'<SELECT name=\"ab\">'; 
  20. $wynik = mysql_query(&#092;"select p.podkategorie from kategorie k, podkategorie p where k.id_kat=p.id_
    k
  21. t and k.tytul = '$wyswietl'\");
  22.  
  23.  
  24.  
  25. while($rzad = mysql_fetch_row($wynik))
  26. {
  27. $id = addslashes($rzad[0]);
  28. echo '<option value=\"'.$id.'\">'.$id.'</option>';
  29. }
  30.  
  31. echo '</SELECT>';
  32.  
  33.  
  34.  
  35.  
  36. echo'<input type=\"submit\" value=\"go\" /></FORM>'; 
  37.  
  38.  
  39.  
  40. ?>

tak wiec do tej zmiennej musi byc pobierana wartosc przed przycisnieciem tego przycisku poniewaz zmienna ta wykorzystuje w drugim zapytaniu i dopiero pozniej przyciskam przycisk 'go'. I takie pytanie czy w ogole da sie to zrobic ?
nospor
No bo widzisz: tablica $_POST jest wypełniana dopiero po wysłaniu formularza. Jeśli chcesz mieć początkową wartość selecta, to jeżeli sam w kodzie nie zaznaczach konkretnej wartości, to jest to pierwsza wartość.
A więc:
  1. <?php
  2.  
  3. echo '<FORM name=\"a\" method=\"post\" action=\"index.php\"><SELECT name=\"abc\">'; 
  4. $wynik = mysql_query(&#092;"select tytul from kategorie\");
  5.  
  6. $wyswietl=null;
  7. while($rzad = mysql_fetch_row($wynik))
  8. {
  9. $id = addslashes($rzad[0]);
  10. if ($wyswietl===null) $wyswietl=$id;
  11. echo '<option value=\"'.$id.'\">'.$id.'</option>';
  12. }
  13.  
  14. echo '</SELECT>';
  15.  
  16. if (isset($_POST['abc']))
  17. $wyswietl = $_POST['abc'];
  18.  
  19. ?>
blizniak
ok teraz juz prawie jest to o co mi chodzi czyli jak wlacze strone to w tym drugim select pokazyuje mi dobrze ale gdy zmienie cos w pierwszym select to w 2 mi sie nie zmienia jest nadal to samo Czy jest to mozliwe aby to sie zmienialo bez odswiezania strony , czy mozna to jakos w petli zrobic questionmark.gif
nospor
Możesz submit pod selecta podczepić i po zmienieniu wartości stronkę ci odświerzy:
<select name="abc" onchange="submit();" >

MOżesz rónież pobawić się w js. Ale do tego będziesz musiał ładować za każdym razem do stronki zawartość drugiego selecta dla wszystkich możliwych wartości z selecta pierwszego, a to może okazać się mało wydajne (nie wiem czy masz duż tych danych).

Tak więc może pozostań przy pierwszym rozwiązaniu
blizniak
a ma ktos pomysl jak to zrobic inaczej bo ja chcialem poprzez formularz dodac do bazy jakies dane i te selecty mialy byc do tego aby dodac to w odpowiednie miejsce tz jak np wybralem w tym 2 select jakas podkategorie to te dane dodaje mi do wybranej podkategori.
nospor
No ale w czym problem?
Dodajesz przycisk dodaj
<input type="submit" name="add" value="dodaj" />

A w skrypcie na końcu:

  1. <?php
  2.  
  3. //...to co wcześniej
  4.  
  5. if (isset($_POST['add']))
  6. {
  7. //tutaj akcja wpisu do bazy
  8. }
  9.  
  10. ?>


W przypadku gdy wciśniesz przycisk go lub bedziesz mial submita przez selecta (moje wczesniejsze rozwiązanie) to wykona ci się zmiana drugiego selecta. Dopiero gdy wciśniesz przycisk dodaj to ci to zapisze do bazy
SongoQ
@nospor Dzieki za znalezieniu bledu.

@blizniak Mozesz zastosowac to co podal @nospor lub pokombinowac z dynamiczna warstwo i wtedy bys sobie dane wczytywal/zapisywal a w user by nie "zauwazył" przeladowania strony.
blizniak
dzieki wszystkim za pomoc winksmiley.jpg
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.