2016-04-14 93 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

哦,不,你需要添加更多的東西...讓我試着修復它,以便它可以爲你工作... –