• 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
85 wizyt
pytanie zadane 17 czerwca 2021 w PHP przez Hubert Wajda Obywatel (1,440 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 2021 przez SzkolnyAdmin Maniak (70,340 p.)
Da się. Daj swój kod.

2 odpowiedzi

0 głosów
odpowiedź 17 czerwca 2021 przez CubeStorm Stary wyjadacz (14,960 p.)
wybrane 17 czerwca 2021 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 2021 przez Hubert Wajda Obywatel (1,440 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 2021 przez Hubert Wajda Obywatel (1,440 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 2021 przez VBService Mędrzec (178,910 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 2021 przez Hubert Wajda Obywatel (1,440 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 2021 przez Hubert Wajda Obywatel (1,440 p.)
i za kazdym razem, ksiazka dodaje sie po odswiezeniu, jak tego uniknac?
0 głosów
odpowiedź 17 czerwca 2021 przez VBService Mędrzec (178,910 p.)
edycja 18 czerwca 2021 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 140 wizyt
pytanie zadane 4 maja 2016 w PHP przez Kuba Skoneczny Obywatel (1,780 p.)
0 głosów
2 odpowiedzi 215 wizyt
pytanie zadane 10 kwietnia 2020 w Java przez erykvest Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 184 wizyt

88,664 zapytań

137,273 odpowiedzi

306,606 komentarzy

58,864 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

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

...