【问题标题】:Comment section wont post comments评论区不会发表评论
【发布时间】:2016-04-14 22:54:29
【问题描述】:

我的代码有问题。当我在点击按钮时发表评论时,它不会在我刷新网站之前显示在评论字段中。有人可以帮我吗?将不胜感激!

<?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);;  
}    
?>

【问题讨论】:

  • 您应该通过 AJAX 调用来处理整个事情。所以有人发表评论,AJAX 发送到服务器,并更新页面而无需刷新。
  • 你应该使用 mysqli_real_escape_string 作为你的输入,因为这可以防止数据被添加到你的表中php.net/manual/en/mysqli.real-escape-string.php

标签: php mysql comments


【解决方案1】:

在页面重新加载之前,您需要通过 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...没有它,脚本将无法运行。

如果您需要更多帮助,请告诉我。

【讨论】:

  • 我可以将所有这些添加到我的 PHP 文档中并且它会起作用,还是我必须下载一些东西?
  • 哦,不,你需要添加更多的东西......让我尝试修复它,以便它可以为你工作......
猜你喜欢
  • 1970-01-01
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
  • 2014-08-12
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多