Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: text w zależnosci od wybranej opcji
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Lonas
a takie pytanko, jak zrobić żeby po wybraniu kontrahenta automatycznie do pol pobraly sie jego dane.

mam taki select

  1. <?
  2. @$db = mysql_pconnect("localhost", "root");
  3. if (!$db)  
  4.     {     
  5.     print "wystąpił błąd w połączeniu";     
  6.     exit;  
  7.     }  
  8.  
  9. mysql_select_db("faktura"); 
  10.  
  11.  
  12. $query = "select nazwa from kontrahenci";
  13. $result = mysql_query($query); 
  14.  
  15.  
  16. echo "<select>";
  17. while($dane = mysql_fetch_array($result)){
  18.  echo "<option>$dane[0]</option>";
  19. }
  20. echo "</select>";
  21.  
  22.  
  23. ?>
nospor
do jakich pol?

Czy ja zawsze musze was za jezyk ciągac? Czy nie można od razu podac pełnych info zeby bylo wiadomo oco wam chodzi?
Lonas
Oki smile.gif sory jeszcze raz smile.gif

np wybieram sobie z select kontrahenta ( te dane są z bazy danych wyciagane ):

i chce żeby poniżej odrazu wyświetlały się jego dane.
czyli adres, nip i tak dalej smile.gif
nospor
To musisz zachaczyć o js.
Najpierw w php pobierasz wszytkie niezbędne dane o kontrahencie. Dane te zapisujesz do js w tablicy i potem w zaleznosci co wybierze ktos z selecta, takie dane pokazujesz. Mozna tez inaczej. To jedna z mozliwosci.

No i znowu rozdziele te posty i przeniose na forum js, gdyż tam raczej powinno sie znaleźć
Lonas
Znalazłem tutaj coś takiego :


Kod
<script type="text/javascript">
function ins(s) {
   document.getElementById("t").value=s.options[s.selectedIndex].value;
}
</script>


  1. HTML
  2. <select id="s" name="s" onchange="ins(this)">
  3. <option value="1">a</option>
  4. <option value="2">b</option>
  5. <option value="3">c</option>
  6. <option value="4">d</option>
  7. <input type="text" id="t" name="t" />


jak mogę to odnieść do danych z bazy danych ?
revyag
  1. <?php
  2. function ShowSel() {
  3. @$db = mysql_pconnect("localhost", "root");
  4. if (!$db)
  5. {  
  6. print "wystąpił błąd w połączeniu";  
  7. exit;
  8. }
  9. mysql_select_db("faktura"); 
  10. $query = "select nazwa from kontrahenci";
  11. $result = mysql_query($query); 
  12.  
  13. while($dane = mysql_fetch_array($result)){
  14.  echo '<option value="'$dane[0]'">'.$dane[0].'</option>';
  15. }
  16. }
  17.  
  18. ?>

Kod
<script type="text/javascript">
    function ins(s) {
        document.getElementById("t").value=s.options[s.selectedIndex].value;
    }
</script>

  1. <select id="s" name="s" onchange="ins(this)>
  2. <?php
  3. ShowSel();
  4. ?>
  5. </select><br /><br />
  6. <input type="text" id="t" name="t" />

Spróbuj tak snitch.gif
Lonas
A gdzie w kodzie jest wzmiana o tym jakie dane ma pobrać w zależności od kontrahenta ? smile.gif
revyag
Aha, sory myslałe że o coś innego chodzi snitch.gif . Funkcje js wywalasz.
Przed formularzem dajesz kod:
  1. <?php
  2. if(!isset($_POST["hid"]) || empty($_POST["hid"])) {
  3. //
  4. $dane = "";
  5. } else {
  6. //pobieranie danych kontrahenta
  7. $dane = "aaa";
  8. }
  9. ?>

  1. <form action=" " method="post">
  2. <select id="s" name="s" onchange="document.getElementById('hid').value='submit';this.form.submit()">
  3. <?php ShowSel(); ?>
  4. </select><br /><br />
  5. <input id="hid" name="hid" type="hidden" value="" />
  6. <<span style='color:blue'>input type="text" id="t" name="t" value="<?php echo $dane; ?>" />
  7. </form>
Lonas
Hm nie rozumiem, możesz mi coś takiego napisać na moim przykładzie ?

mam gotowego selecta w którym pojawiają się nazwy kontrahentów,
mam np w tej tabeli jeszcze adres, nip, miasto

Wybieram w select kontrahent tomek - pojawia mi się poniżej adres miasto nip

