Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Value kilka zmiennych w polu select
Forum PHP.pl > Forum > Przedszkole
manitou
Witam wszystkich.

Mam taki problem, jak przekazać kilka danych wybierając :

<select name="spis">
<option value="tu kilka danych">Produkt 1</option>
<option value="tu kilka innych danych">Produkt 2</option>
</select>


Zaznaczając w formularzu "Produkt 1" i wysyłając przekaże kilka zmiennych takich jak : $cena , $ilosc, $inne

Wysyłane za pomogą $_GET przekaże dane do kolejnego kroku.


Jak to zrobić bo juz mam pustkę w głowie.
erix
Sesja.
czachor
Jeśli masz je wcześniej dostępne, to albo użyj serialize() albo implode(). A najlepiej to wysyłaj identyfikator produktu a potem cenę i resztę wyciągaj sobie z bazy czy skądś.

PS. Chociaż nie wiem, czy dobrze zrozumiałem pytanie...
manitou
Nie mam skąd pobrać danych, dane muszę zagnieździć w value. chyba że jest jakiś inny sposób wyboru typu <select>.


W value kilka zmienny by później je rozdzielić (rozpisać) na szczegóły zamówienia i np policzyć.

Pewnie da się to w inny sposób rozwiązać a nie mój prymitywny smile.gif dlatego prosze o pomoc. tylko w php.
erix
Yyyy, a nie wystarczyłoby samo explode" title="Zobacz w manualu PHP" target="_manual na wartość pola?

Choć nie rozumiem trochę sensu, aby przesyłać wszystkie wartości w value...
czachor
Hm, to skąd bierzesz te wartości? Zrób implode() w formularzu, potem explode()...
manitou
Mozna prosic na przykładzie ? Bo nie wiem jak to zaimplementować

Pokazując to na prostym przykładzie :

Produkt.php:

<select name="spis">
<option value="cena 100zł, ilość=200szt">Produkt 1</option>
<option value="cena 300zł, ilość=100szt">Produkt 2</option>
</select>

<input type="submit" value="dalej" />


w pliku podsumowanie.php:

<input value="<? echo $_GET[cena]; ?>" >
<input value="<? echo $_GET[ilosc]; ?>" >


Moze trochę przybliżyłem o co mi chodzi.
erix
Hmm, a zobacz: http_build_query" title="Zobacz w manualu PHP" target="_manual, parse_str" title="Zobacz w manualu PHP" target="_manual.

Ale mówię od razu - Twoja metoda nie jest efektywna, zrób gdzieś tabelę produktów i przekazuj tylko ID. Ktoś zmieni dane w wartości i co wtedy?
Pilsener
Musisz zmienieć całkowicie swoje podejście do problemu:
1. Formularze wysyłamy POST, a nie GET
2. Informacje typu cena, ilość itp. trzymasz w plikach lub w bazie - formularzem przekazujesz tylko identyfikatory pozycji, np.
  1. <option value="234">Kubek php.pl</option>
- a w bazie masz:

id - 234|| cena- 10||jednostka miary - szt||stan magazynu - 7||Nazwa - kubek||Opis - itd. etc.
3. Do zaznaczenia kilku opcji mamy input type="checkbox"
4. Formularze wieloetapowe - dane z poprzedniego etapu zapamiętujesz tak:
  1. <input type="hidden" name="kategoria" value="abc" >
manitou
Wszystko przekazuję przez $_POST , (GET się wkradł).

Dobra przekażę ID=234 do pliku podsumowanie.php, ale teraz jak wstawić np cenę do odpowiedniego pola input i ilość do innego pola input ?

Trzymajmy się wyżej wymienionego przykładu bo to jest to o co mi chodziło.

Najlepiej poprosić o gotowca, ale chce się tego nauczyć, także bedę wdzięczny za każdy pomysł.
erix
Pokaż lepiej, jak próbujesz.

Bo każde kolejne pole w formularzu, to kolejny element w tablicy $_POST. Póki nie powiesz, jaki masz konkretnie problem (i z jakim kodem), ciężko będzie coś poradzić.
manitou
No to mam dokładnie tak :

Plik rezerwacja.php :

  1. <form action="podsumowanie.php" method="post">
  2.  
  3. <select name="spis">
  4. <option value="opel">OPEL</option>
  5. <option value="audi">AUDI</option>
  6. <option value="fiat">FIAT</option>



Plik podsumowanie.php :

  1. <?php $audi = $_POST[audi];
  2. $opel = $_POST[opel];
  3. $fiat = $_POST[fiat];
  4.  
  5. $audi = ' marka=audi || cena=100 || kolor=czarny ' ;
  6. $opel = ' marka=opel || cena=200 || kolor=biały ' ;
  7.  
  8. //...NIE WIEM... !!!
  9. ?>
  10.  
  11.  
  12. Wybrany model: <input value="<? echo $_POST[marka]; ?>" >
  13. Cena: <input value="<? echo $_POST[cena]; ?>" >
  14. Tapicerka: <input value="<? echo $_POST[kolor]; ?>" >
erix
  1. <?php
  2. $audi = $_POST[audi];
  3. $opel = $_POST[opel];
  4. $fiat = $_POST[fiat];
  5. ?>

Nie tak. Za klucz w tablicy obieraj nazwę pola, w Twoim przypadku:
  1. <?php
  2. $_POST['spis'];
  3. // i może on przyjąć wartość taką, jaka jest w Twoim select
  4. // każde nowe pole, to kolejny klucz w tej tablicy
  5. $_POST['pole'];
  6. ?>

Kurs PHP w łapki i kodujemy. :]
manitou
Mozna na konkretnym przykładzie tym co wypisałem wyżej ? Bo naprawdę nie wiem jak to pojąć. Nie ogarnę tego nie domyślę się. Co to jest 'pole' w $_POST['pole'] . Sam juz nie wiem niby proste.
erix
Pole jest tylko poglądowo, patrz: masz w formularzu:
  1. <input type="typ" name="pole" />

to w PHP odwołasz się do niego
  1. <?php
  2. $_POST['pole']
  3. ?>


Jeśli wciąż nie rozumiesz, zapraszam do kursu PHP.
manitou
no to jest raczej jasne, ale jak przekazać kilka danych dalej. Chyba trochę inaczej mnie tu zrozumieliście :/
erix
Jeśli masz np. coś w stylu "kreatora", to wciśnij te dane sobie do sesji, a między formularzami przekazuj jakiś token żądania, żeby jedna osoba mogła wypełniać kilka zamówień w osobnych oknach przeglądarki.
Pilsener
Cytat
ale jak przekazać kilka danych dalej.
- przecież napisałem Ci wyżej:
  1. <input type="hidden" name="nazwa_zmiennej_z_poprzedniego_formularza" value="wartosc_zmiennej_z_poprzedniego_formularza_przekazana_dalej" >
- po prostu wysyłasz jeszcze raz to samo, tylko w inpucie typu hidden - to sposób najprostszy.
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.