Daten werden nicht gespeichert...

chpa

Erfahrenes Mitglied
Hi alle zusammen.

Ich habe ein kleines Problem. Ich hab ein Formular und der Inhalt soll in eine Datenbank eingetragen werden.

Das Formular seht Ihre hier: Formular

Und hier das Script, das alles abspeichern soll.

PHP:
<?
  include("dbconnect.php");
  ?>
<HTML>
<HEAD>
<TITLE>Kontrolle</TITLE>
<style type="text/css"><!--
	.rand{
     border:1px white solid;
}
.cssButton{
border-right: #FFFFFF 2px inset;
border-top: #FFFFFF 2px outset;
font-weight:Normal;
font-size: 10pt; 
border-left: #FFFFFF 2px outset;
color: #FFFFFF ;
border-bottom: #FFFFFF 2px inset;
font-family: Arial, Helvetica, sans-serif;
background-color: #035787; 
}
-->
</style>

  </HEAD>
  <BODY bgcolor="#035787" style="scrollbar-face-color:#035787; scrollbar-track-color:#035787; scrollbar-base-color:#035787; scrollbar-arrow-color:white;">

 <FONT face="arial" size="2" color="white"><center>Die Daten werden gesichert.<p>Bitte warten Sie einen Moment. Sie werden automatisch zum Wochenplan weitergeleitet.<p><IMG src=buttons/loader.gif><p>
 <meta http-equiv="refresh" content="3; url=center.php">
 <?
 $table = "$kalenderwoche$tag$nummer";

 $knowdebeka = $HTTP_POST_VARS["knowdebeka"];
 $verein = $HTTP_POST_VARS["verein"];
 $gesetz = $HTTP_POST_VARS["gesetz"];
 $beruf = $HTTP_POST_VARS["beruf"];
 $uberschusse = $HTTP_POST_VARS["uberschusse"];
 $kostenlos = $HTTP_POST_VARS["kostenlos"];
 $knowdebekabe = $HTTP_POST_VARS["knowdebekabe"];
 $vereinbe = $HTTP_POST_VARS["vereinbe"];
 $gesetzbe = $HTTP_POST_VARS["gesetzbe"];
 $berufbe = $HTTP_POST_VARS["berufbe"];
 $uberschussebe = $HTTP_POST_VARS["uberschussebe"];
 $kostenlosbe = $HTTP_POST_VARS["kostenlosbe"];
 $geschlecht = $HTTP_POST_VARS["geschlecht"];
 $name = $HTTP_POST_VARS["name"];
 $adresse = $HTTP_POST_VARS["adresse"];
 $plz = $HTTP_POST_VARS["plz"];
 $ort = $HTTP_POST_VARS["ort"];
 $telenummer = $HTTP_POST_VARS["telenummer"];
 $kalenderwoche = $HTTP_POST_VARS["kalenderwoche"];
 $tag = $HTTP_POST_VARS["tag"];
 $nummer = $HTTP_POST_VARS["nummer"];
 $uhr = $HTTP_POST_VARS["uhr"];
 $wegbe = $HTTP_POST_VARS["wegbe"];

 $eintrag = "INSERT INTO $table (name, adresse, plz, wohnort, telefon, kalenderwoche, tag, nummer, uhr, wegbe, knowdebeka, verein, gesetz, beruf, uberschusse, kostenlos, knowdebekabe, vereinbe, gesetzbe, berufbe, uberschussebe, kostenlosbe, geschlecht) VALUES ('$name', '$adresse', '$plz', '$ort', '$telenummer', '$kalenderwoche', '$tag', '$nummer', '$uhr', '$wegbe', '$knowdebeka', '$verein', '$gesetz', '$beruf', '$uberschusse', '$kostenlos', '$knowdebekabe', '$vereinbe', '$gesetzbe', '$berufbe', '$uberschussebe', '$kostenlosbe', '$geschlecht')";

 $eintragen = mysql_query($eintrag);
 ?>

</BODY>
</HTML>

Was hab ich da falsch gemacht?
 
Hallo nochmal

