manitou
8.12.2008, 20:44:38
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.
czachor
8.12.2008, 20:48:16
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
8.12.2008, 22:16:34
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

dlatego prosze o pomoc. tylko w php.
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
8.12.2008, 22:37:35
Hm, to skąd bierzesz te wartości? Zrób implode() w formularzu, potem explode()...
manitou
8.12.2008, 22:52:03
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.
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
9.12.2008, 09:09:26
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.
- 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:
<input type="hidden" name="kategoria" value="abc" >
manitou
9.12.2008, 19:44:01
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ł.
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
9.12.2008, 20:29:21
No to mam dokładnie tak :
Plik rezerwacja.php :
<form action="podsumowanie.php" method="post">
Plik podsumowanie.php :
<?php $audi = $_POST[audi];
$opel = $_POST[opel];
$fiat = $_POST[fiat];
$audi = ' marka=audi || cena=100 || kolor=czarny ' ;
$opel = ' marka=opel || cena=200 || kolor=biały ' ;
//...NIE WIEM... !!!
?>
Wybrany model:
<input value="<? echo $_POST[marka]; ?>" >
Cena:
<input value="<? echo $_POST[cena]; ?>" >
Tapicerka:
<input value="<? echo $_POST[kolor]; ?>" >
<?php
$audi = $_POST[audi];
$opel = $_POST[opel];
$fiat = $_POST[fiat];
?>
Nie tak. Za klucz w tablicy obieraj nazwę pola, w Twoim przypadku:
<?php
$_POST['spis'];
// i może on przyjąć wartość taką, jaka jest w Twoim select
// każde nowe pole, to kolejny klucz w tej tablicy
$_POST['pole'];
?>
Kurs PHP w łapki i kodujemy. :]
manitou
9.12.2008, 21:31:11
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.
Pole jest tylko poglądowo, patrz: masz w formularzu:
<input type="typ" name="pole" />
to w PHP odwołasz się do niego
<?php
$_POST['pole']
?>
Jeśli wciąż nie rozumiesz, zapraszam do kursu PHP.
manitou
9.12.2008, 22:46:22
no to jest raczej jasne, ale jak przekazać kilka danych dalej. Chyba trochę inaczej mnie tu zrozumieliście :/
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
10.12.2008, 10:52:37
Cytat
ale jak przekazać kilka danych dalej.
- przecież napisałem Ci wyżej:
<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.