Versuchen, fügen Wert der option Daten in der MySQL-Datenbank mit PHP aus Dropdown-Website Formular erstellt, in twitter-bootstrap

Ich bin ein Anfänger mit php. Ich bin mit twitter-bootstrap um eine website zu erstellen. Ich möchte zum speichern der Daten vorgelegt, die von einer website dropdown-Menü in eine MySQL-Datenbank mit dem Namen datawebcollectiondb . Ich bin in der Lage, Informationen zu speichern in die db, wenn der Nutzer die Eingabe von einer geöffneten text-Feld, aber nicht aus einem drop-down-Menü. Die Datenbank füllt sich mit 0EN in allen Bereichen, wenn Sie das dropdown-Menü vorgelegt wird.

Ersten die open-text-Feld, das hat funktioniert:

HTML-Datei:

<html>
            <body>
                <form action="insert.php" method="post">
                    Number Please: <input type="text" name="directionp">
                        Another Number: <input type="text" name="timep">
                            Third Number: <input type="text" name="locationp">
                              Fourth Number: <input type="text" name="searchtimep">
                                <input type="submit">
                </form>

            </body>
</html>

PHP-Datei, die funktioniert hat:

<?php
    $con = mysql_connect("host", "username", "password");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("timeforparkingdb", $con);

    $sql="INSERT INTO datawebcollection (directionp, timeofdayp, locationp, searchtimep)
    VALUES
    ('$_POST[directionp]','$_POST[timep]','$_POST[locationp]','$_POST[searchtimep]')";

    if (!mysql_query($sql,$con))
    {
        die('Error: ' . mysql_error());
    }
    echo "1 more record added =) ";

    mysql_close($con);
?>

HTML-Datei, die NICHT funktioniert im tandem mit der oben genannten php-Datei, andere als Auffüllen von db mit 0:

<html>
    <form action="insert.php" method="post">
                        <b>DIRECTION:</b>
                            <select name="directionp">
                                <option value="1">Coming</option>
                                <option value="2">Going</option>
                            </select>
                        <b>TIME:</b>
                            <select name="timep">
                                <option value="0">12:00am - 1:00am</option>
                                <option value="1">1:00am - 2:00am</option>
                                <option value="2">2:00am - 3:00am</option>
                                <option value="3">3:00am - 4:00am</option>
                                <option value="4">4:00am - 5:00am</option>
                                <option value="5">5:00am - 6:00am</option>
                                <option value="6">6:00am - 7:00am</option>
                                <option value="7">7:00am - 8:00am</option>
                                <option value="8">8:00am - 9:00am</option>
                                <option value="9">9:00am - 10:00am</option>
                                <option value="10">10:00am - 11:00am</option>
                                <option value="11">11:00am - 12:00pm</option>
                                <option value="12">12:00pm - 1:00pm</option>
                            </select>
                        &nbsp;<b>LOCATION:</b>
                            <select name="locationp">
                                <option value="1">Zone One</option>
                                <option value="2">Zone Two</option>
                                <option value="3">Zone Three</option>
                                <option value="4">Zone Four</option>
                                <option value="5">Zone Five</option>
                                <option value="6">Zone Six</option>
                                <option value="7">Zone Seven</option>
                                <option value="8">Zone Eight</option>
                                <option value="9">Zone Nine</option>
                                <option value="10">Zone Ten</option>
                                <option value="11">Zone Eleven</option>
                                <option value="12">Zone Twelve</option>
                                <option value="13">Zone Thirteen</option>
                            </select>
                        <b>SEARCH TIME HERE:</b>
                        <select name="searchtimep">
                            <option value="0">Under 1 Minute</option>
                            <option value="1">1 Minute - 3 Minutes</option>
                            <option value="5">3 Minutes - 5 Minutes</option>
                            <option value="10">5 Minutes - 10 Minutes</option>
                            <option value="15">10 Minutes -15 Minutes</option>
                            <option value="20">15 Minutes - 20 Minutes</option>
                            <option value="25">20 Minutes - 25 Minutes</option>
                            <option value="30">25 Minutes - 30 Minutes</option>
                            <option value="35">30 Minutes - 35 Minutes</option>
                            <option value="40">35 Minutes - 40 Minutes</option>
                            <option value="45">40 Minutes - 45 Minutes</option>
                            <option value="50">45 Minutes - 50 Minutes</option>
                            <option value="55">50 Minutes - 55 Minutes</option>
                            <option value="60">55 Minutes - 1 HOUR</option>
                            <option value="0">Over 1 HOUR</option>
                        </select>
    <button type="submit" class="btn btn-large btn-primary">Submit</button>
    </form>
</html>

Original-MySQL-Datenbank-Struktur:

