Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Prosty Problem z nie pamiętliwym Selectem
Unises
post 31.05.2007, 11:04:10
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 6.02.2006

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


Witam

Zwracam sie z prosba o pomoc w dosc błachej (ale nie dla mnie) sprawie, chce by lista rozwijalna pamietała wartosc po przeładowaniu,. Mam liste i przycisk, po wybaraniu i kliknieciu jest ok , tylko że na liscie jest warosc domyslna a ja chce by była to wartosc ostatnio wybrana. Wertowałem tą grupe probowałem zaimplementowac przykłady ale cos mi nie wychodzi, wiem ze musi byc warunek na selected, ale chyba nie do konca potrafie to zrozumiec, bo za diabła mi nie wychodzi i po kolejnym przykladzie jestem głupszy niz byłem, ohmy.gif nie wklejam tu nawet tego co próbowłem bo to żenujące sadsmiley02.gif , tylko fragment działajacego kod bez warunku

  1. <form action="xlist.php" method="get">
  2. <input type="submit" value="szukaj">
  3.  
  4.  
  5. <?php
  6.  
  7.  
  8. $conn = mssql_connect('(local)Vex', 'sa', 'as');
  9.  
  10.  
  11.  mssql_select_db("Vino", $conn)
  12. or die("nie dało się wybrać bazy");
  13.  
  14.  
  15. echo '<td><select name="listek" onchange="document.dodaj_transakcje.submit();">';
  16. echo'<option value="0">Wybierz dział';
  17.  
  18.  
  19. $query_s = "select Nazwisko from GRUPA order by Nazwisko";
  20.  
  21.  
  22. $result_s = mssql_query ($query_s);
  23. while ($row_s = mssql_fetch_array($result_s))
  24.  
  25.  
  26. echo'<option value="'.$row_s['Nazwisko'].'">'.$row_s['Nazwisko'].'</option>';
  27.  
  28.  
  29. echo $row_s;
  30. echo '</td>';
  31.  
  32.  
  33. .............
  34. ?>


Prosze o wyrozumiłość i o łopatologiczne wytłumaczenie gdzie i jak umiescic ten warunek.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
php programmer
post 31.05.2007, 12:25:53
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Możesz zrobić tak
Edit: Mała lecz istotna poprawka

  1. <form action="xlist.php" method="get">
  2. <input type="submit" value="szukaj">
  3.  
  4.  
  5. <?php
  6.  
  7. require('select.php');
  8. $select = new('listek','',' onchange="document.dodaj_transakcje.submit();" ');
  9. $select->AddItem(0,'Wybierz dział');
  10. $select->SelectItem($_POST['listek']);
  11.  
  12.  
  13. $conn = mssql_connect('(local)Vex', 'sa', 'as');
  14.  
  15.  
  16.  mssql_select_db("Vino", $conn)
  17. or die("nie dało się wybrać bazy");
  18.  
  19. $query_s = "select Nazwisko from GRUPA order by Nazwisko";
  20.  
  21. $result_s = mssql_query ($query_s);
  22. while ($row_s = mssql_fetch_array($result_s))
  23.  $select->AddItem($row_s['Nazwisko'],$row_s['Nazwisko']);
  24.  
  25.  
  26. echo '<td>';
  27.  
  28. $select->OutPut();
  29.  
  30.  
  31. echo $row_s;
  32. echo '</td>';
  33.  
  34.  
  35. .............
  36. ?>


Includowany plik select.php

  1. <?
  2.  
  3. class Select{
  4.  
  5. var $name;
  6. var $items,$index,$i,$selected;
  7. var $style;
  8.  
  9. function Select($name,$style='',$params=''){
  10. $this->name  = $name;
  11. $this->style = $style;
  12. $this->params = $params;
  13. $this->index  = -1;
  14. $this->selected = -1;
  15. $this->items = Array();
  16. }
  17.  
  18. function AddItem($value,$view){
  19. $this->index++;
  20. $this->items[$this->index]['value'] = $value;
  21. $this->items[$this->index]['view'] = $view;
  22. }
  23.  
  24. function SelectItem($value){
  25. $this->selected = $value;
  26. }
  27.  
  28. function OutPut($label='',$width=300){
  29.  
  30. if (trim($label)!=''){
  31.  $width /= 2;
  32.  echo '<table cellaspacing="0" cellpadding="0" border="0">';
  33.  echo '<tr><td width="'.$width.'px" align="right" style="padding-right:5px">';
  34.  echo str_replace(' ','&nbsp;',$label);
  35.  echo '</td><td width="'.$width.'px">';
  36.  }
  37.  
  38. // *******************************************************************************
    ***
  39. echo '<select name="'.$this->name.'" id="'.$this->name.'" style="'.$this->style.'" '.$this->params.' >';
  40. for ($this->i = 0; $this->i <= $this->index ; $this->i++){
  41. $this->s = ($this->selected == $this->items[$this->i]['value']) ? 'selected' : '';
  42. echo '<option value="'.$this->items[$this->i]['value'].'" '.$this->s.' >'.$this->items[$this->i]['view'].'</option>';
  43. }
  44. echo '</select>';
  45. // ******************************************************************************
  46.  
  47. if (trim($label)!=''){
  48.  echo '</td></tr>';
  49.  echo '</table>';
  50.  }
  51.  
  52.  
  53. }
  54.  
  55. function Count(){
  56. return $this->index + 1;
  57. }
  58.  
  59. }
  60.  
  61. ?>


