2011-08-02 14 views
5

Pracuję nad narzędziem zapytań, które wyświetla dane z bazy danych MySQL. Użytkownikowi przedstawiono formularz zawierający kilkadziesiąt dynamicznie generowanych pól wyboru, dzięki czemu mogą wybrać sposób wyświetlania danych. Te dane są przesyłane jako żądanie GET i są (oczywiście) wyświetlane w adresie URL po załadowaniu żądanej strony.Przesyłanie zmiennych POST i GET w jednym formularzu

Na tej samej stronie co formularz wejściowy, mam tablicę php, którą generuję dynamicznie i którą należy wysłać w to samo miejsce, co żądanie GET. Jednak nie chcę, aby wartości w tej tablicy były wyświetlane w adresie URL (używam ich wewnętrznie), więc chciałbym je przesłać jako żądanie POST.

Oczywiście nie mogę jednocześnie wykonać żądania GET i POST. Jestem nowy w tworzeniu stron internetowych (informatyk, w przeciwnym razie) i zastanawiałem się, jak do tego podejść.

Daj mi znać, jeśli problem nie jest jasny.

EDIT: Wielu sugerowało, dodaję je do zmiennej akcji la:

form action = "process.php get1 = wartość ...

tych wszystkich wejść są generowane dynamicznie tak, aby umieścić je w zmiennej działania nie jest możliwe

+1

Można przechowywać tablicę zmiennych sesyjnych w ten sposób byłoby pozostają ukryte przed użytkownikiem (jeśli nie wyślij jako pliki cookie), ale dlaczego nie używać ukrytych elementów formularza i przesyłać je jako posty? –

+1

Jeśli jest to tablica PHP, po prostu zapisz ją w sesji. – Endophage

+1

Przesyłasz parametry POST przez dane wejściowe formularza. Możesz wysłać parametry GET w tym samym żądaniu, włączając je w 'form action =" process.php? Get1 = value ... "' parametr '

'. –

Odpowiedz

1

Endophage:

Jeśli jest to tablica PHP, po prostu zapisz ją w sesji.

To działało świetnie. Oczywiście pokazuję tutaj moją zieloną stronę internetową, ponieważ tak naprawdę nie rozważałem korzystania z sesji.

0

można ustawić GET vars zmieniając URL.

<form action="foo.php?getvar=15" method="POST"> 
<input name="postvar"> 
</form> 

Dla dynamicznych użytkowników GET uważam, że potrzebujesz Javascript.

+0

Dobrze, ale wszystkie te zmienne są generowane dynamicznie, więc umieszczenie ich w zmiennej akcji nie jest możliwe. – SemperFly

11

parametry uzyskania go w url działania, parametry POST w Wejścia formularza

<form method="post" action="/somepage.php?get=parameters&are=here"> 
    <input type="text" name="postParameter" value="this value will be sent as POST"> 
    ... etc 
</form> 
+0

Czy ta praca była dla Ciebie? Próbowałem już teraz czegoś podobnego i po prostu usuwa parametry get (używając chrome). – Arninja

+0

@Arninja Działa dobrze. Chrome (i dowolna inna przeglądarka) wysyła oba zestawy parametrów i możesz uzyskać dostęp do parametrów z jednego zestawu za pomocą '$ _REQUEST' lub uzyskać dostęp do nich indywidualnie za pomocą' $ _GET' i '$ _POST' odpowiednio – Flambino

+0

Więcej szczegółowych informacji o formularzu PHP po zebraniu możesz zapoznać się z moim postem http://www.techflirt.com/form-handling-php i przejść do sekcji "Operacja na jednej stronie" –

1

Nie można zrobić post i dostać się w tej samej formie można nawet powiedzieć, że w swoim pytaniu.

Musisz albo:

  1. mieć 2 formy
  2. mają jedną cechę złożyć ze słupem za pośrednictwem AJAX, a następnie przesłać inną formę z dostać
+0

Jestem świadomy, że nie mogę zrobić ich w tej samej formie . Chcę osiągnąć ten sam cel. – SemperFly

+0

@SemperFly i ja daliśmy ci sposoby, aby to zrobić. – Neal

+2

@Neal: Um, myślę, że masz na myśli "możesz zrobić POST i GET w tej samej formie". Cóż, OK, rzeczywiste żądanie http będzie albo POST albo GET, ale to nie znaczy, że nie możesz mieć łańcucha zapytania w url. Serwer, o którym mowa, uruchamia PHP, więc odczyta oba zestawy parametrów po prostu dobrze – Flambino

0
<form action="page.php?id=15" method="POST"> 
<input name="ref_code_cust" type="text" value="some data"> 
<input name="send" type="submit" value="send"> 
</form> 

lub

www.mywebsite/page.php?id = 15

<form action="page.php" method="POST"> 
<input name="id" type="hidden" value="<?php echo htmlspecialchars($_GET['id'], ENT_QUOTES); ?>"> 
<input name="email" type="text" value="some data"> 
<input name="send" type="submit" value="send"> 
</form> 

musimy zobaczyć Twój kod również ułatwić, especial ta tablica rzeczą