Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapamiętywaniem wyboru z listy rozwijanej, Problem z zapamiętywaniem wyboru z listy rozwijanej checkSelect
two
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.03.2014

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


Witam,
Mam problem. Otóż mam mały program napisany w PHP. Program posiada bazę danych w pliku txt, a w niej jest spis asortymentu z cenami, czyli: nazwa asortymentu || cena w PLN || cena w euro. Mam listę rozwijaną asortymentu i chciałbym, aby po kliknięciu przycisku "oblicz" zapamiętać wybrany asortyment na liście. W miejscach gdzie miałem listę wyboru i wpisane na sztywno pola wyboru poradziłem sobie z tym, ale w przypadku jak program pobiera sobie automatycznie tę listę to mam problem. Kod jest w PHP, ale miejscami przechodzi w html i znowu w php. Sądzę, że gdzieś tutaj przy tych przejściach jest błąd, ale nie mam pojęcia gdzie. Męczę się z tym od kilku dni i nic.
  1. <select name="baza_towaru" id="baza_towaru">
  2. <?php
  3. $dane = file($plik);
  4.  
  5. for($i=0;$i<count($dane);$i++) {
  6. list($asortyment[$i], $cenaPLN[$i], $cenaEURO[$i]) = explode(" || ", $dane[$i]);
  7. }
  8.  
  9. for($i=0;$i<count($asortyment);$i++)
  10. echo '<option value="'.$i.'" '.checkSelected($i, 'baza_towaru').'>'.$asortyment[$i]."</option>";
  11.  
  12. ?>
  13. </select>
  14.  



W tym ostatnim wierszu echo gdzieś musi być błąd. Wersja bez tej opcji zapamiętywania wyglądała tak:
echo '<option value="'.$i.'">'.$asortyment[$i]."</option>";


Go to the top of the page
+Quote Post
freemp3
post
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Jak wygląda funkcja checkSelected? Sprawdzałeś, czy działa poprawnie i zwraca to co trzeba?
Go to the top of the page
+Quote Post
markuz
post
Post #3





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


  1. echo '<option value="'.$i.'"';
  2. if($_POST['baza_towaru'] == $i) echo 'selected';
  3. echo '>'.$asortyment[$i].'</option>';


Ten post edytował markuz 27.03.2014, 10:14:45
Go to the top of the page
+Quote Post
two
post
Post #4





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.03.2014

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


Niestety nie działa. Teraz w ogóle nie wykrywa mi informacji z bazy. Funkcja checkSelect wygląda tak:

  1. <?php
  2. function checkSelected($fieldValue, $selectName) {
  3. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  4. if ($fieldValue == $_POST[$selectName]) echo ' selected';
  5. }
  6. }
  7. ?>


Przy wklepywaniu ręcznym każdego pola osobno funkcja działa, czyli na przykład jak mam takie coś to działa:

  1.  
  2. <select name="ilosc_kolorow" id="ilosc_kolorow">
  3. <option value="1"<?php checkSelected('1', 'ilosc_kolorow'); ?>>1</option>
  4. <option value="2"<?php checkSelected('2', 'ilosc_kolorow'); ?>>2</option>
  5. </select>
  6.  


A macie może jakiś inny sposób, żeby to rozwiązać? Jakieś propozycje?
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Jaką metodą przesyłasz formularz, GET czy POST?
Jeśli GET to zmień w powyższym kodzie.
Go to the top of the page
+Quote Post
two
post
Post #6





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.03.2014

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


POST. Funkcja działa, bo jak mam wpisane opcje wyboru na twardo z ręki to wtedy wszystko śmiga, ale tylko w tej funkcji gdzie on mi pobiera te wartości z zewnętrznego pliku .txt to mam problem. Sądzę, że to może jakoś źle zadeklarowałem w tym miejscu

  1. echo '<option value="'.$i.'" '.checkSelected($i, 'baza_towaru').'>'.$asortyment[$i]."</option>";


Ale nie upieram się do tej metody. Jeśli macie jakieś inne metody jak zrobić, żeby zapamiętywało mi wybór z tej listy rozwijanej to jestem otwarty na propozycje.
Go to the top of the page
+Quote Post
Turson
post
Post #7





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Markuz dał alternatywę
Cytat(markuz @ 27.03.2014, 11:14:24 ) *
  1. echo '<option value="'.$i.'"';
  2. if($_POST['baza_towaru'] == $i) echo 'selected';
  3. echo '>'.$asortyment[$i].'</option>';

tyle że zgubił spację przed selected
Go to the top of the page
+Quote Post
two
post
Post #8





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.03.2014

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


Próbowałem ze spacją i dalej nic. Teraz to nawet nie wyświetla mi żadnych opcji wyboru na liście.
Go to the top of the page
+Quote Post
trueblue
post
Post #9





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Ale umieściłeś ten kod od markuza (ze spacją), w pętli, którą masz w linii 9?
Go to the top of the page
+Quote Post
two
post
Post #10





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.03.2014

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


Tak, dokładnie to umieściłem to w ten sposób:

  1. <select name="baza_towaru" id="baza_towaru">
  2. <?php
  3. $dane = file($plik);
  4.  
  5. for($i=0;$i<count($dane);$i++) {
  6. list($asortyment[$i], $cenaPLN[$i], $cenaEURO[$i]) = explode(" || ", $dane[$i]);
  7. }
  8.  
  9. for($i=0;$i<count($asortyment);$i++)
  10. echo '<option value="'.$i.'"';
  11. if($_POST['baza_towaru'] == $i) echo ' selected';
  12. echo '>'.$asortyment[$i].'</option>';
  13. ?>
  14. </select>
  15.  
  16.  
  17.  
Go to the top of the page
+Quote Post
markuz
post
Post #11





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Może w for warto dodać nawiasy klamrowe?

Ten post edytował markuz 30.03.2014, 13:39:32
Go to the top of the page
+Quote Post
Turson
post
Post #12





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Naciśnij CTRL+U i zobacz jak wygląda kod html
Go to the top of the page
+Quote Post
two
post
Post #13





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 26.03.2014

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


Działa (IMG:style_emoticons/default/exclamation.gif) !! Wielkie dzięki. Brakowało tych nawiasów klamrowych. Męczyłem się z tym od tygodnia i powoli brakowało mi już pomysłów. Mimo wszystko jeszcze raz wielkie dzięki wszystkim którzy się udzielili w temacie !
Go to the top of the page
+Quote Post
Turson
post
Post #14





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Na przyszłość: włącz wyświetlanie błędów, bo zapewne miałbyś błąd "Undefined variable $i"
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.09.2025 - 22:56