• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

php dwa formularze na jednej stronie

0 głosów
2,195 wizyt
pytanie zadane 1 lutego 2017 w PHP przez liledusty Obywatel (1,430 p.)

Witam, piszę tu w sprawie problemu z dwoma formularzami na jednej stronie. Otóż posiadam 2 pliki (podaje przykładowo, chce poprostu wiedzieć na jakiej zasadzie się to robi) formularz.php->metoda post->sprawdz.php

Niżej załączam kod (formularz.php):

<?php

session_start();

	if (!isset($_SESSION['zalogowany']))
	{
		header('Location: index.php');
		exit();
	}
	?>
<html>
<head>
<meta charset="utf-8"/>


</head>


<body>
<form action="sprawdz.php" method="post">

<input type="text" name="cena" value="podaj cenę">

</form>

<form action="sprawdz.php" method="post">

<input type="text" name="imie">
<input type="submit" value="Sprawdz">

</form>

</body>

</html>

Kod pliku (sprawdz.php):

<?php

	session_start();
	
	
	$cena =$_POST['cena'];
	$imie = $_POST['imie'];
	
	
	if ($cena=="")
	{
		echo "$cena";
	}		
	else
	{
		echo "$imie";
	}
		
?>

Problem polega na tym że gdy mam 2 formularze skrypt sprawdz.php odczytuje tylko zmienną w drugim formularzu (zmienna imie) ale zmiennej ceny już nie lecz gdy usunę jeden z formularzy wszystko działa jak należy. Proszę o pomoc.

1
komentarz 1 lutego 2017 przez xandros Nałogowiec (29,450 p.)
Nie wiem, po co chcesz wysyłać 2 formularze na raz.

http://symfony.com/doc/current/introduction/http_fundamentals.html

Czytaj:

Wypełniamy formularz -> klikamy send -> serwer otrzymuje request z teścią tego formularza -> serwer przygotowuje odpowiedź -> serwer odsyła odpowiedź

Nie możesz wysłać 2 różnych treści w tym samym requeście i jednocześnie w osobnym. Co najwyżej możesz je połączyć (np. za pomocą jsa), lub też użyć 1 formularza (co wydaje się najlepszym rozwiązaniem).
komentarz 1 lutego 2017 przez liledusty Obywatel (1,430 p.)
Dziękuję za dokładne wytłumaczenie mi jak działają formularze. Problem rozwiązany, wystarczyło wszystko umieścić w jednym formularzu. Głupi błąd..

3 odpowiedzi

0 głosów
odpowiedź 1 lutego 2017 przez Wojtek Trojanowski Obywatel (1,420 p.)
Wysyłany jest tylko jeden formularz. jeśli chcesz przesyłać obie zmienne umiesć je w jednym formularzu.
komentarz 1 lutego 2017 przez liledusty Obywatel (1,430 p.)
Nie ma opcji żeby wysłać dwa formularze?
komentarz 1 lutego 2017 przez xandros Nałogowiec (29,450 p.)
Za pomocą jsa pewnie tak, ale to przerost formy nad treścią
komentarz 1 lutego 2017 przez liledusty Obywatel (1,430 p.)
A jeśli użytkownik strony będzie miał wyłączonego jsa to co wtedy? Nie ma możliwości zrobić poprostu tego w php i html?
komentarz 1 lutego 2017 przez xandros Nałogowiec (29,450 p.)
Patrz komentarz do pytania
0 głosów
odpowiedź 1 lutego 2017 przez niezalogowany
W formularzu możesz mieć nieograniczoną ilość inputów. 

<form action="nazwa.php" method="post">

 <input type="text" name="imie">
 <input type="text" name="cena" value="podaj cenę"> <!-- value do tego nie służy -->


 <input type="submit" value="wyslij"> 
</form>

 

komentarz 1 lutego 2017 przez liledusty Obywatel (1,430 p.)
Jestem tego świadomy. Ten kod co podałem wyżej jest tylko przykładem i w nim owszem, spokojnie można by było umieścić wszystkie zmienne w jednym formularzu lecz ja potrzebuje umieścić je w oddzielnym. Da sie to jakoś zrobić?
komentarz 1 lutego 2017 przez Pietrak Pasjonat (18,850 p.)
Jest atrybut form dla input, ale nie wiem jak działa.

Dlaczego koniecznie musisz mieć dwa znaczniki form?
komentarz 1 lutego 2017 przez liledusty Obywatel (1,430 p.)
Poniżej jest wszystko opisane.
0 głosów
odpowiedź 1 lutego 2017 przez szustka124 Gaduła (4,380 p.)
Witam,

