PHP, MySQL und Datenhandling Probleme
hallo, ich bin im php und mysql bereich absoluter anfänger und habe die aufgabe eine faq datenbank aufzubauen (kein fertigscript) und komme nicht weiter. die funktionen sind denkbar einfach. aber ich habe erst den ersten teil begonnen.
- daten (frage, antwort usw.) per form und php an mysql db übergeben
- daten aus db auslesen und anzeigen
- daten verändern können
die mysql db ist eingerichtet und die zugangsdaten stimmen auch. nun habe ich mich im netz ein wenig umgeschaut und ein script geschrieben. die connection zur db funktioniert, das script scheinbar auch, doch es werden keine daten in der db sichtbar. kann mir jemand helfen? hier der code. vieleicht sieht ja jemand meinen fehler?!
ach ja...ich bekomme beim absenden folgende fehlermeldung:
Notice: Undefined index: Frage in C:\xxx\xxx\xxx\eintrag.php on line 14
Notice: Undefined index: Antwort in C:\xxx\xxx\xxx\eintrag.php on line 15
Notice: Undefined index: Keywords in C:\xxx\xxx\xxx\eintrag.php on line 16
Notice: Undefined index: Bilder in C:\xxx\xxx\xxx\eintrag.php on line 17
index.php
<form action="eintrag.php" method=post>
Frage <br>
<textarea id="Frage" rows=7 cols=50></textarea>
<br>
<br>
Antwort<br>
<textarea id="Antwort" rows=7 cols=50></textarea>
<br>
<br>
Keywords<br>
<input type="Text" size="65" id="Keywords">
<br>
<br>
Bilder<br>
<input type="Text" size="65" id="Bilder">
<input type="submit" value="Send"> <input type="reset" value="Reset">
</form>
eintrag.php
<?php
include 'inc/config.php';
error_reporting(E_ALL);
mysql_connect("$host","$user","$password") or die ("Keine Verbindung");
mysql_select_db("$dbname") or die ("Die Datenbank ist nicht da");
$Frage = $_POST["Frage"];
$Antwort = $_POST["Antwort"];
$Keywords = $_POST["Keywords"];
$Bilder = $_POST["Bilder"];
$eintragen = "INSERT INTO $dbtable VALUES ('$Frage', '$Antwort', '$Keywords', '$Bilder')";
$eintragen = mysql_query($eintragen);
?>
config.php
<?php
$host = "localhost";
$user = "xxx";
$password = "xxx";
$dbname = "xxx";
$dbtable = "faq";
?>
- daten (frage, antwort usw.) per form und php an mysql db übergeben
- daten aus db auslesen und anzeigen
- daten verändern können
die mysql db ist eingerichtet und die zugangsdaten stimmen auch. nun habe ich mich im netz ein wenig umgeschaut und ein script geschrieben. die connection zur db funktioniert, das script scheinbar auch, doch es werden keine daten in der db sichtbar. kann mir jemand helfen? hier der code. vieleicht sieht ja jemand meinen fehler?!
ach ja...ich bekomme beim absenden folgende fehlermeldung:
Notice: Undefined index: Frage in C:\xxx\xxx\xxx\eintrag.php on line 14
Notice: Undefined index: Antwort in C:\xxx\xxx\xxx\eintrag.php on line 15
Notice: Undefined index: Keywords in C:\xxx\xxx\xxx\eintrag.php on line 16
Notice: Undefined index: Bilder in C:\xxx\xxx\xxx\eintrag.php on line 17
index.php
<form action="eintrag.php" method=post>
Frage <br>
<textarea id="Frage" rows=7 cols=50></textarea>
<br>
<br>
Antwort<br>
<textarea id="Antwort" rows=7 cols=50></textarea>
<br>
<br>
Keywords<br>
<input type="Text" size="65" id="Keywords">
<br>
<br>
Bilder<br>
<input type="Text" size="65" id="Bilder">
<input type="submit" value="Send"> <input type="reset" value="Reset">
</form>
eintrag.php
<?php
include 'inc/config.php';
error_reporting(E_ALL);
mysql_connect("$host","$user","$password") or die ("Keine Verbindung");
mysql_select_db("$dbname") or die ("Die Datenbank ist nicht da");
$Frage = $_POST["Frage"];
$Antwort = $_POST["Antwort"];
$Keywords = $_POST["Keywords"];
$Bilder = $_POST["Bilder"];
$eintragen = "INSERT INTO $dbtable VALUES ('$Frage', '$Antwort', '$Keywords', '$Bilder')";
$eintragen = mysql_query($eintragen);
?>
config.php
<?php
$host = "localhost";
$user = "xxx";
$password = "xxx";
$dbname = "xxx";
$dbtable = "faq";
?>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95967
Url: https://administrator.de/forum/php-mysql-und-datenhandling-probleme-95967.html
Ausgedruckt am: 09.01.2025 um 01:01 Uhr
11 Kommentare
Neuester Kommentar
In Deinem ersten Posting hatten die Formularfelder nur eine ID, keinen Namen.
Erhälst Du eine Fehlermeldung?
Was gibt denn folgender Code aus:
Er zeigt Dir die Query, die an die DB geschickt werden soll an, gibt sie aber nicht an die DB weiter.
Erhälst Du eine Fehlermeldung?
Was gibt denn folgender Code aus:
<?php
include 'inc/config.php';
error_reporting(E_ALL);
mysql_connect("$host","$user","$password") or die ("Keine Verbindung");
mysql_select_db("$dbname") or die ("Die Datenbank ist nicht da");
$Frage = $_POST["Frage"];
$Antwort = $_POST["Antwort"];
$Keywords = $_POST["Keywords"];
$Bilder = $_POST["Bilder"];
$eintragen = "INSERT INTO $dbtable VALUES ('$Frage', '$Antwort', '$Keywords', '$Bilder')";
// SQL Query nur anzeigen
echo $eintragen;
//$eintragen = mysql_query($eintragen);
?>
Er zeigt Dir die Query, die an die DB geschickt werden soll an, gibt sie aber nicht an die DB weiter.
Moin,
wie ist denn deine Datenbanktabelle strukturiert ?
Sind: "Frage", "Antwort", "Keywords", "Bilder" alle deine Spalten ?
Ich habe mir mal erlaubt deinen Quelltext etwas zu erweitern:
Gruß Arano
wie ist denn deine Datenbanktabelle strukturiert ?
Sind: "Frage", "Antwort", "Keywords", "Bilder" alle deine Spalten ?
Ich habe mir mal erlaubt deinen Quelltext etwas zu erweitern:
<?php
include 'inc/config.php';
error_reporting(E_ALL);
mysql_connect($host,$user,$password) or die ('Keine Verbindung');
mysql_select_db($dbname) or die ('Die Datenbank ist nicht da');
// Array zum Speichern der Felder die nicht korrekt ausgefuellt wurden.
$errorFields = array();
// Eingaben vor ueberpruefung, wurden die Felder ausgefuellt und bestehen sie nicht aus leerzeichen
// isset() = wurde das Feld uebertragen (ausgefuellt)
// trim() entfernt alle leerzeichen am Anfang und Ende der Zeichenkette
// bedingung ? wahr : falsch <- eine kurzform von if(){}else{}
$Frage = isset($_POST['Frage']) && trim($_POST['Frage'])!="" ? $_POST['Frage'] : NULL;
$Antwort = isset($_POST['Antwort']) && trim($_POST['Antwort'])!="" ? $_POST['Antwort'] : NULL;
$Keywords = isset($_POST['Keywords']) && trim($_POST['Keywords'])!="" ? $_POST['Keywords'] : NULL;
$Bilder = isset($_POST['Bilder']) && trim($_POST['Bilder'])!="" ? $_POST['Bilder'] : NULL;
// Detailiertere pruefung der Eingaben
// Wenn unzureichend wird der Name (o.Titel) des Feldes in das Array $errorFields gespeichert
if(is_null($Frage) || strlen($Frage)<3 || strlen($Frage)>100) $errorFields = 'Frage';
if(is_null($Antwort) || strlen($Antwort)<3 || strlen($Antwort)>100) $errorFields = 'Antwort';
if(is_null($Keywords) || strlen($Keywords)<3 || strlen($Keywords)>100) $errorFields = 'Keywords';
if(is_null($Bilder) || strlen($Bilder)<3 || strlen($Bilder)>100) $errorFields = 'Bilder';
// Gab es einen Fehler bei den Eingaben ?
if(empty($errorFields)){
// Es gabe keine Fehler bei den Eingabedaten - Mach weiter...
// Queery zusammensetzen
$query = "INSERT INTO `$dbtable`
(`Frage`,`Antwort`,`Keys`,`Bilder`)
VALUES ('$Frage', '$Antwort', '$Keywords', '$Bilder')";
// Query an Datenbank schicken. Das @ unterdruekt die Fehlermeldungen die wir ja eine Zeile spaeter selber pruefen.
$result = @mysql_query($query);
// Antwort ueberpruefen
if($result===TRUE){
echo 'Alles erfolgreich eingetragen !<br>';
} else {
echo 'Es gab einen Fehler beim eintragen in die Datenbank: #'.mysql_errno().'<br>'.mysql_error().'<br>';
}
} else{
// Fehler bei den Eingabedaten - Stoppe !
echo 'Die Felder "'.implode('", "',$errorFields).'" wurden nicht korrekt ausgefüllt !<br>
<a href="./index.php" title="zum Eingabeformular">zurück zum Eingabeformular</a><br>';
}
?>