Ten post edytował php programmer 31.05.2007, 12:53:16
Go to the top of the page
+Quote Post
Unises
post 31.05.2007, 13:25:18
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 6.02.2006

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


Dzieki za szybką odpowiedz , ale cos tam jest nie tak bo nie wyswietla mi absolutnie nic , na ekranie, nawet jesli tylko uzyje tego frgmentu kodu ktory jest w tym wątku powinno zadziałac, czy tak?, powinno wyswietlic przycisk, liste i wartosci zaladowane z tabeli do listy, ale tak sie nie dzieje., Wyczajiłem ze po wyłączeniu



  1. <?php
  2. #$select = new('listek','',' onchange="document.dodaj_transakcje.submit();" ');
  3. ?>


Wyswietla mi tylko przycisk, tam jest chyba jakis blad składniowy sadsmiley02.gif
, albo to jeszcze cos innego
Go to the top of the page
+Quote Post
php programmer
post 31.05.2007, 14:40:06
Post #4





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


pewnie tak, tzn błąd składniowy
na samym początku wpisz

  1. <?php
  2. ?>
Go to the top of the page
+Quote Post
Unises
post 1.06.2007, 07:33:36
Post #5





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 6.02.2006

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


Zrobiłem tak jak napisałeś dodałem raportowanie błedów, error_reporting(E_ALL);

okazało się że w select.php , po przekopiowaniu ze strony jest złamana na dwie linia odzielajaca
& nbsp;*****************,

poprawiłem to, potem wywalił mi Fatal error: Call to a member function on a non-object .. co zrozumiałe (ale przynajmniej wyswietlił przycisk), odchaszowałem,w skrypcie glownym line

  1. <?php
  2. $select = new('listek','',' onchange="document.dodaj_transakcje.submit();" ');
  3. ?>



no i jestem w punkcie wyjscia, mam czystą strone na której nie wyswietla sie nic. worriedsmiley.gif
Go to the top of the page
+Quote Post
php programmer
post 1.06.2007, 07:45:34
Post #6





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Nie wiem czy zauważyłeś, ale w pewnym momencie
edytowałem swój post,

wyświetlenie przygotowanego select'a powoduje metoda
  1. <?php
  2. $select->OutPut();
  3. ?>

znajduje się później niż przygotowanie właściwości tego obiwektu

na potrzeby debugowania możesz wyświetlić obiekt

  1. <?php
  2. print_r($select);
  3. ?>


Ten post edytował php programmer 1.06.2007, 07:46:57
Go to the top of the page
+Quote Post
Unises
post 1.06.2007, 09:04:53
Post #7





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 6.02.2006

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


Zrobiłem tak jak napisałeś użyłem tego poprawionego przez Ciebie kodu i dalej nic nie wyswietliło, nastepnie uzyłem czegos strasznie uproszczonego (nie zwiera zródła danych itd) ale selecta bez wartosci w liscie chba powinno wyswietlic, niezaleznie czy uzyje select->OutPut(); czy tez print_r($select); oczywiscie dalej nic, jestem podłamany

  1. <form action="xlist.php" method="get">
  2. <input type="submit" value="szukaj">
  3.  
  4.  
  5.  
  6. <?php
  7.  
  8.  
  9. require('select.php');
  10.  
  11. $select = new('listek','',' onchange="document.dodaj_transakcje.submit();" ');
  12.  
  13. $select->AddItem(0,'Wybierz dział');
  14.  
  15. $select->SelectItem($_POST['listek']);
  16.  
  17.  
  18. echo '<td>';
  19.  
  20. print_r($select);
  21.  
  22.  
  23. #$select->OutPut();
  24. #echo $row_s;
  25. echo '</td>';
  26.  
  27.  
  28. ?>
Go to the top of the page
+Quote Post
php programmer
post 1.06.2007, 10:04:34
Post #8





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Ok, zgrałem sobie przykłąd na dysk i pokazało błąd
w linijce gdzie masz
  1. <?php
  2. $select = new('listek','',' onchange="document.dodaj_transakcje.submit();" ');
  3. ?>