Najpierw powinieneś sprawdzić czy element 'cena' w ogóle istnieje za pomocą funkcji isset(), ponieważ w jednym przypadku zmienna ta nie jest pusta, a po prostu nie istnieje. To samo powinieneś zrobić z elementem 'imie'.
komentarz 1 lutego 2017 przez liledusty Obywatel (1,430 p.)
<?php

	session_start();
	
	
	$cena =$_POST['cena'];
	$imie = $_POST['imie'];
	
	
	if (isset($_POST['cena']))
	{
		echo "$cena";
	}		
	else
	{
		echo "$imie";
	}
		
?>

Coś w tym stylu?

komentarz 1 lutego 2017 przez Boshi VIP (100,240 p.)
w php 7 używamy Null Coalesce Operator
komentarz 1 lutego 2017 przez liledusty Obywatel (1,430 p.)
Jest on konieczny aby przesłać te dwa formularze? Nie ma innego sposobu?
komentarz 1 lutego 2017 przez liledusty Obywatel (1,430 p.)
Możliwe że moje pytania wydają się głupie ale dopiero zaczynam pisać w php a te dwa formularze są dla mnie potrzebne. Nie da się przypadkiem zrobić tego tak że dla każdej formy dajemy id i skrypt sprawdzający odczytuje je za pomocą tych id?
komentarz 1 lutego 2017 przez Boshi VIP (100,240 p.)
Zrozum, że tak nie działa HTTP.  Po co ci dwa formularze?
komentarz 1 lutego 2017 przez Wojtek Trojanowski Obywatel (1,420 p.)

Możesz wytłumaczyć jaśniej o co chodzi? Czemu nie mogą być w jednym formularzu? Przesyłaj oba i jeden ignoruj jeśli nie jest wypełniony lub dodaj dwa przyciski, zależnie który wciśnie sprawdzaj jedną lub drugą zmienną.

 

cos jak (i odesparuj w html te inputy tak by wyglądało że są to osobne formularze)

<from>

<input type="text" name="cena"/>

<input type="submit" name="sprawdz_cene"/>





<input type="text" name="imie"/>

<input type="submit" name="sprawdz_imie"/>

</form>


<?php
if(isset($_SESSION['sprawdz_cene'])==TRUE){
 zrób coś
}
if(isset($_SESSION['sprawdz_imie'])==TRUE){
 zrób coś innego
}
?>
komentarz 1 lutego 2017 przez liledusty Obywatel (1,430 p.)

Przykładowo mam stronę na której znajdują się 3 formularze. Pierwsze dwa formularze to selecty które nie za bardzo mam jak umieścić w jednym formularzu.


<form action="sprawdz.php" method="post">
	<select name="wybierzopcje">
		<option>opcja1</option>
		<option>opcja2</option>
	    <option>opcja3</option>
		<option>opcja4</option>
	</select>
</form>

			<form action="sprawdz.php" method="post">
	<select name="wybierzopcje22">
		<option>opcja1/option>
		<option>opcja2</option>
	</select>

	</form>
Trzeci formularz jest od "wizualnej" częśći ogłoszenia

 

<form action="sprawdz.php" method="post">
<input type="text" maxlength="60" name="tytul" value="Tytuł ogłoszenia"/>
<br>



<br>
<textarea rows="4" name="tresc" cols="50" maxlength="1500">Treść ogłoszenia</textarea>



<br><br>

<input type="text" maxlength="250" name="kontakt" value="Kontakt"/><br>
	
		<br><input type="submit" name="doglbutton" value="Dodaj ogłoszenie!">
</form>

I tu już pojawia się problem.

komentarz 1 lutego 2017 przez Boshi VIP (100,240 p.)
I z jakiego powodu to wszyskto nie może być w jednym forumlarzu?
komentarz 1 lutego 2017 przez Wojtek Trojanowski Obywatel (1,420 p.)
Ujmij wszystko w jeden formularz, łącznie z divami które są kręgosłupem całej strony. Z tego co wklejasz nie wynika nic że to nie moze byc w jednym formie. Wklej cały kod albo jaśniej opisz w czym problem, czemu nie może być to razem
komentarz 1 lutego 2017 przez liledusty Obywatel (1,430 p.)
Przed chwilą to zrobiłem i dopiero doszło do mnie jaki głupi błąd popełniłem. Można spokojnie umieścić to wszystko w jednym formularzu. Dziękuję wszystkim za próbę pomocy i poświęcenie mi chwili swojego cennego czasu.

Podobne pytania

0 głosów
2 odpowiedzi 333 wizyt
pytanie zadane 7 kwietnia 2016 w HTML i CSS przez Repthile Użytkownik (510 p.)
0 głosów
1 odpowiedź 282 wizyt
0 głosów
2 odpowiedzi 223 wizyt

93,426 zapytań

142,421 odpowiedzi

322,647 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...