Jag har gjort en sida där jag vill att användarna ska kunna göra inlägg och kommentarer. Kommentarerna skrivs in via ett formulär, som ligger på en egen sida och skickas till en databas, varifrån de hämtas och visas på index-sidan. Problemet är att varje gång man uppdaterar index-sidan, så skickas den senast inlagda kommentaren en gång till till databasen. Hur kommer jag runt detta problem? Jag har letat och tror att det har något med header()- eller isset()-funktionerna att göra. Stämmer det? Hur funkar det i så fall? Tacksam för hjälp!
Koden som du nu har i index sidan som lägger till i databasen med flyttar du till en egen fil.
Sen lägger du till header koden nedan i den nya filen (efter att du har kört din insert).
Koden som du nu har i index sidan som lägger till i databasen med flyttar du till en egen fil.
Sen lägger du till header koden nedan i den nya filen (efter att du har kört din insert).
header("Location: index.php");
exit;
/edit
Välkommen till wF :bire
Tack! :) SÅ nu har jag skapat filen save_comment.php och lagt in följande kod i den:
Du har inte glömt att ändra adressen som datan skickas till i ditt formulär? Den ska ju inte längre skickas till index.php, utan till save_comment.php. Bara en snabb tanke från min sida, vilken kan vara enkel att missa =). För din PHP-kod fungerade väll innan?
----------------------------------------
Edit:
Annars är det bra att använda sig utav felhantering/spårutskrifter när man får fel t.ex. kontrollera så att det inte är några problem att skicka data till databasen (slutet av din kod):
if(mysql_query($query, $connection)) // Om allt går som det ska
{
header("Location: index.php");
exit;
}
else // Om det inte går att skriva till databasen
{
echo "Det gick inte att skriva till databasen...";
}
Nån som fattar varför det blir dubbelt? Här är koden i save_comment.php:
<?php
$connection = mysql_connect ("***-***.mysql.binero.se", "***_nm35952", "***");
mysql_select_db("***-***", $connection);
mysql_query("SET NAMES 'utf8'", $connection);
$comment_author = $_POST['comment_author'];
$comment_head = $_POST['comment_head'];
$comment_post = $_POST['comment_post'];
$query = "INSERT INTO comment (comment_post, comment_head, comment_author) VALUES ('$comment_post', '$comment_head', '$comment_author');";
$result = mysql_query($query, $connection);
if(mysql_query($query, $connection)) // Om allt går som det ska
{
header("Location: index.php");
exit;
}
else // Om det inte går att skriva till databasen
{
echo "Det gick inte att skriva till databasen...";
}
?>
if(mysql_query($query, $connection)) // Om allt går som det ska
{
header("Location: index.php");
exit;
}
else // Om det inte går att skriva till databasen
{
echo "Det gick inte att skriva till databasen...";
}
till:
if(!result)) // Om allt inte går som det ska
{
echo "Det gick inte att skriva till databasen...";
}
else // Om det går att skriva till databasen
{
header("Location: index.php");
exit;
}
Förklaring: mysql_query returnerar false om din insert misslyckas.
if(mysql_query($query, $connection)) // Om allt går som det ska
{
header("Location: index.php");
exit;
}
else // Om det inte går att skriva till databasen
{
echo "Det gick inte att skriva till databasen...";
}
till:
if(!result)) // Om allt inte går som det ska
{
echo "Det gick inte att skriva till databasen...";
}
else // Om det går att skriva till databasen
{
header("Location: index.php");
exit;
}
Förklaring: mysql_query returnerar false om din insert misslyckas.
/edit
blev lite fel först
Tack! Nu funkar det!
260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2