Mysql problem $_post

Hi leute ich bin neu hier… ich bin auf euch gestoßen, weil ich verzweifelt auf der suche nach einer lösung zu meinem problem bin…

Folgendes Problem ich habe ein Affenformular aufgestellt welches einwandfrei funktioniert, da ich aber zwei formular drin habe sende ich das zweite per action an eine datei die dann die werte in die db speichert… (warum ich das mache ist ja erstmal egal da es ja bis dahin funktioniert)

mit $_POST[‚werte‘] hole ich mir die überwiesenen daten… ich gebe sie mit einem ECHo zum debuggen aus … funkt alle werte sind in ordnung… ich sende die daten an die db … funktioniert nicht (passiert garnicht fehler meldung durch mysqL_errors() sind aber auch keine… ruf ich diese datei einfach so auf schreibt der in die db… wo kann da der fehler liegen? :frowning:

hier das skrypt geht davon aus das die $_POSTs funktionieren

<?php $logofile = $_POST['logo'];
$user = $\_POST['user']; $paket = $\_POST['paket']; $datum = $\_POST['datum']; $box1 = $\_POST['box1']; $box2 = $\_POST['box2']; $box3 = web; $box4 = $\_POST['box4']; $box5 = $\_POST['box5']; $box6 = $\_POST['box6']; $box7 = $\_POST['box7']; $box8 = $\_POST['box8']; $box9 = $\_POST['box9']; $box10 = $\_POST['box10']; $box11 = $\_POST['box11']; $box12 = $\_POST['box12']; $box13 = $\_POST['box13']; $box14 = $\_POST['box14']; if ($\_POST['checkbox1'] == '1') {$checkbox1 = '1';} else {$checkbox1 = '0';} if ($\_POST['checkbox2'] == '1') {$checkbox2 = '1';} else {$checkbox2 = '0';} if ($\_POST['checkbox3'] == '1') {$checkbox3 = '1';} else {$checkbox3 = '0';} if ($\_POST['checkbox5'] == '1') {$checkbox5 = '1';} else {$checkbox5 = '0';} if ($\_POST['checkbox6'] == '1') {$checkbox6 = '1';} else {$checkbox6 = '0';} if ($\_POST['checkbox7'] == '1') {$checkbox7 = '1';} else {$checkbox7 = '0';} if ($\_POST['checkbox9'] == '1') {$checkbox9 = '1';} else {$checkbox9 = '0';} if ($\_POST['checkbox10'] == '1') {$checkbox10 = '1';} else {$checkbox10 = '0';} if ($\_POST['checkbox12'] == '1') {$checkbox12 = '1';} else {$checkbox12 = '0';} if ($\_POST['checkbox13'] == '1') {$checkbox13 = '1';} else {$checkbox13 = '0';} if ($\_POST['checkbox14'] == '1') {$checkbox14 = '1';} else {$checkbox14 = '0';} if ($\_POST['checkbox15'] == '1') {$checkbox15 = '1';} else {$checkbox15 = '0';} if ($\_POST['checkbox16'] == '1') {$checkbox16 = '1';} else {$checkbox16 = '0';} if ($\_POST['checkbox17'] == '1') {$checkbox17 = '1';} else {$checkbox17 = '0';} if ($\_POST['checkbox18'] == '1') {$checkbox18 = '1';} else {$checkbox18 = '0';} echo 'LOGO: '.$logofile.''; echo 'JNAME: '.$user.''; echo 'Paket: '.$paket.''; echo 'Datum: '.$datum.''; echo 'BOX1: '.$box1.''; echo 'BOX2: '.$box2.''; echo 'BOX3: '.$box3.''; echo 'BOX4: '.$box4.''; echo 'BOX5: '.$box5.''; echo 'BOX6: '.$box6.''; echo 'BOX7: '.$box7.''; echo 'BOX8: '.$box8.''; echo 'BOX9: '.$box9.''; echo 'BOX10: '.$box10.''; echo 'BOX11: '.$box11.''; echo 'BOX12: '.$box12.''; echo 'BOX13: '.$box13.''; echo 'BOX14: '.$box14.''; echo 'Checkbox1: '.$checkbox1.''; echo 'Checkbox2: '.$checkbox2.''; echo 'Checkbox3: '.$checkbox3.''; echo 'Checkbox5: '.$checkbox5.''; echo 'Checkbox6: '.$checkbox6.''; echo 'Checkbox7: '.$checkbox7.''; echo 'Checkbox9: '.$checkbox9.''; echo 'Checkbox10: '.$checkbox10.''; echo 'Checkbox12: '.$checkbox12.''; echo 'Checkbox13: '.$checkbox13.''; echo 'Checkbox14: '.$checkbox14.''; echo 'Checkbox15: '.$checkbox15.''; echo 'Checkbox16: '.$checkbox16.''; echo 'Checkbox17: '.$checkbox17.''; echo 'Checkbox18: '.$checkbox18.''; define ('MYSQL\_HOST', '##'); define ('MYSQL\_BENUTZER', '##'); define ('MYSQL\_KENNWORT', '#####'); define ('MYSQL\_DATENBANK', '##'); $db\_link = mysql\_connect (MYSQL\_HOST, MYSQL\_BENUTZER, MYSQL\_KENNWORT); if ( $db\_link ) { echo 'Verbindung erfolgreich! '; if(mysql\_select\_db("###",$db\_link)) { echo 'db ausgewaehlt '; } $sql = "INSERT INTO unternehmen( user, datum, paket, logo, firmenname, inhaber, infotext, partner, strasse\_nr, ort, plz, telefon, fax, mobil, email, web, messeort, baugroesse, c\_ausstellung, c\_event, c\_messebau, c\_leitner, c\_modul, c\_octanorm, c\_sonstiges, c\_schreiner, c\_lackierer, c\_dgeschoss, c\_licht, c\_ton, c\_traverse, c\_kulissenbau, c\_video ) VALUES ( '" .$user."', '" .$datum."', '" .$paket."', '" .$logofile."', '" .$box1."', '" .$box2."', '" .$box13."', '" .$box4."', '" .$box12."', '" .$box5."', '" .$box8."', '" .$box10."', '" .$box9."', '" .$box6."', '" .$box7."', '" .$box3."', '" .$box11."', '" .$box14."', '" .$checkbox2."', '" .$checkbox3."', '" .$checkbox1."', '" .$checkbox7."', '" .$checkbox10."', '" .$checkbox13."', '" .$checkbox16."', '" .$checkbox5."', '" .$checkbox6."', '" .$checkbox14."', '" .$checkbox9."', '" .$checkbox12."', '" .$checkbox15."', '" .$checkbox17."', '" .$checkbox18."' )"; echo (mysql\_error()); mysql\_query($sql,$db\_link); } ?\> wenn ich die sql abfrage kopiere trägt der per mysql alles in die richtigen felder ein wie kann das sein?:frowning:

Hi!

Mir fällt erstmal nur auf, dass die Abfrage des MySQL-Fehlers VOR der Abfrage passiert. So kann natürlich kein Fehler ausgegeben werden.

Und was meinst Du damit:
„ruf ich diese datei einfach so auf schreibt der in die db“ ?

Wenn Du statt der POST-Werte selbst konstant eingegebene Werte in der Datei nutzt oder wie? Vielleicht gibst Du auch noch den Quelltext an, der funktioniert.

Grüße

Eine Klammer } fehlt in Deiner Datei. s.u
if ( $db_link )
{
echo 'Verbindung erfolgreich!
';
if(mysql_select_db("###",$db_link))
{
echo 'db ausgewaehlt
';
}
}

