online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Tumulus vom 13.05.2020, 22:38 Options

SQL-DB über HTML via PHP befüllen - wie ?

...hallo,

es gibt hier zwar einige beiträge, die sich damit befassen, wie eine sql-db über eine html-site unter verwendung von php befüllt werden kann, aber ich habe noch keine lösung erkennen können. bei mir ist es so, dass das abfrageskript einwandfrei funktioniert, aber sobald ich einträge (insert into) vornehmen möchte, funktioniert es einfach nicht. weder bei mir lokal (xampp) noch bei meinem webhoster. wäre super wenn ihr mir tipps geben könntet.

hier meine html-site:

<html>
<form action "eingabe.php" method="post">
Name: <input type="text" name="Name" />
Vorname: <input type="text" name="Vorname" />
Alter: <input type="text" name="age" />
<input type="submit" value="weg damit">
</form>
</html>

und hier mein php-skript:

<?php
$server="xxx";
$user="xxx;
$password="xxx";
$datenbank="xxx";
$verbindung=mysql_connect($server, $user, $password) or die ("keine Verbindung");
mysql_select_db($datenbank) or die ("keine DB");
$eintrag="insert into Test (Name, Vorname, AlterGeb) values ('$_POST["Name"]','$_POST["Vorname"]','$_POST["age"]')";
$reindamit=mysql_query($eintrag);
$ausgabe=mysql_exec($verbindung, $reindamit);
?>


Antwort schreiben

Antwort 1 von rabies vom 15.05.2020, 11:33 Options

Punkt 1: mysql_exec gibt es nicht, es sei denn Du hast selbst so eine Funktion definiert.

Punkt 2: Durch die verschiedenen Hochkommatas und Anführungszeichen könnte der Parser ins Rudern kommen. Schöner:
$eintrag = 'INSERT INTO Test (Name, Vorname, AlterGeb) VALUES (\''.$_POST["Name"].'\', \''.$_POST["Vorname"].'\', '.$_POST["age"].')';
Wobei ich hier davon ausgehe, dass die Werte Vorname und Name vom Typ (VAR)CHAR sind und age den Typ INT hat. Das ist auch der Grund, warum ich für Vorname und Name \' vorran- und nachstelle.

Punkt 3: Versuch mal mysql_query($eintrag) or die(mysql_error()); Gibt es eine Fehlermeldung? Wenn ja, welche?

'Funktioniert nicht' ist keine Fehlerbeschreibung. Gibt es Fehlermeldungen? Direkt in der Datenbank nachgeschaut, ob eventuell doch Einträge vorgenommen wurden? Hast Du die Werte der mit $_POST übergebenen Variablen überprüft; eventuell leer?

Zudem solltest Du bedenken, dass das SQL-Statement, wenn Du die $_POST Daten ohne Prüfung auf den Inhalt übergibst, manipulierbar ist - und somit ein großes Sicherheitsloch darstellt. Du solltest hier jeweils überprüfen, was darin steht. Als einfache Methode, Dich gegen Angriffe abzuschützen, solltest Du zumindest (das heißt, dass auch dies keinen allumfassenden Schutz bietet) mysql_real_escape_string() verwenden.

--rabies.

Antwort 2 von Tumulus vom 15.05.2020, 21:33 Options

...zunächst erstmal vielen dank für die antwort !

zu 1)
brauche ich dann einen anderen ausführungsbefehl ???_exec??? - wenn ja - welchen ?

zu 2 und 3)
habe ich ausprobiert - -funktioniert aber leider auch nicht. d. h. dass ich die daten zwar in mein html-formular eingeben kann, aber leider nichts in der datenbank ankommt. fehlermeldung wird gar keine ausgegeben. vielmehr erscheint nach dem absendebutton einfach wieder die eingabemaske mit leeren feldern.


zu "Hast Du die Werte der mit $_POST übergebenen Variablen überprüft; eventuell leer? "

-> wie kann ich das denn überprüfen ?

vielleicht habe ich auch einen systematischen fehler. ich habe eine mysql-datenbank bei einem webhoster und habe dort das html-eingabeformular und das php-verarbeitungsskript abgelegt. brauche ich vielleicht irgendwie noch einen ODBC-dingens ?

thnx.

(ich bin noch anfänger... :) )

Antwort 3 von rabies vom 15.05.2020, 22:37 Options

Du brauchst gar keinen Befehl zum Ausführen. mysql_query führt das Statement schon aus und sendet es an den Server.

Werte überprüfen: einfach mal mit
echo $_POST['Name'];
ausgeben lassen oder
print_r($_POST);
benutzen, um gleich sämtliche per POST übermittelte Daten abzufragen.

Nein, Du wirst bestimmt kein ODBC brauchen. Der Webhoster wird PHP schon so eingerichtet haben, dass es fehlerfrei mit MySQL sprechen kann.

mysql_query($eintrag) or die(mysql_error());
gibt wirklich nichts aus?

