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

哦,不,你需要添加更多的东西...让我试着修复它,以便它可以为你工作... –