Mit PHP in MySQL Datenbank schreiben
Hallo alle zusammen!
Ich habe mir ein Mini-Formular gebaut. Hier soll der User einen Wert eingeben. Dieser Wert wird dann in eine Datenbank geschrieben.
Ist das Feld leer, soll eine entsprechende Meldung erscheinen.
Beispiel:
User gibt den Wert "12334" ein. Diesen Wert soll das Skript in die MySQL Datenbank schreiben.
Leider funktioniert weder meine Abfrage ob das Feld leer ist noch die Eintragung in die Datenbank.
Was mache ich falsch?
Hier mein Mini-Skript:
Ein schönes Wochenende an alle!
LG
Tommy
Ich habe mir ein Mini-Formular gebaut. Hier soll der User einen Wert eingeben. Dieser Wert wird dann in eine Datenbank geschrieben.
Ist das Feld leer, soll eine entsprechende Meldung erscheinen.
Beispiel:
User gibt den Wert "12334" ein. Diesen Wert soll das Skript in die MySQL Datenbank schreiben.
Leider funktioniert weder meine Abfrage ob das Feld leer ist noch die Eintragung in die Datenbank.
Was mache ich falsch?
Hier mein Mini-Skript:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DE"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Adminbereich</title>
</head>
<body>
<?php
// Einbindung der Verbindungsdaten
?>
Neuen User in der Datenbank anlegen:
<form action="start2.php" method="get">
Name des Users:
<input type="text" name="username">
<input type="submit" value="Daten eintragen">
<input type="reset" value="Felder leeren">
</form>
<?php
// Senden der Daten in die Datenbank
if (isset($_POST["username"]))
{
$username = $_POST["username"];
// Datenbankeintrasg als Array
$verbindung = mysql_connect ("localhost","username", "passwort")
or die ("keine Verbindung möglich.
Benutzername oder Passwort sind falsch");
mysql_select_db("datenbankname")
or die ("Die Datenbank existiert nicht.");
mysql_query("UPDATE `orders` SET `orders_status` = '1' WHERE `orders`.`orders_id` = ('$username');");
echo("Neuer Eintrag wurde erstellt.");
}
else
echo "Bitte zuerst Daten eingeben!"
?>
</body>
</html>
LG
Tommy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 212562
Url: https://administrator.de/forum/mit-php-in-mysql-datenbank-schreiben-212562.html
Ausgedruckt am: 23.12.2024 um 01:12 Uhr
7 Kommentare
Neuester Kommentar
Hallo Tommy,
ich nehme deinen Code mal einfach auseinander...
1.
Bitte verwende doch die Formatierungshilfe dieses Forums, das erleichtert uns das Lesen der Beiträge ungemein z.B code-Tags diese sind auch nachträglich noch einfügbar ;)
2.
In deinem Formular verwendest du die Methode GET,
versuchst aber in PHP mit $_POST auf die Felder zuzugreifen - siehst du deinen Fehler ?
3.
Prüft lediglich ob diese POST-Variable existiert, aber nicht ob sie einen Inhalt hat, leer, NULL oder sonst etwas ist - hier mal etwas genauer werden.
4.
Sind zwar gerne in Beispielen genommen aber um richtiges und vorallem valides HTML zu erhalten braucht man auch die schließenden HTML-Tags die nach dem ganzem PHP kommen. So etwas kann einem das ganze Design zerschießen (z.B fehlt dann auch der Footer). Denn das "die()" beendet das Script nach seine Ausgabe ! alles folgende fehlt also
Hier lieber ebenfalls mit IF-Bedingung arbeiten, dann kann man auch spezieller auf die Fehler eingehen.
5.
Woher weist du das das Query tatsächlich erfolgreich war ? Auch dieses kann noch schief gehen - schau dir den Rückgabewert der Funktion an. PHP-Manual - mysql_query()
Jetzt sehe ich gerade selber: Die Unterstützung der alten API wird in Version 5.5.0 eingestellt ! Wechsel also lieber JETZT zur neuen PHP-Manual - MySQLi
6.
Bevor es jemand anderer Postet:
Schau dir mal SQL-Injection (Wiki) an.
Also 1 und 2 sind wichtig und der Rest sind gute Hinweise für die Zukunft
Ebenfalls ein schönes Wochenende
~Arano
ich nehme deinen Code mal einfach auseinander...
1.
Bitte verwende doch die Formatierungshilfe dieses Forums, das erleichtert uns das Lesen der Beiträge ungemein z.B code-Tags diese sind auch nachträglich noch einfügbar ;)
2.
In deinem Formular verwendest du die Methode GET,
versuchst aber in PHP mit $_POST auf die Felder zuzugreifen - siehst du deinen Fehler ?
3.
if (isset($_POST["username"]))
4.
... or die(" ")...
Hier lieber ebenfalls mit IF-Bedingung arbeiten, dann kann man auch spezieller auf die Fehler eingehen.
5.
mysql_query(...);
echo "erfolgt"
Jetzt sehe ich gerade selber: Die Unterstützung der alten API wird in Version 5.5.0 eingestellt ! Wechsel also lieber JETZT zur neuen PHP-Manual - MySQLi
6.
Bevor es jemand anderer Postet:
Schau dir mal SQL-Injection (Wiki) an.
Also 1 und 2 sind wichtig und der Rest sind gute Hinweise für die Zukunft
Ebenfalls ein schönes Wochenende
~Arano
Hi Tommy,
denke auch dran, dass du eine UPDATE-Anweisung angegeben hast und keinen INSERT.
Insofern muss es in der Tabelle orders bereits einen Datensatz mit orders_id = $username existieren, damit der Status auf 1 gesetzt werden kann.
Und generell solltest du alle Variablen, die in die SQL-Befehle eingebunden werden säubern.
LG boulder02
denke auch dran, dass du eine UPDATE-Anweisung angegeben hast und keinen INSERT.
Insofern muss es in der Tabelle orders bereits einen Datensatz mit orders_id = $username existieren, damit der Status auf 1 gesetzt werden kann.
Und generell solltest du alle Variablen, die in die SQL-Befehle eingebunden werden säubern.
LG boulder02
Moin,
schönes Thema. Vielleicht schaut sich die interessierte Gemeinde mal meinen Formulareditor an.
http://www.manbergen.de/html/mysqlerstellen.php
Hiermit erstelle ich meine Formulare und möchte mal die Gelegenheit nutzen und um Rückmeldung bitten.
Danke
Hügel
schönes Thema. Vielleicht schaut sich die interessierte Gemeinde mal meinen Formulareditor an.
http://www.manbergen.de/html/mysqlerstellen.php
Hiermit erstelle ich meine Formulare und möchte mal die Gelegenheit nutzen und um Rückmeldung bitten.
Danke
Hügel
Hi Hügel
ich hau einfach mal drauf
Warum
Diese Funktion hat eine zweiten Parameter bzw es gibt auch eine andere Funktion die man nutzen könnte
Frage: Wie hat man es richtig zu verwenden ?
Außerdem schließt du die Tags am Ende auch in falscher Reihenfolge !
<form><table> ... </table></form
Tabellen sollten nicht als Design verwendet werden.
Die Verschachtelung ist voll im Eimer
Nicht auf die netteste Weise aber fair denke ich
Und um noch meinen eigenen Senf dazu zugeben:
Da Formulare in der Regel alle sehr unterschiedlich sind muss man auch hier noch, um sie an die eigenen Bedürfnisse anzupassen, einiges abändern... da kann man auch gleich alles selber schreiben. Bzw. wenn jemandem das Erstellen des Formulars schon "zu viel" ist, was macht derjenige dann mit der verarbeitenden Logik: Plausibilitätsüberprüfung, Fehlerbehandlungen, Statusausgaben, ...
~Arano
ich hau einfach mal drauf
$Abfrage = mysql_query ("Select * from tabelle WHERE 1");
while ($row=mysql_fetch_array($Abfrage) )
Auch dich frage ich, woher WEISST du das die Abfrage erfolgreich war ? Wenn sie es nämlich nicht war wird while ($row=mysql_fetch_array($Abfrage) )
mysql_fetch_array()
eine Fehlermeldung werfen weil sie als 1.Parameter eine "MySQL-Resourcenkennung" erwartet !Warum
_fetch_ARRAY()
? Dies belegt doppelt soviel Speicher wie benötigt ! s. print_r( mysql_fetch_array( $resource ) )
Diese Funktion hat eine zweiten Parameter bzw es gibt auch eine andere Funktion die man nutzen könnte
$Bitte = $row[Bitte];
Auch das sollte eine PHP-Notice erzeugen ! Hier wird "Bitte" nämlich als KONSTANTE verwendet, die existiert aber NICHT ! PHP versucht es in diesem Zusammenhang dann als Zeichenkette - richtig ist es aber dennoch nicht !Frage: Wie hat man es richtig zu verwenden ?
Update tabelle ... where `Bitte` = ′$Bitte′
Gefällt mir auch nicht. Zeichenketten stehen in doppelten (") oder einfachen (') Anführungszeichen - weiss aber selber nicht genau ob (´) akzeptabel ist.<table border = 1 CELLSPACING=3 CELLPADDING=3>
<form action="" method="post">
Ich bin mir ziemlich sicher, das zwischen den <table>-Tags keine <form>-Tag zulässig ist !<form action="" method="post">
Außerdem schließt du die Tags am Ende auch in falscher Reihenfolge !
<form><table> ... </table></form
Tabellen sollten nicht als Design verwendet werden.
<tr><td>Bitte<td><input type="text" name="Bitte" value="′.$Bitte.′">
<tr><td>den<td><input type="text" name="den" value="′.$den.′">
Hier fehlen sowohl die schließenden <td>-Tags als auch die <tr>-Tags =<tr><td>den<td><input type="text" name="den" value="′.$den.′">
<table>
<tr>
<td>
<tr>
<td>
<tr>
<td>
<tr>
<td>
</table>
möchte mal die Gelegenheit nutzen und um Rückmeldung bitten.
Dem bin ich nachgekommen Nicht auf die netteste Weise aber fair denke ich
Und um noch meinen eigenen Senf dazu zugeben:
Da Formulare in der Regel alle sehr unterschiedlich sind muss man auch hier noch, um sie an die eigenen Bedürfnisse anzupassen, einiges abändern... da kann man auch gleich alles selber schreiben. Bzw. wenn jemandem das Erstellen des Formulars schon "zu viel" ist, was macht derjenige dann mit der verarbeitenden Logik: Plausibilitätsüberprüfung, Fehlerbehandlungen, Statusausgaben, ...
~Arano
Hi Arano,
Danke für deine Kommentare. Werde sie mir noch mal durch den Kopf gehen lassen.
Alle deine benannten "Fehler" funktionieren bei mr hervorragend. Nutze diesen Editor seit Jahren und es klappt alles.
Trotzdem Danke.
"Da Formulare in der Regel alle sehr unterschiedlich sind muss man auch hier noch, um sie an die eigenen Bedürfnisse anzupassen, einiges abändern... da kann man auch gleich alles selber schreiben."
Da hast du aber die Anleitung nicht gelesen
Gruß
Hügel
Danke für deine Kommentare. Werde sie mir noch mal durch den Kopf gehen lassen.
Alle deine benannten "Fehler" funktionieren bei mr hervorragend. Nutze diesen Editor seit Jahren und es klappt alles.
Trotzdem Danke.
"Da Formulare in der Regel alle sehr unterschiedlich sind muss man auch hier noch, um sie an die eigenen Bedürfnisse anzupassen, einiges abändern... da kann man auch gleich alles selber schreiben."
Da hast du aber die Anleitung nicht gelesen
Gruß
Hügel
Hi Hügel.
Freut mich wenn sie dich zum drüber nachdenken bewegen.
__Problem 1__ ist ja kein Syntaxproblem bzw. verursacht ja nicht direkt einen Fehler.
Aber wenn es zu einem Fehler kommt, kracht es hier gleich noch ein mal und das mit Sicherheit !
Wie dichtes Auffahren auf der Autobahn... direkt passieren tut ja nichts, km für km. ABER wenn der Vordermann einen Fehler macht, zieht es den dahinter gleich mit in die Sch... und das verschlimmert alles um ein vielfaches !
__Problem 2__ wenn du seitens PHP deswegen keine Meldung siehst (PHP-Notice liegt das lediglich daran, das der
Nur weil man sich die Hände vor die Augen hält - verschwinden die Probleme nicht
__Problem 3__ ich habe ja selber schon angedeutet das ich mir nicht sicher bin. Da ich nun in der Dokumentation (auch "die Anleitung" genannt ) geblättert habe: Nö da steht nur etwas zu "single and double quotes" MySQL Reference - 9.1.1. String Literals
__Problem 4 und 5__ Auch hier gibt es eine Anleitung; Versuche das doch einfach mal im Validator W3C - Validator
Ist zwar ziemlich die "ganz oder garnicht"-Tour ABER wenn ich das schon lerne, dann doch gleich richtig
Viel Spaß am Wochenende
~Arano
PS: Das sollte jetzt keine "weiterführende Kritik" sein ! Mir ging es hier lediglich um deine Aussage das doch alles funktioniere
Danke für deine Kommentare. Werde sie mir noch mal durch den Kopf gehen lassen.
Kein Problem, hast ja darum gebeten.Freut mich wenn sie dich zum drüber nachdenken bewegen.
Alle deine benannten "Fehler" funktionieren bei mr hervorragend.
Dann haben wir einfach eine ziemlich unterschiedliche Definition von "hervorragend" __Problem 1__ ist ja kein Syntaxproblem bzw. verursacht ja nicht direkt einen Fehler.
Aber wenn es zu einem Fehler kommt, kracht es hier gleich noch ein mal und das mit Sicherheit !
Wie dichtes Auffahren auf der Autobahn... direkt passieren tut ja nichts, km für km. ABER wenn der Vordermann einen Fehler macht, zieht es den dahinter gleich mit in die Sch... und das verschlimmert alles um ein vielfaches !
__Problem 2__ wenn du seitens PHP deswegen keine Meldung siehst (PHP-Notice liegt das lediglich daran, das der
error_level
zu gering eingestellt und/oder display_errors
in der PHP-Konfiguration ausgeschaltet ist.Nur weil man sich die Hände vor die Augen hält - verschwinden die Probleme nicht
__Problem 3__ ich habe ja selber schon angedeutet das ich mir nicht sicher bin. Da ich nun in der Dokumentation (auch "die Anleitung" genannt ) geblättert habe: Nö da steht nur etwas zu "single and double quotes" MySQL Reference - 9.1.1. String Literals
__Problem 4 und 5__ Auch hier gibt es eine Anleitung; Versuche das doch einfach mal im Validator W3C - Validator
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>test</title>
</head>
<body>
<table>
<form action="">
<tr>
<td>
</td>
</tr>
</form>
</table>
</body>
</html>
- ERROR: Line 9, Column 22: document type does not allow element "FORM" here
- ERROR: Line 10, Column 12: document type does not allow element "TR" here
- ERROR: Line 14, Column 12: end tag for "TABLE" which is not finished
Alle deine benannten "Fehler" funktionieren bei mr hervorragend.
Nur weil es funktioniert, heißt es nicht das es richtig istIst zwar ziemlich die "ganz oder garnicht"-Tour ABER wenn ich das schon lerne, dann doch gleich richtig
Viel Spaß am Wochenende
~Arano
PS: Das sollte jetzt keine "weiterführende Kritik" sein ! Mir ging es hier lediglich um deine Aussage das doch alles funktioniere