Frågan 23 nov. 2005 21:00 #1 jag har ett formulär som skickar data till en databas, men om jag skiver in ett inlägg och skickar iväg det och sen klickar på "uppdatera" i webläsaren så blir det dubbel inlägg,alltså två likadana inlägg, hur kommer jag runt det?
P Pedda Medlem sedan juni 2000 6 031 inlägg När du har lagt till i databasen så skickar du vidare till nästa sida med header location
Då slipper du risken att nån uppdaterar sidan.
får inte det att funka,har denna koden
mysql_query("INSERT INTO bedomning (datum, klass, bedomning, domare, handler, bild) VALUES ('$datum', '$klass', '$bedomning', '$domare', '$handler', '$bild') ");
header("Location: visa_kritik.php"); //skicka vidare
P Pedda Medlem sedan juni 2000 6 031 inlägg På vilket sätt fungerar det inte?
Felmeddelande?
nej inget fel meddelande, utan jag skickar vidare till visa_sidan.php,men får fortfarande dubbel inlägg när jag uppdaterar i webläsaren.
P Pedda Medlem sedan juni 2000 6 031 inlägg Kan vi få se lite mer kod?
visst kommer här.
<?php
$conn=mysql_connect("localhost", "******", "******");
mysql_select_db("******");
$datum = $_POST['datum'];
$klass = $_POST['klass'];
$bedomning = $_POST['bedomning'];
$domare = $_POST['domare'];
$handler = $_POST['handler'];
$bild = $_POST['bild'];
// lägg in värdena i databasen
mysql_query("INSERT INTO bedomning (datum, klass, bedomning, domare, handler, bild) VALUES ('$datum', '$klass', '$bedomning', '$domare', '$handler', '$bild') ");
header("Location: visa_kritik.php"); //skicka vidare
?>
<form method="post" action="bedomning.php" name="matain" onSubmit="return CheckForm();">
Datum:<br><input name="datum" type="text">
tex. 2005-06-02<br>
Klass:<br>
<input name="klass" type="text"><br>
Domare:<br><input name="domare" type="text"><br>
Bedömning:<br>
<textarea name="bedomning" cols="40" rows="10"></textarea>
<br>
Handler:<br><input name="handler" type="text"><br>
Bild:<br><input name="bild" type="text">
<strong>tex 1.jpg (filens namn)</strong><br>
<br>
<input name="submit" type="submit" value="Skicka">
</form><br>
<hr>
<?
//Hämta
$sql=("SELECT * FROM bedomning ORDER BY id DESC") or die("kunde inte hämta data från databasen");
$rs=mysql_query($sql, $conn) or die("kunde inte hämta från databasen");
//Funktioner
include("func.php");
// Starta tabellen
while($rad=mysql_fetch_array($rs)){
echo '<table width="100%" border="0" cellpadding="1" height="399">';
echo '<tr>';
echo'<td width="100%" height="395" valign="top">';
echo'<table width="100%" border="0">';
echo'<tr>';
echo'<td width="78%" height="146" valign="top">'.$rad['datum'].'<br><b>'.$rad['klass'].'</b><br><b> Domare:</b>'.$rad['domare'].'<br><br><b>Bedömning:</b><br><i>'. '<p>'.$rad['bedomning'].'</i></p></td>';
echo '<td width="22%"><img src=/ulrika/upload/'.$rad['bild'].'><br><i>Handler:</i> '.$rad['handler'].'</td>';
echo'</tr>';
echo'</table><br><hr>';
}
//Slut
?>
P Pedda Medlem sedan juni 2000 6 031 inlägg Edit
<?php
$conn=mysql_connect("localhost", "******", "******");
mysql_select_db("******");
if (isset($_POST['submit'])) {
$datum = $_POST['datum'];
$klass = $_POST['klass'];
$bedomning = $_POST['bedomning'];
$domare = $_POST['domare'];
$handler = $_POST['handler'];
$bild = $_POST['bild'];
// lägg in värdena i databasen
mysql_query("INSERT INTO bedomning (datum, klass, bedomning, domare, handler, bild) VALUES ('$datum', '$klass', '$bedomning', '$domare', '$handler', '$bild') ");
header("Location: visa_kritik.php"); //skicka vidare
exit; // du måste ha exit här
}
?>
P Pedda Medlem sedan juni 2000 6 031 inlägg Tänkte inte innan jag skrev, men nu ska det nog funka.
får bara en vit sida nu ,utan fel meddelande
P Pedda Medlem sedan juni 2000 6 031 inlägg Är det efter att du har klickat på submit som sidan blir vit?
Skickas du inte vidare till visa_kritik.php?
ja det är efter jag klickat på submit som sidan blir vit,nix jag skickas inte vidare,här är koden för visa_kritik.php
//Hämta
$sql=("SELECT * FROM bedomning ORDER BY id DESC") or die(mysql_error());
$rs=mysql_query($sql, $conn) or die("Err: SQL query");
//Funktioner
include("func.php");
while($rad=mysql_fetch_array($rs)){
echo '<table width="100%" border="0" cellpadding="1" height="399">';
//Skriv ut tabellen
echo '<tr>';
echo'<td width="99%" height="395" valign="top">';
echo'<table width="100%" border="0">';
echo'<tr>';
echo'<td width="78%" height="146" valign="top">'.$rad['datum'].'<br><b>'.$rad['klass'].'</b><br><b> Domare:</b>'. $rad['domare'].'<br><br><b>Bedömning:</b><br><em>'.$rad['bedomning'].'</em></td>';
echo '<td width="22%"><img src=/ulrika/upload/'.$rad['bild'].'><br><em>Handler:</em> '.$rad['handler'].'</td>';
echo'</tr>';
echo'</table><br>';
echo'<hr size "1">';
}
//Slut
?>
P Pedda Medlem sedan juni 2000 6 031 inlägg Felet måste ligga i bedomning.php
Förmodligen har du ett blanksteg eller liknande innan headern.
Kontrollera detta och försök igen.
Observera att inget får skrivas ut till webbläsaren innan headern, inte ens ett mellanslag.
det var felet,nu funkar det,tack ska du ha.