Form, Datenbank Problem

freakcx

Erfahrenes Mitglied
Hallo zusammen!

Habe mein erstes PHP Script in Verbindung mit einer Datenbank geschrieben und stehe jetzt vor ein paar Problemen.

1. Wenn ich die Seite besuche trägt er automatisch ein leeren Eintrag in die Datenbank ein was ich nicht will!

2. Er gibt mir unten in der Tabelle wo er mir den Inhalt der DB ausgeben soll nur das aus: " Resource id #3 "

3. Habe einige Tutorials gelesen aber die behandeln nur grob oder gar nicht wie man Einträge editieren kann wenn sie einmal in der Datenbank sind (über den Browser)

4. Wie bekomme ich das hin das er die dateien bearbeitbar wieder in die form einließt?

Bin für jedes Tutotorial oder jeden Code Schnipsel dankbar!

Danke im Vorraus!

PHP:
<?
//Zurgriffs Daten
$mysql_user = '';
$mysql_pw = '';
$mysql_host = '';
$mysql_db = '';
//Datenbank Zugriff
if (@mysql_connect($mysql_host, $mysql_user, $mysql_pw))
{
    echo "Es wurde erfolgreich zur Datenbank verbunden.<br>";
}
else
{
    die('Zur Datenbank konnte nicht verbunden werden!');
}
if (@mysql_select_db($mysql_db))
{
    echo "Es wurde erfolgreich die Tabelle ausgewählt.<br>";
}
else
{
    die('Tabelle $mysql_db konnte nicht gefunden werden');
}
	$e_name = $HTTP_POST_VARS["enginetitle"];
	$e_year = $HTTP_POST_VARS["engineyear"];
	$e_spin = $HTTP_POST_VARS["enginerevolution"];
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Drehmaschinen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body><center>
<form method="post" action="drehmaschinen.php">
Maschinen Name:<br>
<input type="text" name="enginetitle"><br><br>
Baujahr:<br>
<input type="text" name="engineyear"><br><br>
Drehzahl des Motors:<br>
<input type="text" name="enginerevolution"><br><br>
<input style="font-weight: bold; font-size: 10pt; font-family: Arial" type="submit" value="eintragen">
</form>
<?

$eintrag = "INSERT INTO drehmaschinen (enginetitle, engineyear, enginerevolution) VALUES ('$e_name','$e_year','$e_spin')";
$eintragen = mysql_query($eintrag);


?>
</center>
<br>
<table width="477" height="140" border="1" cellpadding="0" cellspacing="0">
  <tr>
    <td>
	<?
	$ausgabe=(mysql_query('SELECT enginetitle FROM drehmaschinen'));
	echo "$ausgabe";
	?></td>
  </tr>
</table>
</body>
</html>
 
Hallo, willkommen in der Welt der PHP-Programmierer!

Ersetze vorab $HTTP_POST_VARS; durch $_POST, das ist neuer, das alte läuft irgendwann aus.

Nach deinem Code wird jedesmal, wenn die seite geladen wird, ein insert angestossen und nicht nur dann, wenn du den Button gedrückt hast.
Ausserdem steht dieser mitten im Formular.
Drittens fügst du Daten vom Typ String in die Datenbank ein, das musst du ihr auch sagen, indem du sie kennzeichnest.
Richtig wäre es dann so:
PHP:
    $e_name = $_POST['enginetitle'];
    $e_year = $_POST['engineyear'];
    $e_spin = $_POST['enginerevolution'];

if($_POST['submit']=='eintragen') {
mysql_query('INSERT INTO drehmaschinen (enginetitle, engineyear, enginerevolution) VALUES ("'.$e_name.'","'.$e_year.'","'.$e_spin.'")');
}
?>
[phpf]mysql_query[/phpf] hat keine Ausgabe ausser true und false.
Wenn du das Ergebnis einer Abfrage benötigst, dann musst du sie dir z.B. via [phpf]mysql_fetch_array[/phpf]in ein Array holen.
Jetzt muss jemand anderes weitermachen, ich muss los, sorry :D
 
Vielen Dank erstmal für die schnelle Hilfe! Habe alles so geändert, gibt jetzt nur ein Problem... er übergibt keine Daten mehr an die Datenbank :confused:
 
dann überprüfe doch mal die
if abfrage

if($_POST['submit']=='eintragen') {
mysql_query('INSERT INTO drehmaschinen (enginetitle, engineyear, enginerevolution) VALUES ("'.$e_name.'","'.$e_year.'","'.$e_spin.'")');
}

dann ist es wichtig das

im formular auch sowas steht:

<input "submit" value="eintragen">
 
Ja das hab ich... so sieht das script aus:

PHP:
if (@mysql_connect($mysql_host, $mysql_user, $mysql_pw))
{
    echo "Es wurde erfolgreich zur Datenbank verbunden.<br>";
}
else
{
    die('Zur Datenbank konnte nicht verbunden werden!');
}
if (@mysql_select_db($mysql_db))
{
    echo "Es wurde erfolgreich die Tabelle ausgewählt.<br>";
}
else
{
    die('Tabelle $mysql_db konnte nicht gefunden werden');
}
 	$e_name = $_POST['enginetitle'];
    $e_year = $_POST['engineyear'];
    $e_spin = $_POST['enginerevolution'];
	
	if($_POST['submit']=='eintragen') 
{
mysql_query("INSERT INTO drehmaschinen (enginetitle, engineyear, enginerevolution) VALUES ('.$e_name.', '.$e_year.', '.$e_spin.')");
echo "Gesendet";
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Drehmaschinen</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<center>
<form method="post" action="drehmaschinen.php">
Maschinen Name:<br>
<input type="text" name="enginetitle"><br><br>
Baujahr:<br>
<input type="text" name="engineyear"><br><br>
Drehzahl des Motors:<br>
<input type="text" name="enginerevolution"><br><br>
<input style="font-weight: bold; font-size: 10pt; font-family: Arial" type="submit" value="eintragen">
</form>
</center>
<br>
</body>
</html>
 
Besser ist es, dem Absenden-Steuerelement einen Namen zuzuweisen (beispielsweise name="submit:Eintragen") und die Existenz des entsprechenden Parameters zu prüfen (isset($_POST['submit:Eintragen'])). Denn würde man die Beschriftung des Steuerelements ändern, müsste man auch das Skript ändern.
 
Besser ist das :-) Vielen Dank! Jetzt klappts! Werde mich wegen dem editieren und auslesen mal hinsetzen! Hat jemand ein paar Gedankenanstöße?

Ansonsten Danke für die Hilfe!
 
Zurück