2016-04-14 7 views
0

Ich habe ein Problem in meinem Code. Wenn ich einen Kommentar aka poste, wenn ich den Knopf drücke, wird es nicht im Kommentarfeld angezeigt, bevor ich die Seite aktualisiere. Kann mir jemand dabei helfen? Es wäre wirklich geschätzt!Kommentarbereich wird keine Kommentare schreiben

<?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

Sie sollten diese ganze Sache von und AJAX-Anruf behandelt haben. So jemand postet den Kommentar, AJAX sendet zu Server und aktualisiert die Seite ohne Notwendigkeit für eine Aktualisierung. – durbnpoisn

+0

Sie sollten die mysqli_real_escape_string für Ihre Eingaben verwenden, da dies verhindern kann, dass Daten zu Ihren Tabellen hinzugefügt werden http://php.net/manual/en/mysqli.real-escape-string.php – jeff

Antwort

0

Bis zum erneuten Laden der Seite müssen Sie den Kommentar vorübergehend über AJAX hinzufügen.

Etwas wie folgt aus:

// 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> 

Also das sollte Popup ein Feld mit einer Antwort in ihm. Sie müssen von hier aus zwicken. Ihr PHP muss die Antwort widerspiegeln und dann an Ihren HTML-Code anhängen.

Sie müssen Variablen über Daten übergeben. Alles hängt davon ab, was dein PHP-Skript tut ... In diesem Fall test_envy.php.

Eine weitere wesentliche Sache, die ich vergaß zu erwähnen ist, dass Sie diese Zeile in den Kopf Ihrer html hinzufügen müssen:

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

Dies ist jQuery auf Ihrer Seite ... Ohne es zu laden, wird das Skript gewonnen arbeite nicht.

Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen.

+0

Kann ich einfach alles hinzufügen mein PHP-Dokument und es wird funktionieren, oder muss ich etwas herunterladen? – Simen

+0

Oh nein, du musst mehr Zeug hinzufügen ... lass mich versuchen, es ein wenig zu reparieren, damit es für dich funktionieren kann ... –