chyba że dać drugie zapytanie o reszte danych z tabeli kontrahent ?
revyag
Myślałem że masz tylko kontrahentów. Przykład który podałem działa tak:
- wyświetla w select'cie kontrahentów
- po wybraniu, zapytanie do bazy o dane konkretnego kontrahenta
- wstawienie pobranych danych do inputa (ja pod $dane przypisałem "aaa" żeby pokazać działanie tego smile.gif,
Według mnie takie rozwiąznia jest lepsze, bo nie musisz pobierać całej tabeli.Pobierasz tylko kontrahentów, a potem dane konkretnego kontrahenta.
Lonas
a ja pod dane mam wstawić select z bazy ?

i jak mam adres miasto nip to wtedy daje czy $dane1, $dane2
itd ?
revyag
Tak, robisz selecta i wstawiasz dane w zmienna. To jak je sobie sformatujesz to Twoja sprawa. Może je wstawić po przecinku np.
  1. <?php
  2. $dane = $dane_z_bazy[3].','.$dane_z_bazy[4].','.dane_z_bazy[5];
  3. ?>
Lonas
utrzowylem plik ale nie dziala:


  1. <?
  2. @$db = mysql_pconnect("localhost", "root");
  3. if (!$db)
  4. {  
  5. print "wystąpił błąd w połączeniu";  
  6. exit;
  7. }
  8.  
  9. mysql_select_db("faktury"); 
  10.  
  11. if(!isset($_POST["hid"]) || empty($_POST["hid"])) {
  12. //
  13. $dane = "select nazwa from kontrahenci";
  14. } else {
  15. //pobieranie danych kontrahenta
  16. $dane = "select miasto from kontrahenci";
  17. }
  18. ?>
  19.  
  20. <html>
  21. <form action=" " method="post">
  22. <select id="s" name="s" onchange="document.getElementById('hid').value='submit';this.form.submit()">
  23. <?php ShowSel(); ?>
  24. </select><br /><br />
  25. <input id="hid" name="hid" type="hidden" value="" />
  26. <<span style='color:blue'>input type="text" id="t" name="t" value="<?php echo $dane; ?>" />
  27. </form>
  28. </html>
revyag
Ciekawe czemu nie działa...
Mam dziwne wrażenie że koledze brakuje podstaw obsługi bazydanych.
Kod przed formularzem:
  1. <?php
  2. @$db = mysql_pconnect("localhost", "root");
  3. if (!$db)
  4. {  
  5. print "wystąpił błąd w połączeniu";  
  6. exit;
  7. }
  8.  
  9. mysql_select_db("faktury"); 
  10.  
  11. if(isset($_POST["hid"]) || !empty($_POST["hid"])) {
  12. //pobieranie danych kontrahenta
  13. $res = mysql_query("select adres,nip,miasto from kontrahenci where nazwa='".$_POST["s"]."'");
  14. $dane = mysql_fetch_row($res);
  15. }
  16. ?>

Formularz:
  1. <input type="text" id="t" name="t" value="<?php echo $dane[0],',',$dane[1],',',$dane[2]; ?>" />
Lonas
dalej nie moge wymyslic, nie wiem co wpisac w

  1. <?php
  2.  
  3.  
  4. $res = mysql_query("select miasto from kontrahenci where nazwa='".$_POST["s"]."'");
  5. ?>


do czego odnosi się $_POST["s"]

dane są wyciągane ale w inpucie się nie odświeżają oto kod, prosze o pomoc bo już się gubie:
( narazie wyciagam tylko miasto jak podziala to bede dokladal zapytania)
  1. <?php
  2. @$db = mysql_pconnect("localhost", "root");
  3. if (!$db)  
  4.     {     
  5.     print "wystąpił błąd w połączeniu";     
  6.     exit;  
  7.     }  
  8.  
  9. mysql_select_db("faktury"); 
  10.  
  11.  
  12. $query = "select nazwa from kontrahenci";
  13. $result = mysql_query($query); 
  14.  
  15. echo "<select name=nowy>";
  16. while($dane = mysql_fetch_array($result)){
  17.  echo "<option>$dane[0]</option>";
  18. }
  19. echo "</select>";
  20.  
  21.  
  22.  
  23.  
  24. if(isset($_POST["hid"]) || !empty($_POST["hid"])) {
  25.  
  26.     $res = mysql_query("select miasto from kontrahenci where nazwa='".$_POST["s"]."'");
  27.     $dane = mysql_fetch_row($res);
  28. }
  29.  
  30.  
  31.  
  32. ?>
  33.  
  34. <input type="text" id="t" name="t" value="<?php echo $dane ?>" />
gulldarek
  1. <script type="text/javascript">
  2. <!--
  3. function updateData(text)
  4. {
  5. var input = document.getElementById('t');
  6.  
  7. input.value = text;
  8. }
  9. -->
  10. </script>
  11.  
  12. <?
  13. @$db = mysql_pconnect("localhost", "root");
  14. if (!$db)
  15. {
  16. print "wystąpił błąd w połączeniu";
  17. }
  18.  
  19. mysql_select_db("faktury");
  20.  
  21. $query = "SELECT miasto, nazwa FROM kontrahenci";
  22. $result = mysql_query($query);
  23.  
  24. echo '<select name="nowy" onchange="updateData(this.value)">';
  25. while($dane = mysql_fetch_array($result))
  26. {
  27. echo '<option value="' . $dane[0] . '">' . $dane[1] . '</option>';
  28. }
  29. echo '</select>';
  30. ?>
  31.  
  32. <input type="text" id="t" name="t" value="" />


Spróbuj tak. Zapytanie pobierze nazwe kontrahenta i miasto.

Select bedzie wyglądał tak:

  1. <option value="Warszawa">Marek Jurek</option>
  2. <option value="Zabrze">Zdzislaw Kapusta</option>


itd. Po wybraniu odpowiedniej opcji z selecta w polu nizej wyswietli Ci sie miasto.
Lonas
a gdybym teraz chciał dać 2 input z wartością NIP ?
revyag
Cały kod:
Na początku strony:
  1. <?php
  2.  
  3. $db = mysql_pconnect("localhost", "root");
  4. mysql_select_db("faktura"); 
  5. if (!$db) {  
  6. print "wystąpił błąd w połączeniu";  
  7. exit;
  8. }
  9. function ShowSel() {
  10. $result = mysql_query("select nazwa from kontrahenci"); 
  11. while($dane = mysql_fetch_array($result)){
  12.  echo '<option value="'.$dane[0].'">'.$dane[0].'</option>';
  13. }
  14. }
  15.  
  16. ?>

Przed formularzem:
  1. <?php
  2. if(isset($_POST["hid"]) && !empty($_POST["hid"]) && $_POST["hid"]!="--") {
  3. $res = mysql_query("select adres,nip,miasto from kontrahenci where nazwa='".$_POST["s"]."'");
  4. $dane = mysql_fetch_row($res);
  5. }
  6. ?>

Formularz:
  1. <form action=" " method="post">
  2. <select id="s" name="s" onchange="document.getElementById('hid').value='submit';this.form.submit()">
  3. <option value="--">--</option>
  4. <?php ShowSel(); ?>
  5. </select><br /><br />
  6. <input id="hid" name="hid" type="hidden" value="" />
  7. adres: <input type="text" id="t1" name="t1" value="<?php echo $dane[0]; ?>" /><br />
  8. nip: <input type="text" id="t2" name="t2" value="<?php echo $dane[1]; ?>" /><br />
  9. miasto: <input type="text" id="t3" name="t3" value="<?php echo $dane[2]; ?>" />
  10. </form>

Działa to tak:
1. Z bazy wyciągane są nazwy kontrahentów
2. Po wybraniu z listy rozwijanej konkretnego kontrahenta następuj zapytanie do bazy o jego dane. //$_POST["s"] to nazwa kontrahenta wybrana z listy
3. Dane wybranego kontrahenta wstawiane są w inputy.

----
A teraz zachęcam do zrobienia czegoś samemu, bo bez tego niczego się nie nauczysz snitch.gif
Lonas
Pięknie dziękuje, rozumiem działanie tego patrząc w kod, mialbym problem z napisaniem tego od podstaw, mam jeszcze jeden problemik, wszystko jest ok pozatym że w inputach pisze że jest niezdefiniowana zmienna dane sad.gif

probowalem tez tak w inpucie


  1. <?php
  2. stripslashes($dane["ulica"])
  3. ?>



ale tez wywala ze niezdefiniowana zmeinna dane
revyag
No zapomniałem dodać warunku jednego.
Po prostu trzeba wyzerować tablicę przy początkowym stanie.
Zmień kod przed formularzem na taki:
  1. <?php
  2.  
  3. if(isset($_POST["hid"]) && !empty($_POST["hid"]) && $_POST["hid"]!="--") {
  4. $res = mysql_query("select adres,nip,miasto from kontrahenci where nazwa='".$_POST["s"]."'");
  5. $dane = mysql_fetch_row($res);
  6. } else {
  7. $dane = array_fill(0,3," ");
  8. }
  9.  
  10. ?>
Lonas
Po wybraniu wywala strone sad.gif
/ nie znaleziono pliku /
revyag
Nie wiem co Ty z tym kodem robisz ale to NA PEWNO działa. Zrobiłem sobie nawet bazę danych żeby to przetestować i jest ok. Problem leży po Twojej stronie.
Lonas
Ok wiem gdzie mialem bład, jeszcze raz pieknie dziekuje i pozdrawiam
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.