powinno być oczywiście

  1. <?php
  2. $select = new Select('listek','',' onchange="document.dodaj_transakcje.submit();" ');
  3. ?>


swoją drogą php powinien ci pokazywać jakie masz błedy
przynajmniej w fazie testów żebyś nie musiał wróżyć z fusów,
ustaw
ini_set('display_errors',TRUE);

Ten post edytował php programmer 1.06.2007, 10:08:59
Go to the top of the page
+Quote Post
Unises
post 1.06.2007, 10:33:54
Post #9





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 6.02.2006

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


Prawie sie ruszyło snitch.gif
Pokazuje mi liste, z załadowanymi wartosciami i przycisk szukaj, wybieram wartosc, klikam szukaj a lista i tak przeskakuje na wartosc domyslną.


Wyskakuje mi cos takiego:

Notice: Undefined index: listek in c:\program files\easyphp1-8\www\xlist.php on line 17

chodzi mu o ta linie

  1. <?php
  2. $select->SelectItem($_POST['listek']);
  3. ?>


W jaki spob mam zdefiniowac zeby to widział? i a tym samym zeby lista zrobiła sie pamiętliwa.
Go to the top of the page
+Quote Post
php programmer
post 1.06.2007, 10:36:20
Post #10





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


spróbuj zamiast

  1. <?php
  2. $select->SelectItem($_POST['listek']);
  3. ?>



dać

  1. <?php
  2. $select->SelectItem($_GET['listek']);
  3. ?>
Go to the top of the page
+Quote Post
Unises
post 1.06.2007, 11:19:26
Post #11





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 6.02.2006

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


Zmiana nie pomogła jest tak samo jak było, a czy da sie jakas bardziej "jawnie" mu to zdeklarowac, moze przez jakas dodatkową zmienną pomocniczą? , ja kombinuje ale mi nie wychodzi.
Go to the top of the page
+Quote Post
php programmer
post 1.06.2007, 11:34:29
Post #12





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Zarówno w pokazanym powyżej skrypcie jak i w xlist.php
na samym początku dajesz

  1. <?php
  2. ?>


dodatkowo w xlist.php ustawiasz

  1. <?php
  2. $_SESSION['listek'] = $_GET['listek'];
  3. ?>


natomiast w pokazanym skrypcie daj tym razem

  1. <?php
  2. $select->SelectItem($_SESSION['listek']);
  3. ?>


Ten post edytował php programmer 1.06.2007, 11:39:01
Go to the top of the page
+Quote Post
Unises
post 1.06.2007, 12:16:59
Post #13





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 6.02.2006

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


Działa Dziekuje Ci bardzo ruszyło exclamation.gif biggrin.gif tzn na ekranie mam liste z załadowanymi wartosciami a po wybraniu wartosci i nacisnieciu przycisku szukaj, wartosc listy pozostaje nie zmieniona i rownoczesnie wendruje do paska adresu strony.

Ponizej zalczam działajacy skrypt


  1. <form action="xlist.php" method="get">
  2. <input type="submit" value="szukaj">



  1. <?php
  2.  
  3.  
  4.  
  5.  ini_set('display_errors',TRUE);
  6.  
  7.  
  8. require('select.php');
  9.  
  10. $_SESSION['listek'] = $_GET['listek'];
  11.  
  12.  
  13. $select = new Select('listek','',' onchange="document.dodaj_transakcje.submit();" ');
  14.  
  15.  
  16.  
  17. $select->AddItem(0,'Wybierz Nazwisko');
  18.  
  19.  
  20.  
  21. $select->SelectItem($_SESSION['listek']);
  22.  
  23.  
  24.  
  25. $conn = mssql_connect('(local)Vex', 'sa', 'as');
  26.  
  27.  
  28.  
  29.  mssql_select_db("Vino", $conn)
  30.  
  31. or die("nie dało się wybrać bazy");
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39. $query_s = "select Nazwisko from GRUPA order by Nazwisko";
  40.  
  41.  
  42. $result_s = mssql_query ($query_s);
  43.  
  44. while ($row_s = mssql_fetch_array($result_s))
  45.  
  46. $select->AddItem($row_s['Nazwisko'],$row_s['Nazwisko']);
  47.  
  48.  
  49.  
  50. echo '<td>';
  51.  
  52.  
  53. $select->OutPut();
  54.  
  55.  
  56.  
  57. echo $row_s;
  58.  
  59. echo '</td>';
  60.  
  61.  
  62. ?>


W poniedziałek bedę ten fragment dodawał do całości składającej się z 4 takich list których wartosci mają służyć jako warunek where innego zapytania, jakby cos sie złego działo to sie odezwe w tym wątku.

Jeszcze raz Ci Serdecznie Dziekuje i Pozdrawiam
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:29