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

Dwie metody POST w jednym pliku

+1 głos
54 wizyt
pytanie zadane 17 czerwca w PHP przez Hubert Wajda Obywatel (1,140 p.)
Czy jest taka możliwość aby w jednym pliku były dwa formularze, które nie przesyłałby danych do innego pliku, lecz wszystko działo się w tym samym pliku (bez "action='sciezka' '') za pomoca "if($_SERVER['REQUEST_METHOD']=="POST") "

Problem polega na tym, że po naciesnieciu przycisku, wsykakuje błąd, iż zmienne z drugiego formularza nie istnieją.
komentarz 17 czerwca przez SzkolnyAdmin Maniak (59,700 p.)
Da się. Daj swój kod.

2 odpowiedzi

0 głosów
odpowiedź 17 czerwca przez CubeStorm Stary wyjadacz (12,440 p.)
wybrane 17 czerwca przez Hubert Wajda
 
Najlepsza

Więc z pomocą odpowiedniego if'a napisz kod, który na początku strony sprawdzi:

Jeżeli zmienna XXXX istnieje wykonaj kod X, jeżeli nie to wykonaj kod Y.

komentarz 17 czerwca przez Hubert Wajda Obywatel (1,140 p.)
ehhh, no tak, nic prostszego, dziękuję, tylko że jest mały problem, iż kiedy ktoś wypełni oba formularze, to wykonają się oba przypadki, no ale trudno :D
komentarz 17 czerwca przez Hubert Wajda Obywatel (1,140 p.)

Poza tym, srednio to działa, ponieważ ksiazka dodaje sie dopiero po odswiezeniu, lub po ponownym kliknieciu

<?php
session_start();
	if(!isset($_SESSION['logowanie']) || $_SESSION['logowanie']==false) header('LOCATION: index.php');
	else if($_SESSION['login']!="login") header('LOCATION: konto.php');
?>

<body>
<?php 
	$server="localhost";
	$user="root";
	$password="";
	$database="cwiczenie";
	$polaczenie = @new mysqli($server, $user, $password, $database);
	if($polaczenie->connect_errno==1){
		echo "Error: ".$polaczenie->connect_erno;
	}
	else{
		$sql2 ="SELECT* from ksiazki";
		if($rezultat2= @$polaczenie->query($sql2)){
					$dostepneksiazki=$rezultat2->num_rows;
					if($dostepneksiazki>0){
						$_SESSION['dostepneksiazki']="<br />";
						while($wiersz2 = $rezultat2->fetch_assoc()) {
								$_SESSION['dostepneksiazki'] ='<span style="color:#0000BB">'.$_SESSION['dostepneksiazki'].$wiersz2['autor']." ".'"'.$wiersz2['tytul'].'"'.'</span><br />';
						}
							$rezultat2->close();
					}
						else{
								$_SESSION['dostepneksiazki']='<span style="color:red">Brak dostępnych książek</span>';
							}
				}
	}
	echo '<h2>Witaj '.$_SESSION['imie'].' '.$_SESSION['nazwisko'].' (konto Administratora)</h2>  ';

	 if(isset($_SESSION['dostepneksiazki']))  echo "Dostępne ksiazki:  ".$_SESSION['dostepneksiazki'];
?>
<br /> <br />
<form method="post">
	Książka która chcesz dodac do biblioteki: 
	<br /><br />
	autor
	<input required type="text" name="autor">
	tytul
	<input required type="text" name="tytul">
	<input type="submit" value="Dodaj">
<?php
	if(isset($_SESSION['dodanieksiazki'])){
		echo $_SESSION['dodanieksiazki'];
		unset($_SESSION['dodanieksiazki']);
}
?>
	<br /> <br />
</form>
<form method="post">
	Ksiazke ktora chcesz usunąć z biblioteki:
	<br /><br />
	autor
	<input required type="text" name="autor2">
	tytul
	<input required type="text" name="tytul2">
	<input required type="submit" value="Usuń">
<?php
	if($_SERVER['REQUEST_METHOD']=="POST"){
		$server="localhost";
		$user="root";
		$password="";
		$database="cwiczenie";
		$polaczenie = @new mysqli($server, $user, $password, $database);
		if($polaczenie->connect_errno!=1){
			if(isset($_POST['tytul'])AND isset($_POST['autor'])){
				$_SESSION['autor']=$_POST['autor'];
				$autor=$_POST['autor'];
				$_SESSION['tytul']=$_POST['tytul'];
				$tytul=$_POST['tytul'];
				$sql = "INSERT INTO `ksiazki` (`ID_ksiazki`, `tytul`, `autor`, `ID_user`) VALUES (NULL, '$tytul', '$autor', '0')";
				$sql3 = "SELECT * from `ksiazki` WHERE tytul='$tytul' AND autor='$autor'";
				if($rezultat=@$polaczenie->query($sql3)){
					$ksiazki=$rezultat->num_rows;
					if($ksiazki>0){
						$_SESSION['dodanieksiazki']='<span style="color:red">'."W naszej bibliotece znajduje się już taka książka".'</span>';
					}
					else{
						if($polaczenie->query($sql)==true){
							$_SESSION['dodanieksiazki']="Dodano książke pomyślnie!";
						}
					}
				}
			}	
		else echo "Error ".$polaczenie->connect_errno;
		}
	}
?>
</form>
	
<form action="wylogowanie.php" method="post">
	<input type="submit" value="wyloguj się">
</form>
</body>

 

komentarz 17 czerwca przez VBService VIP (126,380 p.)

tylko że jest mały problem, iż kiedy ktoś wypełni oba formularze, to wykonają się oba przypadki


@Hubert Wajda, jak masz osobne submit-y (button-y) dla każdego z osobna formularza to nie da się wysłać dwóch na raz w tym przypadku.

komentarz 17 czerwca przez Hubert Wajda Obywatel (1,140 p.)

Warning: Undefined array key "autor2" in C:\xampp\htdocs\hubert\kontoadmin.php on line 70

No ale wyskakuje mi taki błąd

<?php
session_start();
	if(!isset($_SESSION['logowanie']) || $_SESSION['logowanie']==false) header('LOCATION: index.php');
	else if($_SESSION['login']!="login") header('LOCATION: konto.php');
?>

<body>
<?php 
	$server="localhost";
	$user="root";
	$password="";
	$database="cwiczenie";
	$polaczenie = @new mysqli($server, $user, $password, $database);
	if($polaczenie->connect_errno==1){
		echo "Error: ".$polaczenie->connect_erno;
	}
	else{
		$sql2 ="SELECT* from ksiazki";
		if($rezultat2= @$polaczenie->query($sql2)){
					$dostepneksiazki=$rezultat2->num_rows;
					if($dostepneksiazki>0){
						$_SESSION['dostepneksiazki']="<br />";
						while($wiersz2 = $rezultat2->fetch_assoc()) {
								$_SESSION['dostepneksiazki'] ='<span style="color:#0000BB">'.$_SESSION['dostepneksiazki'].$wiersz2['autor']." ".'"'.$wiersz2['tytul'].'"'.'</span><br />';
						}
							$rezultat2->close();
					}
						else{
								$_SESSION['dostepneksiazki']='<span style="color:red">Brak dostępnych książek</span>';
							}
				}
	}
	echo '<h2>Witaj '.$_SESSION['imie'].' '.$_SESSION['nazwisko'].' (konto Administratora)</h2>  ';

	 if(isset($_SESSION['dostepneksiazki']))  echo "Dostępne ksiazki:  ".$_SESSION['dostepneksiazki'];
?>
<br /> <br />
<form method="post">
	Książka która chcesz dodac do biblioteki: 
	<br /><br />
	autor
	<input required type="text" name="autor">
	tytul
	<input required type="text" name="tytul">
	<input type="submit" value="Dodaj">
<?php
	if(isset($_SESSION['dodanieksiazki'])){
		echo $_SESSION['dodanieksiazki'];
		unset($_SESSION['dodanieksiazki']);
}
?>
	<br /> <br />
</form>
<form method="post">
	Ksiazke ktora chcesz usunąć z biblioteki:
	<br /><br />
	autor
	<input required type="text" name="autor2">
	tytul
	<input required type="text" name="tytul2">
	<input required type="submit" value="Usuń">
<?php
	if($_SERVER['REQUEST_METHOD']=="POST"){
		$server="localhost";
		$user="root";
		$password="";
		$database="cwiczenie";
		$polaczenie = @new mysqli($server, $user, $password, $database);
		if($polaczenie->connect_errno!=1){
				$autor2=$_POST['autor2'];
				$_SESSION['autor']=$_POST['autor'];
				$autor=$_POST['autor'];
				$_SESSION['tytul']=$_POST['tytul'];
				$tytul=$_POST['tytul'];
				$sql = "INSERT INTO `ksiazki` (`ID_ksiazki`, `tytul`, `autor`, `ID_user`) VALUES (NULL, '$tytul', '$autor', '0')";
				$sql3 = "SELECT * from `ksiazki` WHERE tytul='$tytul' AND autor='$autor'";
				if($rezultat=@$polaczenie->query($sql3)){
					$ksiazki=$rezultat->num_rows;
					if($ksiazki>0){
						$_SESSION['dodanieksiazki']='<span style="color:red">'."W naszej bibliotece znajduje się już taka książka".'</span>';
					}
					else{
						if($polaczenie->query($sql)==true){
							$_SESSION['dodanieksiazki']="Dodano książke pomyślnie!";
						}
					}
				}
			}	
		else echo "Error ".$polaczenie->connect_errno;
		
	}
?>
</form>
	
<form action="wylogowanie.php" method="post">
	<input type="submit" value="wyloguj się">
</form>
</body>

 

komentarz 17 czerwca przez Hubert Wajda Obywatel (1,140 p.)
i za kazdym razem, ksiazka dodaje sie po odswiezeniu, jak tego uniknac?
0 głosów
odpowiedź 17 czerwca przez VBService VIP (126,380 p.)
edycja 18 czerwca przez VBService

Możesz zrobić tak, dodaj atrybut name do button-ów submit

<input type="submit" name="add_book" value="Dodaj">

i

<input type="submit" name="delete_book" value="Usuń">

 

wtedy

<?php
  session_start();
  if(!isset($_SESSION['logowanie']) || $_SESSION['logowanie']==false) header('LOCATION: index.php');
    else if($_SESSION['login']!="login") header('LOCATION: konto.php');


  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
      // dla demonstracji ... do usunięcia
      var_dump($_POST);
    if (! empty($_POST['add_book'])) {
      // Tutaj twój kod dodawania książki
      // $server="localhost";
      // $user="root"; itd. ...

      $autor = $_POST['autor'];
      $tytul = $_POST['tytul'];

      $sql = "INSERT ...";

      // i dla echo $_SESSION['dodanieksiazki'];
      // $message_add_book = $_SESSION['dodanieksiazki'];
      // lub $message_add_book = 'Error '.$polaczenie->connect_errno;

      
      // dla demonstracji ... do usunięcia
      $message_add_book = "{$autor} {$tytul}";
    } else if (! empty($_POST['delete_book'])) {
      // Tutaj twój kod usuwania książki
      // $server="localhost";
      // $user="root"; itd. ...

      $autor = $_POST['autor'];
      $tytul = $_POST['tytul'];

      $sql = "DELETE ...";

      // analogicznie $message_delete_book = 'Error '.$polaczenie->connect_errno;

      
      // dla demonstracji ... do usunięcia
      $message_delete_book = "{$autor} {$tytul}";
    }
      
    if (empty($message_add_book)) $message_add_book = '';
    if (empty($message_delete_book)) $message_delete_book = '';
  } else {
    $message_add_book = '';
    $message_delete_book = '';
  }
?>

<body>
<br /> <br />

<form method="post">
    Książka która chcesz dodac do biblioteki: 
    <br /><br />
    autor
    <input type="text" name="autor" required>
    tytul
    <input type="text" name="tytul" required>
    <input type="submit" name="add_book" value="Dodaj">
    <p><?php echo $message_add_book; ?></p>
</form>

<br /> <br />

<form method="post">
    Ksiazke ktora chcesz usunąć z biblioteki:
    <br /><br />
    autor
    <input type="text" name="autor" required>
    tytul
    <input type="text" name="tytul" required>
    <input type="submit" name="delete_book" value="Usuń">
    <p><?php echo $message_delete_book; ?></p>
</form>

<br /> <br />
     
<form action="wylogowanie.php" method="post">
    <input type="submit" value="wyloguj się">
</form>
</body>

 

Podobne pytania

0 głosów
2 odpowiedzi 133 wizyt
pytanie zadane 4 maja 2016 w PHP przez Kuba Skoneczny Obywatel (1,780 p.)
0 głosów
2 odpowiedzi 156 wizyt
pytanie zadane 10 kwietnia 2020 w Java przez erykvest Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 141 wizyt
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

85,082 zapytań

133,883 odpowiedzi

296,819 komentarzy

56,216 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...