• 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
49 wizyt
pytanie zadane 17 czerwca w PHP przez Hubert Wajda Obywatel (1,100 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 (53,120 p.)
Da się. Daj swój kod.

2 odpowiedzi

0 głosów
odpowiedź 17 czerwca przez CubeStorm Stary wyjadacz (11,860 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,100 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,100 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 (113,880 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,100 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,100 p.)
i za kazdym razem, ksiazka dodaje sie po odswiezeniu, jak tego uniknac?
0 głosów
odpowiedź 17 czerwca przez .::VBService::. VIP (113,880 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 142 wizyt
pytanie zadane 10 kwietnia 2020 w Java przez erykvest Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 129 wizyt
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.Komentarze

84,092 zapytań

132,861 odpowiedzi

293,830 komentarzy

55,530 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.

...