Field           Type    Collation   Attributes  Null    Default Extra   Action
    unique_entry_id int(11)         No                                  
    dayp            int(2)          No                                  
    monthp          int(2)          No                                  
    yearp           int(4)          No                                  
    directionp  int(1)          No                                  
    timeofdayp  int(2)          No                                  
    locationp   int(2)          No                                  
    searchtimep int(2)          No  

Was sehe ich in meiner Datenbank bisher:

unique_entry_id dayp    monthp  yearp   directionp  timeofdayp  locationp   searchtimep
            0   6   6   6   0   0   0   0
            0   7   7   7   0   0   0   0
            0   8   24  2345    0   0   0   0
            0   0   0   0   0   0   0   0
            0   0   0   0   0   0   0   0
            0   0   0   0   0   0   0   0
            0   0   0   0   0   0   0   0
            0   0   0   0   0   0   0   0                               

Den Zeilen mit anderen Werten als 0 werden, wenn ich lief mit dem original-code und die Zeilen mit nur 0EN aus der dropdown-Formular. Wie bekomme ich die richtige korreliert option Wert, um den gespeicherten Wert in der Datenbank? Ich hätte gedacht, dass der Wert der option, d.h. <option value="1">Zone One</option> <option value="2">Zone Two</option> gewesen wäre, den Wert übermittelt die db.

Was ich gesehen habe auf meinem chrome developer console unter form data:

direction=2&time=5&location=5&searchtime=25

und noch die Datenbank erfasst alle 0EN.

Korrigiert MySQL-Datenbank Struktur:
Vorliegende Korrigierte Datenbank-Struktur:

Field           Type          Collation         Attributes  Null    Default Extra   
unique_entry_id int(11)                 No                                  
city_id         varchar(50)   utf8_general_ci   No                                   
datep           date                    No                                  
directionp  int(1)                  No                                  
timeofdayp  time                    No                                  
locationp   int(2)                  No                                  
searchtimep int(2)                  No  

Um ganze zahlen und kein text in die mySQL-db von meinem php-code habe ich entfernt, die einfachen Anführungszeichen:

<?php
    $con = mysql_connect("", "", "");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("timeforparkingdb", $con);

    $sql="INSERT INTO datawebcollection (directionp, timeofdayp, locationp, searchtimep)
    VALUES
    ($_POST[directionp],$_POST[timep],$_POST[locationp],$_POST[searchtimep])";

    if (!mysql_query($sql,$con))
    {
        die('Error: ' . mysql_error());
    }
    echo "Thank you for your submission! 1 more record added =) ";

    mysql_close($con);
?>

Erste Schritt, um zu vermeiden, dass SQL-injection habe ich meine modifizierten HTML:

<form action="insert.php" id="timeforparking" method="post">
     <input type="submit">
</form>

und:

DIRECTION:
<select form = "timeforparking" id="directionp">
                            <option value="1">Parking In Manhattan</option>
                            <option value="2">Leaving Manhattan</option>
</select>
TIME:
<select form = "timeforparking" id="timep">
                            <option value="0">12:00am - 1:00am</option>
                            <option value="1">1:00am - 2:00am</option>
                            <option value="2">2:00am - 3:00am</option>
                            <option value="3">3:00am - 4:00am</option>
                            <option value="4">4:00am - 5:00am</option>
                            <option value="5">5:00am - 6:00am</option>
                            <option value="6">6:00am - 7:00am</option>
                            <option value="7">7:00am - 8:00am</option>
                            <option value="8">8:00am - 9:00am</option>
                            <option value="9">9:00am - 10:00am</option>
                            <option value="10">10:00am - 11:00am</option>
                            <option value="11">11:00am - 12:00pm</option>
                            <option value="12">12:00pm - 1:00pm</option>
                            <option value="13">1:00pm - 2:00pm</option>
                            <option value="14">2:00pm - 3:00pm</option>
                            <option value="15">3:00pm - 4:00pm</option>
                            <option value="16">4:00pm - 5:00pm</option>
                            <option value="17">5:00pm - 6:00pm</option>
                            <option value="18">6:00pm - 7:00pm</option>
                            <option value="19">7:00pm - 8:00pm</option>
                            <option value="20">8:00pm - 9:00pm</option>
                            <option value="21">9:00pm - 10:00pm</option>
                            <option value="22">10:00pm - 11:00am</option>
                            <option value="23">11:00am - 12:00pm</option>
</select>
LOCATION:
<select form = "timeforparking" id="locationp">
                            <option value="1">Zone One</option>
                            <option value="2">Zone Two</option>
                            <option value="3">Zone Three</option>
                            <option value="4">Zone Four</option>
                            <option value="5">Zone Five</option>
                            <option value="6">Zone Six</option>
                            <option value="7">Zone Seven</option>
                            <option value="8">Zone Eight</option>
                            <option value="9">Zone Nine</option>
                            <option value="10">Zone Ten</option>
                            <option value="11">Zone Eleven</option>
                            <option value="12">Zone Twelve</option>
                            <option value="13">Zone Thirteen</option>
