tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
460
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von chpa
    chpa chpa ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Schwarzhofen (Bayern)
    Beiträge
    229
    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-Code:
    <?
      
    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?
     

  2. #2
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    Mal mit mysql_error() prüfen, ob ein Fehler ausgegeben wird. Wenn ja, die SQL-Anweisung ausgeben lassen und prüfen.

    snuu
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

  3. #3
    Avatar von chpa
    chpa chpa ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Schwarzhofen (Bayern)
    Beiträge
    229
    Hallo nochmal

    hab ich vergessen zu schreiben. So eine Error-Anzeige hab ich schon drin. Ich bekomme keine Fehlermeldung.
     

  4. #4
    Registriert seit
    Mar 2002
    Ort
    BRD
    Beiträge
    489
    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
     

  5. #5
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    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 mysql_escape_string() für Strings verwenden, intval() für Ganzzahlen und doubleval() für Fließkommazahlen.

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

    snuu
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

  6. #6
    Registriert seit
    Mar 2002
    Ort
    BRD
    Beiträge
    489
    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.ä.!
     

  7. #7
    Avatar von chpa
    chpa chpa ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Schwarzhofen (Bayern)
    Beiträge
    229
    Hallo

    also die Tabelle wird ausgewählt aus der kalenderwoche in der der Termin stattfindet, aus dem wochentag und aus terminnummer.
     

  8. #8
    Avatar von chpa
    chpa chpa ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Schwarzhofen (Bayern)
    Beiträge
    229
    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?
     

  9. #9
    Avatar von Ben Ben
    Ben Ben Ben Ben ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Raum FFM
    Beiträge
    1.364
    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...
    Geändert von Ben Ben (04.08.04 um 13:00 Uhr)
     

  10. #10
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    @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 ...
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

  11. #11
    Avatar von chpa
    chpa chpa ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Schwarzhofen (Bayern)
    Beiträge
    229
    Hallo,

    1. Also es funktioniert jetzt.

    Die Datenbank hat nur die Tabellenauswahl mit den 3 Variablen ($kalenderwoche$tag$nummer) nicht angenommen.

    Hat jemand vielleicht eine andere Idee, wie ich jetzt durch das Formular die Tabelle auswählen könnte?

    Mfg

    CHPA
     

  12. #12
    Avatar von Sven Petruschke
    Sven Petruschke Sven Petruschke ist offline Mitglied Diamant
    Registriert seit
    May 2003
    Ort
    Leipzig
    Beiträge
    2.323
    Du kannst doch nicht je Kalenderwoche, Tag und Nummer eine neue Tabelle verwenden. Nimm eine einzige Tabelle und füge dieser die Felder Kalenderwoche, Tag und Nummer hinzu. Somit kannst Du später über die WHERE-Bedingung im SQL-Statement die Daten einschränken.

    snuu
     
    Das Leben ist wie eine Ketchupflasche - erst kommt nichts und dann alles auf einmal.
    www.sven-petruschke.de

Ähnliche Themen

  1. Antworten: 17
    Letzter Beitrag: 18.03.10, 20:23
  2. Typo3 Einsteiger. Wo werden Daten gespeichert ?
    Von dropdown im Forum Content Management Systeme (CMS)
    Antworten: 2
    Letzter Beitrag: 05.12.08, 13:32
  3. Daten werden nicht gespeichert
    Von bodoschmidt im Forum .NET Datenverwaltung
    Antworten: 2
    Letzter Beitrag: 22.01.08, 00:13
  4. Antworten: 5
    Letzter Beitrag: 31.08.07, 11:43
  5. Antworten: 6
    Letzter Beitrag: 06.02.05, 20:39