Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Datenbank

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL Datenbank

    Hallo,

    ich habe ein Problem mit meinem Bewertungsformular.

    PHP-Code:
    <!--Connection-->
        <?php

             $connection 
    mysqli_connect ("localhost""root""""valuations") or die ("Fehler im System");

             if (!empty (
    $_POST)) {
                 
    $salutation $_POST["salutation"];
                 
    $forename $_POST["forename"];
                
    $surname $_POST["surname"];
                
    $message $_POST["message"];

                 if (
    $salutation == "" or $forename == "" or $surname == "" or $message == "") {

                     echo 
    "Sie m&uuml;ssen alle Felder ausf&uuml;llen.";

                 } else {

                      
    $timestamp time ();
                      
    $dat3 date ("d.m.Y"$timestamp);

                    
    $entry "INSERT INTO valuations
                    (salutation, forename, surname, message, dat3)

                         VALUES
                    ('
    $salutation', '$forename', '$surname', '$message', '$dat3')";

                    
    $entry mysqli_query($connection$entry);
                 }
            }
         
    ?>
    HTML-Code:
        <!--main container-->
        <div class="maincontainer">
            <h1>Bewertungen</h1><form>
            <form name="valuations" action="bewertungen.php" method="post">
                <div class="form-row">
                    <div class="form-group col-md-2">
                        <label for="inputsalutation">Anrede</label>
                        <select name="salutation" class="form-control" id="inputsalutation">
                            <option value="Herr">Herr</option>
                            <option value="Frau">Frau</option>
                        </select>
                    </div>
                    <div class="form-group col-md-5">
                        <label for="inputforename">Vorname</label>
                        <input name="forename" type="forename" class="form-control" id="inputforename" placeholder="Max" maxlength="20">
                    </div>
                    <div class="form-group col-md-5">
                        <label for="inputsurname">Nachname</label>
                        <input name="surname" type="surname" class="form-control" id="inputsurname" placeholder="Mustermann" maxlength="20">
                    </div>
                </div>
                <div class="form-group">
                    <label for="inputmessage">Bewertung</label>
                    <textarea name="message" class="form-control" id="inputmessage" rows="10" placeholder="Hier kann Ihre Bewertung stehen ..." maxlength="1000"></textarea>
                </div>
                <button type="submit" class="btn btn-success">Eintragen</button>
                <button type="reset" class="btn btn-danger">L&ouml;schen</button>
            </form>
        </div>
    Leider wird mir nicht einmal ein Fehler ausgespuckt obwohl nach dem drücken auf den Submit Button http://localhost/bewertungen.php?sal...n&message=Test in der Adresszeile steht. Also sollten ja eigentlich Daten übertragen werden ... . Allerdings ist die Datenbank leer

    wäre nett wenn ihr mir helfen könntet .

  • #2
    Hallo,

    und täglich grüßt das Murmeltier .. Debugging - Du fragst die DB auch gar nicht nach Fehler. https://php-de.github.io/jumpto/sql/

    PHP-Code:
    echo "Sie m&uuml;ssen alle Felder ausf&uuml;llen."
    Warum verstümmelst du die Umlaute?
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      es gibt hier in der Wissensammlung einen guten Debugging Leitfaden.
      https://php-de.github.io/jumpto/sql/

      Kommentar


      • #4
        Und dein Code ist offen für SQL-Injections. Um die Lücke zu stopfen, nutze Prepared Statments.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          obwohl nach dem drücken auf den Submit Button http://localhost/bewertungen.php?sal...n&message=Test in der Adresszeile steht.
          Wie kann das sein nachdem du doch mit POST die Daten abschickst.

          HTML-Code:
            <input name="forename" type="forename" class="form-control" id="inputforename" placeholder="Max" maxlength="20">
          Es gibt keinen type forname und auch der type surname ist unbekannt, lies das noch mal nach.

          PHP-Code:
          echo "Sie m&uuml;ssen alle Felder ausf&uuml;llen."
          Wenn du willst das alle Felder ausgefüllt werden sollen, dann vewende schon im Formular das Attribut required,

          PHP-Code:
          $forename $_POST["forename"];
          $surname $_POST["surname"]; 
          Das blosse umkopieren ist unnütz. Validiere an dieser Stelle besser die Eingaben.

          PHP-Code:
          $timestamp time ();
          $dat3 date ("d.m.Y"$timestamp);

          $entry "INSERT INTO valuations
          salutation, forename, surname, message, dat3) 
          Hier zeigt sich das du den falschen Datentyp für die Datenbankspalte dat3 verwendest. Der Typ muss ein Datumsfomat sein und dann wird das Datum im ..ISO-Format dort abgelegt. Wenn du einen aktuellen Zeitstempel willst, dann wende die entsprechenden Funktionen an, wie now() oder timestamp oder überlasse das der Datenbank.

          Du verwendest auch keine Id in der Tabelle und somit wohl auch keinen Primärschlüssel, der ist aber notwendig wenn du später Daten ändern willst.
          Vorhergesagtes gilt natürlich dennoch, vor allem die Fehlerbehandlung und der Hinweis zu Sicherheitslücken in SQL.



          Kommentar


          • #6
            HTML mal validien lassen.. Gehört zum Formulardebugging ja irgendwie schon auch dazu.

            Oft wird gar nicht übertragen was man denkt, weil zB ein HTML-Attribut fehlt/falsch ist: https://validator.w3.org/
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Heissen Datenbank und Tabelle tatsächlich gleich?

              Das Datumsformat z.B. "16.04.2018" scheint nicht geeignet zu sein.
              [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

              Kommentar

              Lädt...
              X