Wie sieht's damit aus:
mysql_connect(...Deine Verbindungsdaten...) or die(mysql_error());

Wird eventuell die Verbindung gar nicht korrekt hergestellt?

Mh... mich wundert allerdings noch, dass Du nach Drücken auf den Absendebutton direkt wieder auf das Formular kommst. Das kann ich nicht ganz nachvollziehen.

Kannst Du eventuell einen Link zu besagtem Script und Formular posten?

--rabies.

Antwort 4 von MixMax vom 16.05.2020, 00:34 Options

Also das script funktioniert beinahe, problem ist wie schon erkannt die deklaration der Variablen, denn PHP kann Variablen in Strings nicht immer richtig darstellen:

das Funktioniert:
$Foo = "ABC";
echo "this is my $Foo site";

gibt this is my ABC site aus

$Foo[0] = "ABC";
echo "this is my $Foo[0] site";

gibt this is my ABC site aus

Es geht aber nicht mit Stringtrennzeichen im Variablennamen
$Foo['0'] = "ABC";
echo "this is my $Foo['0'] site";


Dazu must du den String unterbrechen und mehrere Teile miteinander verketten z.b.:
$Foo['0'] = "ABC";
echo "this is my ".$Foo['0']." site";

Du solltest es möglichst Einheitlich halten, damit du gerade bei längeren Queries nicht durcheinander kommst. Du bekommst eh immer schon viele doppelte Hochkommas hintereinander da du ja den Wert in Hochkommas in der Query hast also z.B.

"select 'Bananen', 'Äpfel';"

und wenn die Werte dann mit Variablen getauscht wird

"select '".$Data['Obst1']."', '".$Data['Obst2']."';"


Da SQL das Hochkomma als String-trennzeichen verwendet, würde ich die Gänsefüschen (") als stringbegrenzer in php nehmen, da du sonst immer viele Backslashe verwenden must um die SQL-Hochkommas von dem Stringendehochkomma zu unterscheiden.
Deine Query würde ich daher so schreiben:

$q = "INSERT INTO Test (Name, Vorname, AlterGeb) VALUES ('".$_POST['Name']."', '".$_POST['Vorname']."', '".$_POST['age']."')";
mysql_query(q1);
echo mysql_error();

was die Variablennamen angeht solltest du dich darauf einigen ob du generell groß oder kleinschrift verwendest - wegen der besseren Lesbarkeit nehme ich immer kleinschrift. Weiter nehme ich generell deutsche variablennamen, da ist die chance reservierte namen zu verwenden geringer. Ein misch aus groß kleinschrift und deutschen und englischen variablennamen ist bei größeren Seiten meist sehr unübersichtlich, vor allem wenn man den richtigen Namen der Variable weis aber nachschauen muss ob man die groß oder klein geschrieben hat.

Antwort 5 von Tumulus vom 16.05.2020, 22:26 Options

hallo...

vielen dank für die guten beiträge. ich hab das alles ausprobiert. wenn ich jetzt nur auf den "abschicken"-button klicke, dann wird in mysql eine leere zeile eingefügt (> immerhin ein kleiner erfolg !). allerdings schreibt er nichts in die datenbank, wenn ich werte in die felder eintrage. die felder sind richtig formatiert (varchar). ich versteh es einfach nicht. auch wenn ich ins php das echo $_POST('Name'); aufnehme, bringt er nichts....

das eingabeformular ist auf:
www.meetball.de/eingabe.html

und das php auf:
www.meetball.de/lux.php (umbenannt von vorher eingabe.php)

bin für weiteren support dankbar.

gruß

Antwort 6 von Tumulus vom 16.05.2020, 22:58 Options

.... ES FUNKTIONIERT !!!!

D A N K E !!!!

Antwort 7 von rabies vom 19.05.2020, 11:20 Options

Um uns nicht ganz unbehelligt zu lassen: Woran lag's denn und was hast Du geändert, dass es urplötzlich funktioniert?

Andere Nutzer, die vor ähnlichen Problemen stehen, werden es Dir danken.

Antwort 8 von rabies vom 19.05.2020, 11:22 Options

Zusätzlich:
echo $_POST('Name');
kann zu keiner Ausgabe führen, Du musst
echo $_POST['Name'];
nutzen.

--rabies.

Antwort 9 von Tumulus vom 20.05.2020, 20:34 Options

Hi,

es lag schlichtweg - wie Du gesagt hattest - an den Hochkommas bzw. Gänsefüsschen. Das war "schon" alles. Nochmals vielen Dank !!

Gruß

Ähnliche Themen

HTML-Quellcode mit PHP eibinden
xeo15  23.05.2007 - 164 Hits - 3 Antworten

suche ein script für ein terminkalender mit php und sql
timoxy  23.06.2007 - 117 Hits - 4 Antworten

ERROR: mysql_fetch_array
tAsKi  12.01.2008 - 93 Hits - 2 Antworten

in excel leere zellen befüllen
brs  03.06.2008 - 109 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026