Hallo stanko91,

ich hab dein Script mal nachgebaut zum Testen, aber auch so auf anhieb kein Fehler gefunden.

Daher wäre es am besten, wenn du mir das Tabellen-Schama Posten könntest, ich hab jetzt jedes Feld als varchar definieret, damit hatte ich dann keine Probleme.

Dönntest du mir dann auch gleich ein Echo von deiner Variable $sql posten um zu checken, ob alles drin ist wie es sein muss. :smile: Wie hast du es in „Mysql“ direkt eingegeben? Nutzt du phpmyadmin? Das tool „kontrolliert“ nämlich teilweise auch fehlerhafte Queries und beseitigt einfache Fehler… das macht die Datenbank nicht automatisch. :wink:

Was du auch mal probieren könntest ist jeden Feldnamen mit dem Zeichen „`“ einzuschließen.

Also:

$sql = "INSERT INTO unternehmen(
user,
datum,
paket, … usw.

um halt sonderwörter deiner MySQL auszuschließen.

noch eine kleine „unschönheiten“ die mir aufgefallen ist, die aber nicht mit dem fehler zu tun haben kann:

$box3 = web;

Willst du die Variable direkt mit einem String füllen dann solltest du „web“ machen.

Generell solltest du alle POST und GET Parameter validieren, sonnst kann man einfach bei dir MySQL Injections durchführen. Und du solltest dir mal PDO anschauen, damit bist du auch etwas „geschützter“ vor Hacker angriffen und hast den Vorteil, dass du einfacher die Datenbank im Hintergrund wechseln kannst.

Viele Grüße
Frank

Hey stanko91,

also spontan fällt mir da nur zu ein, dass Du das Errorhandling mal nach dem Query aufrufen solltest und dann vieleicht so:

mysql_query($sql,$db_link) or die(mysql_errno().": ".mysql_error());

Ich bin mir zwar nicht hundertprozent sicher, aber ich glaube das bei einem SQL-Error die weitere Verarbeitung (hier der query) nicht mehr ausgeführt wird.

Hoffe konne Dir helfen

Hallo!

im Moment kann ich keine Fehler entdecken.

Aber:
tausche die beiden letzten Befehle! ERST das mysql_query und DANACH dann der Fehler abfragen und ausgeben. VOR dem Query nutzt der echo-Befehl nix.

Vielleicht gibts da dann mehr Infos.

Viele Grüße,
Markus

Hallo Stank91,

leider kann ich Dir nicht weiterhelfen. Ich habe nur Grundwissen was SQL, PHP und Datenbanken im Allgemeinen betrifft.

Viele Grüße und viel Glück

Steffi

Hallo,

wenn Du auch in Zukunft ernsthaft mit einer Antwort rechnest, dann schick nicht wieder solchen Endlos-Code. Das hätte man auch mit ein paar Beispielzeilen darstellen können.

Bei Deinem SQL-Statement fehlt ein Semikolon am Ende.
Das sollte auch der Grund sein, warum nichts passiert.

Gruss aus München,
Frank

finde es immer recht schade, wenn man sich hier die Mühe macht zu Helfen, und der Frager keine Reaktion mehr gibt, nicht mal ob man ihm helfen konnte, oder ob er weitere Fragen hat, er ist einfach verschwunden… :-/

Na dann…

Hallo,

tun mir leid, dass ich mich erst heute melde, aber es sind so viele Dinge zum Erledigen gewesen.
Vermutlich hast du inzwischen eine gute Antwort auf deine Frage bekommen. Wenn nicht, dann melde dich nochmal bei mir, ich werde dann wirklich kurzfristig antworten.

Grüße
Tom

Hi stanko91
sorry hat ein wenig gedauert bis ich was gefunden habe

also versuche mal anstelle von

mysql_query($sql,$db_link);

$wert=mysql_query($sql,$db_link);

CU Stefan