hab ich vergessen zu schreiben. So eine Error-Anzeige hab ich schon drin. Ich bekomme keine Fehlermeldung.
 
Hola! Mal zwei Sachen von mir:

1. Es ist zu empfehlen Variablen in SQL-Statements stets mit '".$variable."' einzubinden, da es so schonmal nicht möglich ist SQL-Befehle per Variable zu übergeben und auch die Typen keine Probleme machen.

2. $eintragen = mysql_query($eintrag); dürfte falsch sein
=> versuche es ohne das $eintragen
mysql_query($eintrag); müsste richtig sein
 
Original geschrieben von Sebastianus
Hola! Mal zwei Sachen von mir:

1. Es ist zu empfehlen Variablen in SQL-Statements stets mit '".$variable."' einzubinden, da es so schonmal nicht möglich ist SQL-Befehle per Variable zu übergeben und auch die Typen keine Probleme machen.

2. $eintragen = mysql_query($eintrag); dürfte falsch sein
=> versuche es ohne das $eintragen
mysql_query($eintrag); müsste richtig sein

Ich muss Dir mal wiederprechen.

1.) Wenn Du die Variable in diesem Format einbindest, dann kannst Du immernoch Code einschleusen. Ausserdem ist die generelle Verwendung der Singlequotes um den einzufügenden Wert falsch. Nummerische Werte beispielsweise, werden nicht in Singlequotes eingefasst. Um sich gegen SQL-injections zu schützen, sollte man [phpf]mysql_escape_string[/phpf] für Strings verwenden, [phpf]intval[/phpf] für Ganzzahlen und [phpf]doubleval[/phpf] für Fließkommazahlen.

2.) Die Funktion [phpf]mysql_query[/phpf] gibt TRUE bei Erfolg oder FALSE im Fehlerfall zurück. Also ist diese Schreibweise auch korrekt.

snuu
 
Fein - hab ich auch wieder etwas gelernt! Ein Schüler kann selten besser sein als sein Meister - mir wurde es mal anders gesagt, aber nun werde ich dieses Wissen weiter in die Welt tragen - denn snuu schätze ich kompetenter ein als meinen Meister damals ;)

Was mich jedoch wundert ist der Name der Tabelle! Ist wirklich sichergestellt, dass stest eine solche Tabelle existiert - denn ein Tebellenname mit Kalenderwoche Tag und Nummer klingt in meinen Augen schon sehr dynamisch

Ansonsten sehe ich auch keinen direkten Fehler da drin Außer, dass evtl. noch ein Tippfeld in den Spaltenbezeichnungen der Tabelle ist o.ä.!
 
Hallo

also die Tabelle wird ausgewählt aus der kalenderwoche in der der Termin stattfindet, aus dem wochentag und aus terminnummer.
 
Muss ich vielleicht die Verbindung zur Datenbank erst wieder beenden

Kann das sein?

Achso und die MySQL Spalten hab ich alle so eingestellt:

z.B.: Name: "text" "100"

ist das überhaupt richtig?
 
Was heisst richtig... es ist irgendwo in der Mitte... aber ich würde dennoch soachen wie PLZ eher als INT speichern, Text als Varchar (es sei denn du willst nur ein Zeichen, dann char) sofern dieser nicht mehr als 255 Zeichen haben wird, sonst TEXT.

@snuu: Aber auch beim Schützen gegen Injections ist es schwachsinn, alles vorher in eine extra variable zu Packen. Das kostet a) Speicher (wenn auch nicht viel, aber dennoch eine Verschwendung), b) Schade um die Tipparbeit und c) können mysql_escape_string etc direkt im Statement gemacht werden... ;)

EDIT: @snuu: sry verlesen...
 
Zuletzt bearbeitet:
@Ben Ben: Da gebe ich Dir vollkommen Recht! Ich habe auch nicht behauptet, dass er jede übergebene Variable nochmals in eine extra Variable verpacken soll. Ich sprach nur davon, dass die generelle Verwendung von Singlequotes falsch ist und dass man die Funktionen mysql_escape_string(), intval() und doubleval() verwenden sollte.

Bitte nochmal nachlesen ...
 
Zurück