+1 Daumen
1,1k Aufrufe

ich will gerne für meine Webseite ein Kontaktformular machen.

Das klappt auch alles, nur die Daten werden nicht in die Datenbank gespeichert.

Quelltext:

<?php
$name = htmlspecialchars($_POST["name"]);
$user = htmlspecialchars($_POST["user"]);
$eMail = htmlspecialchars($_POST["eMail"]);
$URL = htmlspecialchars($_POST["URL"]);
$Nachricht = htmlspecialchars($_POST["Nachricht"]);

$datenbank = new mysqli (
"localhost", /* Datenbankhost */
"root", /*Benutzername */
"", /* Für XAMPP habe ich kein Passwort*/
"Kontakt" /*Tabellenname */
);
if(isset($_POST['absenden']))
{
if($datenbank -> query("INSERT INTO Kontakt (name, user, email, url, nachricht) VALUES ($name,$user,$eMail,$URL,$Nachricht) ")) {
echo "Erfolgreich in die Datenbank geschrieben!";
} else {
echo "Es konnte nicht in die Datenbank geschrieben werden!";
}
}

$datenbank -> close();
?>
<html>
<head>
<link rel="stylesheet" href="Style.css">

</head>
<body>
<div class="header">
<h2>Kontakt</h2>

</div>





<div class="row">
<div class="leftcoumn">
<div class="card">

<form action="index.php">
Dein Name:<br>
<input type="text" name="name" size="30"><br>

Dein Benutzername:<br>
<input type="text" name="user" size="30"><br>

Deine E-Mail Adresse:<br>
<input type="text" name="eMail" size="30"><br>

Deine Homepage:<br>
<input type="text" name="URL" size="30"><br>

Deine Nachricht:<br>
<textarea name="Nachricht" cols="34" rows="5"></textarea><br>

<input type="submit" name="absenden" value="Nachricht abschicken">
<input type="reset" value="Eingaben löschen">
</form>
</body>
</html>

Zuhause habe ich XAMPP und damit müsste gleichzeitig auch phpmyadmin sein.

Ich werde an die index.php weitergeleitet, alles klappt außer, dass die Daten nicht in die Datenbank gespeichert werden.


Außerdem kann ich die folgende Tabelle nicht erstellen:

CREATE TABLE IF NOT EXISTS 'users' (
  'id'      int(11) NOT NULL AUTO_INCREMENT,
  'username' varchar(255) NOT NULL,
  'password' varchar(255) NOT NULL,
  PRIMARY KEY ('id'),
  UNIQUE KEY 'username' ('username')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Da steht das es einen Fehler  "at line 1" gibt, ich weiß aber nicht warum?
Avatar von

1 Antwort

+1 Daumen

Wenn du keine Tabelle erstellt hast, kannst du dort auch nichts einfügen. Wie soll das funktionieren?

Es gibt Fehler in deinem Code zum Erstellen der MySQL-Tabelle, hier ist die richtige Version. Bitte nutze das Apostroph, um Felder zu benennen, und nicht die Anführungszeichen:

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY (`username`)
)

Nun wird die Tabelle ohne Fehler erstellt.

Siehe auch MySQL-Fiddle: http://sqlfiddle.com/#!9/5a392 (Button "Build Schema" klicken)

Zudem benutzt du als Insert-Befehl:

INSERT INTO Kontakt (name, user, email, url, nachricht) ...

Hast aber weder die Tabelle Kontakt, noch die genannten Felder dort erstellt, was selbstverständlich zu einem Fehler führen würde. Zudem gilt auch hier: Alle Felder mit Apostrophen umschließen.

Der Insert-Befehl ist also sauber:

INSERT INTO `kontakt` (`name`, `user`, `email`, `url`, `nachricht`) ...

Avatar von

Die Tabelle habe ich schon erstellt, nur hier nicht angegeben

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community