2016-04-14 16 views
0

私のコードに問題があります。私がボタンを押したときにコメントをつけると、サイトをリフレッシュする前にコメントフィールドに表示されません。誰か助けてくれますか?本当に感謝しています!コメントセクションはありませんコメントを投稿

<?php 
    $db = mysqli_connect("localhost", "root", "", "mydb"); 

if (mysqli_connect_errno()) { 
die(mysqli_connect_error()); 
} 

$query = "SELECT * FROM kommentar"; 

$resultat = mysqli_query($db,$query); 
if (!$resultat) echo "<b>FEIL: ikke i stand til å sende.</b>"; 

$rows = array(); 

while ($row = mysqli_fetch_array($resultat, MYSQL_ASSOC)) { 
$rows[] = $row; 
} 


$query2 = sprintf("select * from kommentar"); 

// Sender spørring til databasen og tester på om den gjekk OK 
$resultat2=mysqli_query($db, $query2);  
if (!$resultat2) echo "<b>FEIL: ikkje i stand til å senda.</b>"; 

// Initialisere rows2 som ein 'array' 
$rows2 = array(); 
// Henter verdiar til rows1 frå database-svaret 
while ($row2 = mysqli_fetch_array($resultat2, MYSQL_ASSOC)) { 
    $rows2[] = $row2;  
} 

if (isset($_GET['id']) && intval($_GET['id']) > 0) { 

// Hentar id frå querystreng 
$id = $_GET['id']; 

// "Cast" id til integer, dvs. gjer om id til heiltal 
$id = (int) $id; 
} 
?> 


<!DOCTYPE html> 
<html> 
<head> 
<title>Kommentarfelt</title> 
</head> 
<body> 
    <h3> Kommentarer: </h3> 
    <?php foreach($rows2 as $row2): ?> 
      <?php echo $row2['tekst']; ?> 
      Lagt inn <?php echo $row2['opprettet']; ?> av <?php echo 
    $row2['navn']; ?><br>             
    <?php endforeach; ?> 
    <h4> Skriv ny kommentar: </h4> 
    <form method="POST" action="test_envy.php?id=<?php echo $row1['id']; ?>"> 
    <b>Navn:</b><br> 
<input type="navn" name="navn"><br> 
<b>Kommentar:</b><br> 
<textarea cols="60" rows="6" name="tekst"></textarea><br> 
<input type="submit" name="sendknapp" value="Send"></form> 
</body> 
<?php 

/*if ($_POST["sendknapp"] == "Send")*/ 


if($_SERVER['REQUEST_METHOD'] == "POST") 

{  
//mysql_connect("localhost","root",""); /* server, username, passord */ 
//mysql_select_db("mydb"); 
$db = mysqli_connect("localhost","root","","mydb");  
$navn=$_POST["navn"]; 
$tekst=$_POST["tekst"];  
$query ="INSERT INTO kommentar (navn, tekst)";  
$query.="VALUES ('$navn','$tekst')";  
$resultat=mysqli_query($db, $query);  
if ($resultat) { 
printf("Kommentar registrert", mysqli_insert_id($db)); 
echo ("<a href='vg.no" . $id . "';> Oppdater side </a>");} 

else printf("ikkje i stand til å senda query:%s", $query);; 
}  
?> 
+0

この全部をAJAXコールで処理する必要があります。そこで誰かがコメントを投稿し、AJAXはサーバーに送信し、ページを更新して更新する必要はありません。 – durbnpoisn

+0

あなたの入力にはmysqli_real_escape_stringを使用してください。データがテーブルに追加されないようにする必要があります。http://php.net/manual/en/mysqli.real-escape-string.php – jeff

答えて

0

ページがリロードされるまで、AJAX経由でコメントを一時的に追加する必要があります。このような

何か:

// Add this line in your form 
<input type='hidden' id='ajaxURL' value='test_envy.php?id=<?php echo $row1['id'] ?>'> 

// Add this to your HTML 
<script> 
$('input[name="sendknapp"]').click(function(e){ 

    e.preventDefault(); // Stops your page from reloading 

    var ajaxurl = $('#ajaxURL').val(); 

    $.ajax({ url: ajaxurl, // The URL you're gonna pass to the script 
     data: {action: 'test'}, // Variables you wanna pass to the function 
     type: 'post', 
     success: function(response) { 
      // Get your variables from the response 
      alert(response); // This will show you the response in an alert box 
      // $('#elementID').append("<a href='" + variable + "'> Oppdater side </a>"); 
     } 
    }); 
}); 
</script> 

だから、このべきポップアップそれで応答でのボックス。あなたはここから微調整する必要があります。 PHPがレスポンスをエコーし​​てHTMLに追加する必要があります。

データで変数を渡す必要があります。それはあなたのPHPスクリプトが何をするかによって決まります...この場合はtest_envy.phpです。私が言及するのを忘れてしまった

もう一つの本質的なことは、あなたがあなたのhtmlの先頭に次の行を追加する必要がある:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.js"></script> 

これは、スクリプトが勝った、それがなければ...あなたのページにjQueryのをロードすることです仕事はありません。

さらなるヘルプが必要な場合はお知らせください。

+0

私のPHPドキュメントとそれが動作する、または私は何かをダウンロードする必要がありますか? – Simen

+0

ああ、それ以上のものを追加する必要はありません...それはあなたのために働くことができるように少しそれを修正しようとしましょう... –

関連する問題