2016-04-21 11 views
-1

Dieser Code zeigt beim Öffnen im Browser "Antwort-Taste nicht gedrückt!" auf dem ersten, wenn die Seite geladen wird, und nach dem Text eingegeben wird und Post Taste gedrückt wird, wird der Text nicht in die Datenbank eingefügt: Hier ist der Code:Was könnte in diesem PHP-Code falsch sein?

<html> 
<head><title>Some Title</title></head> 
<body> 
<div class="bottom"> 
<form action="#reply" method='post'> 
    <input type="submit" class="button" value="Post"> 
</form> 
</div> 
<a id="reply" href="#" class="popup"></a> 
<div class="popup"> 
<div class="title"><h3>Reply to this Topic</h3></div> 
<div class="itopic"> 
    <p>What would you think about this?</p> 
    <form name="pform" method="post" action=""> 

    <tr> 
     <td><textarea name="text" placeholder="Enter your thoughtful response here!" cols="50" rows="20"></textarea></td> 
    </tr> 
    <br> 
    <tr> 
     <input type="submit" name="reply" class="tbutton" value="Reply"/> 
    </tr> 
    </form> 
</div> 


    <a class="close x" href="#">x</a> 

</div> 
<?php 
$id=$_GET['id']; //id fetched from the URL 
if(isset($_POST['reply']) && !empty($_POST['reply'])) 
{ 
    $conn=new mysqli('localhost','root','','forum') or die(mysql_error()); 
    if(!strlen(trim($_POST['text']))>0) 
    { 
     echo "Reply!"; 
    } 
    else 
    { 
     $stmt= $conn->prepare("INSERT into messages(id,text) VALUES(?,?)"); 
     $stmt->bind_param('is',$id1,$text); 
     if(isset($_POST['text'])){ $tag = $_POST['text']; } 
     $id1=$id; 
     $stmt->execute(); 
     $stmt->close(); 
     $conn->close(); 
    } 
    header("Location: forum.php"); 
    } 
    else{ 
     echo"Reply button Not pressed!"; 
}  
?> 
</body> 
</html> 

Was könnte in diesem PHP-Code falsch sein? Datenbank-Details:

  1. Datenbankname: Forum
  2. Tabellenname: Nachrichten

columns-

  1. ID (Fremdschlüssel Bezug auf topicID in einer anderen Tabelle)
  2. Zeit (Standardeinstellung ist CURRENT_TIMESTAMP)
  3. Text

PS: Ich bin neu in PHP. So wirklich Hilfe

geschätzt
+0

'mysql_error()' nicht mit dem MySQLi API arbeiten. –

+0

Probieren Sie dies aus if (isset ($ _ POST ['reply']) && $ _POST ['reply']! = "") – RJParikh

+0

Zuerst wird in Ihrem Code $ id nicht aus dem Formular abgerufen, da Sie es nicht in der GET-Anfrage übergeben. – RJParikh

Antwort

2

Ich glaube, der Fehler in dieser Zeile ist:

if(isset($_POST['text'])){ $tag = $_POST['text']; } 

sollte es

if(isset($_POST['text'])){ $text = $_POST['text']; } 

statt, da Sie den Parameter $ text erfordern und nicht $ tag.

Ich würde setzen auch diese Zeile

$stmt->bind_param('is',$id1,$text); 

nach dieser Zeile:

$id1=$id; 
1

Ich denke, Ihre ID eine Textzeichenfolge sein wird und nicht eine ganze Zahl, so dass die bind_param() Funktion fehlschlagen. Versuchen Sie, die ID als Ganzzahl zu übergeben.

$id=$_GET['id']; //id fetched from the URL 
$id = (int) $id; 
+0

Sie sind richtig, aber ich war nur bescheiden. Ich habe meine Antwort bearbeitet. –

1

Meine Vermutung ist, Ihr Redirect-Befehl (header("Location: forum.php");), es ist an der falschen Stelle dort

+1

Das ist nur die Spitze des Eisbergs. –

+0

Bitte nicht raten. –

Verwandte Themen