Ich habe gerade mit dem Erlernen von PHP begonnen, und ich stehe vor diesem Problem, wenn ich $ _SERVER ["PHP_SELF"] verwende, um auf dieselbe Seite umzuleiten, nachdem der Benutzer auf Senden geklickt hat. Das Problem sind die Variablen $ _POST [], die ich in meinem PHP-Skript auf der Seite verwendet habe, auf die ich zugreifen muss, nachdem der Benutzer auf Senden klickt und die Seite neu lädt. Aber beim ersten Durchlauf, wenn der Benutzer nicht auf Senden geklickt hat, sind die Variablen $ _POST leer und es werden Fehler auf der Seite selbst angezeigt. Natürlich gibt es keine Fehler, nachdem der Benutzer auf "Senden" und "Seite neu laden" geklickt hat. Ich möchte nach dem Senden nicht auf eine andere Seite umleiten. Wie umgehe ich diese Fehler beim ersten Durchlauf?PHP_SELF zeigt Fehler beim ersten Lauf an
Gibt es einen besseren Ansatz für das, was ich versuche zu tun?
Der Code für meine Seite ist hier:
<!DOCTYPE html>
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h3> Welcome!</h3>
</br></br>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" >
First Name: <input type="text" name="fname"> </br></br>
Last Name: <input type="text" name="lname"> </br></br>
Age: <input type="number" name="sage"> </br></br>
<input type="submit" value="Submit"></br></br>
</form>
<?php
$servername = "localhost";
$username = "user1";
$password = "abcd123";
$dbname = "myDbFromPhp";
$fname = $_POST["fname"]; /*Lines responsible for the errors, I think*/
$lname = $_POST["lname"];
$sage = $_POST["sage"];
if($fname != "" and $lname != "") /*Checking for empty vars*/
{
$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error)
{
die("Connection failed: ".$conn->connect_error);
}
echo "<h4>Connected successfully</h4>";
$sql = "INSERT INTO Students
(fname, lname, sage)
VALUES
('".$fname."','".$lname."',".(string)$sage.");" ;
if($conn->query($sql) === TRUE)
{
echo "<h4>Value entered successfully</h4>";
}
else
{
echo "</br>Error creating record</br>".$conn->error;
}
$conn->close();
}
?>
</body>
</html>
Die Seite einfach eine Eingabe von dem Benutzer nimmt (Student: Vorname, Name, Alter), und wenn Klicks Benutzer hochladen, neu geladen und speichert sie zu einer Datenbank.