2016-05-08 11 views
-1

Hallo Ich habe Probleme beim Einfügen von Formulardaten in eine MySQL-Datenbank. Ich habe den Code unten, weil ich nicht einmal sicher bin, wo ich anfangen soll, das Problem herauszufinden. Die Datei unten ist discuss.php, die eine Homepage für ein Diskussionsforum ist, das ich zu implementieren versuche. Das Formular erscheint nach einem Klick und dann sollte es die Formulardetails in POST speichern und von dort in die Datenbank einfügen!Formular modal Einreichung gleiche Datei zu MySql

<table> 
    <tr> 
     <td id="discuss_nav"> 
     <ul class="nav nav-pills"> 
      <li><a id="general" href="#general">General</a></li> 
      <li><a id="parks" href="#parks">Dog Parks</a></li> 
      <li><a id= "events" href="#events">Events</a></li> 
      <li><a id="questions" href="#questions">Q&A</a></li> 
      <li><a id="sophos" href="#sophos">Sophos</a></li> 
      <li ><button id="newpost" type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal" href="#newpost">New Post</button></li> 
     </ul> 
    </td> 
    <td> 
     <div id="laptop"><p id="discuss_intro">Here you can chat with fellow Sophos dog lovers, or just people who love Sophos and their dogs. To get started, click on the discussion topics to see older posts or create a new post to start some conversation. Happy chatting!</p></div> 
     <div id="success_parent"></div> 
    </td> 
    <td> 
    <div id="success_child"></div> 
    </td> 
    <tr> 
</table> 

<?php 


if (isset ($_POST['submit']) && $_POST['submit']=='Add To Records') { 
    // check if the form was submitted 
    //do db thing here 
    $hostname="localHost"; 
    $username="removed"; 
    $password="removed"; 
    $dbname="removed"; 
    $usertable="removed"; 

    $link = mysql_connect($hostname, $username, $password); 

    if (!$link) { 
     die('Not connected : ' . mysql_error()); 
    } 

    // make foo the current db 
    $db_selected = mysql_select_db($dbname, $link); 

    if (!$db_selected) { 
     die ('Can\'t use foo : ' . mysql_error()); 
    } 

    $title = mysql_real_escape_string($_POST['title']); 
    $author = mysql_real_escape_string($_POST['author']); 
    $content = mysql_real_escape_string($_POST['content']); 
    $topic = mysql_real_escape_string($_POST['topic']); 

    //Define the query. Note in this query we use the table "errors" 
    $query = "INSERT INTO discuss (title, name, content, topic) VALUES ('{$title}', '{$author}', '{$content}', '{$topic}')"; 

    //Execute the query 
    mysql_query ($query); 

    mysql_close(); 
} 

?> 
    <!-- Modal --> 
    <div class="modal fade" id="myModal" role="dialog"> 
    <div class="modal-dialog"> 

     <!-- Modal content--> 
     <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal">&times;  </button> 
      <h2 class="modal-title">New Post</h2> 
     </div> 
     <div class="modal-body"> 
      <p> 
      <form name= "postform" action="discuss.php" method="post" class = "newpostform"> 
     <fieldset> 
      <div class="newpostform-group1"> 
       <input autocomplete="off" autofocus class="form-control" name="post_title" placeholder="Post Title" type="text"/> 
      </div> 

      <div class="newpostform-group1"> 
       <input class="form-control" name="author" placeholder="Author" type="text"/> 
      </div> 

      <div class="newpostform-grouplist"> 
      <select name="topic" class ="topic_drop"> 
       <option selected disabled>Select Topic</option> 
       <option value="General">General</option> 
       <option value="Dogparks">Dog Parks</option> 
       <option value="QandA">Q&A</option> 
       <option value="Sophos">Sophos</option> 
      </select> 
      </div> 

      <div class="newpostform-group2" id = "desc"> 
       <textarea class="form-control" name="content" placeholder="Text" type="text"></textarea> 
      </div> 

      <div class="newpostform-group3"> 
       <button class="btn btn-default" name="submit" type="submit" id="addpost"> 
        <span aria-hidden="true" class="glyphicon glyphicon-log-in"></span> 
       Add Post 
       </button> 
      </div> 

    </fieldset> 
</form> 
<br> 



     </p> 
     </div> 
     <div class="modal-footer"> 
     <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
     </div> 
     </div> 

    </div> 
    </div> 

</div> 

</body> 
</html> 
+0

Und was ist der Fehler, den Sie haben? –

+0

Sie haben als jQuery getaggt, aber es gibt keinen Code, der die Frage unterstützt. –

+0

Sie haben dies vor 2 Tagen gepostet, kamen aber nicht zurück. Ich habe eine Antwort gepostet, unter der einige Numbnuts herabgestimmt haben. * Mh *, wie auch immer ... was kannst du dagegen tun, richtig? * pffft * –

Antwort

-2

Erstens die folgende Bedingung nie getroffen:

&& $_POST['submit']=='Add To Records' 

da es kein Element wird ausgeführt, dass Wert und nichts innerhalb dieser bedingten Anweisung trägt.

Wenn Sie hinzugefügt haben, wäre ein else{ echo "Not set."; }

-if (isset ($_POST['submit']) && $_POST['submit']=='Add To Records') {...}, würden Sie das gesehen „Nicht festgelegt.“ Nachricht erscheint.

Daher müssen Sie es auf die von value="Add To Records" Zugabe folgenden Änderungen:

<button class="btn btn-default" name="submit" type="submit" id="addpost" value="Add To Records">Add To Records</button> 

Sie beachten Sie, dass, wenn Sie es value="Add to records" mit Klein ändern „auf“ und „Aufzeichnungen“, die bedingte Anweisung fehl.

  • Es wird zwischen Groß- und Kleinschreibung unterschieden.

Überprüfen Sie auf Fehler auch gegen Ihre Abfrage, sollte es irgendwo fehlschlagen.

Auch diese name="post_title" zu $_POST['title'] Zusammenhang scheint und nicht übereinstimmt. Daher müssen Sie sie in Array-Namen übereinstimmen.

Dann haben Sie

<textarea class="form-control" name="content" placeholder="Text" type="text"> 
                    ^^^^^^^^^^^ 

Das <textarea> Element nicht ein "Typ" hat, so dass es entfernen.

Nebennotiz über mysql_query ($query);. Möglicherweise müssen Sie den Verbindungsparameter an ihn übergeben, z. B. mysql_query ($query, $link);.

Fügen Sie error reporting an den Anfang Ihrer Datei (en), die dabei helfen werden, Fehler zu finden.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// Then the rest of your code 

Nebenbei bemerkt: angezeigte Fehler sollten nur in Staging durchgeführt werden, und nie Produktion.

Wenn Sie eine Benachrichtigung über eine veraltete MySQL-Bibliothek erhalten, müssen Sie möglicherweise zu der MySQLi_-API oder PDO wechseln, etwas, das Sie heutzutage verwenden sollten, da es ab PHP 5.5 veraltet ist und ab PHP gelöscht wird 7.0

Referenzen: (Prepared Statements)

+0

Danke für den Downvote, es hält mich am Leben. –

+0

oh und es ist die richtige Antwort ': p' –

Verwandte Themen