</select>

REPORT YOUR APPROXIMATE SEARCH TIME HERE:
<select form = "timeforparking" id="searchtimep">
                        <option value="0">Under 1 Minute</option>
                        <option value="1">1 Minute - 3 Minutes</option>
                        <option value="5">3 Minutes - 5 Minutes</option>
                        <option value="10">5 Minutes - 10 Minutes</option>
                        <option value="15">10 Minutes -15 Minutes</option>
                        <option value="20">15 Minutes - 20 Minutes</option>
                        <option value="25">20 Minutes - 25 Minutes</option>
                        <option value="30">25 Minutes - 30 Minutes</option>
                        <option value="35">30 Minutes - 35 Minutes</option>
                        <option value="40">35 Minutes - 40 Minutes</option>
                        <option value="45">40 Minutes - 45 Minutes</option>
                        <option value="50">45 Minutes - 50 Minutes</option>
                        <option value="55">50 Minutes - 55 Minutes</option>
                        <option value="60">55 Minutes - 1 HOUR</option>
                        <option value="0">Over 1 HOUR</option>
</select>

Ist, und ich werde etwas tun, um das php zu vermeiden, die Injektion, und ich weiß nicht undertand, was ich brauche, um dies zu tun noch, und ich bin derzeit der Erforschung dieser bei http://php.net/manual/en/pdo.prepared-statements.php, und zu versuchen, gilt Folgendes zu meinem Fall:

This example performs an INSERT query by substituting a name and a value for the named placeholders.
    <?php
    $stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':value', $value);

    //insert one row
    $name = 'one';
    $value = 1;
    $stmt->execute();

    //insert another row with different values
    $name = 'two';
    $value = 2;
    $stmt->execute();
    ?>

Kann es sein, dass einige meiner Werte sind leer. Weiter hoffe ich, um zu überprüfen, die POST-Parameter und drucken Sie diese in der php-code über Drucken Sie die post-Werte , insbesondere:

<?php
//loop through every form field
while( list( $field, $value ) = each( $_POST )) {
   //display values
   if( is_array( $value )) {
      //if checkbox (or other multiple value fields)
      while( list( $arrayField, $arrayValue ) = each( $value )) {
         echo "<p>" . $arrayValue . "</p>\n";
      }
   } else {
      echo "<p>" . $value . "</p>\n";
   }
}
?>

Ausgabe nach dem senden:

blank white screen

Bedeutet das, dass ich versuche, mich zu übergeben leere Werte meiner db? Und ich bin nicht mehr empfangen, alle 0EN in meiner Datenbank wie ich Sie kenne, haben einen SQL-Fehler (oder ist das weil ich mich übergeben leere Werte ,also $_POST[locationp] und $_POST[searchtimep] leer sind??? ist das die richtige Schlussfolgerung? wenn dem so ist, warum tut Sie das?) mit der aktualisierten PHP ohne Anführungszeichen; Mit der neuesten PHP [wie oben gesehen, ohne Anführungszeichen, so dass es nicht senden als " - text] und der HTML-oben, der jetzt mit einem ID-tag für das Formular habe ich erhalten:

"Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',,)' at line 3" 

als ich ty zu senden von der Webseite. Und es folgt, dass Chrome nicht angezeigt wird, etwas im Hinblick auf form-Werte, nur "Request-Header" und "Response-Header" aufgeführt sind.

Meine ursprüngliche Frage/post ist noch: speichern von Werten in eine MySQL-db aus einem drop-down-Menü?

Einer verwandten Frage, ich war nicht in der Lage zu Lesen eine Lösung aus: Einfügen von Daten aus dropdown in Datenbank mit PHP

  • Warum sind Sie mit ints? MySQL hat date, datetime und time-Typen. Wie es aussieht, würden Sie wollen, um die time-oder datetime-Typ für diese Anwendung.
  • Danke. Ich plan zu machen, die Korrektur/Verbesserung. Meine aktuelle Herausforderung ist die Speicherung eingereicht dropdown-Formular-Werte. Jede Hilfe wird sehr geschätzt.
  • Korrigiert-Datenbank Struktur: Feld Typ-Sortierung Attribute Null Standard Extra Aktion unique_entry_id int(11) Nein city_id varchar(50) utf8_general_ci Nein datep Datum Keine directionp int(1) Keine timeofdayp Zeit Keine locationp int(2) Nein searchtimep int(2) Nr.
Schreibe einen Kommentar