Avatar billede welcro Nybegynder
29. januar 2006 - 13:15 Der er 13 kommentarer og
1 løsning

Ny post ved reload

Hej exp'er
Jeg kan ikke få min kode til at lade være med at oprette nye poster ved reload af browseren, har ledt i andre spm , og prøvet med noget exit;, men lige lidt hjælper det , nogen bud?, her er koden:

<form action="<?php print $_server[PHP_SELF] ?>" method="post">
skuffe:
<input type="text" name="hname" size="15"><br />
rum:
<input type="text" name="hnumber" size="10"><br />
<input type="submit" value="opret">
</form>
<?php
$sql="INSERT INTO placering values ('', '$_POST[hname]', '$_POST[hnumber]')";
$result = mysql_query($sql, $conn) or die(mysql_error());
{
echo $result;
}
?>
Avatar billede jaw Nybegynder
29. januar 2006 - 13:21 #1
Prøv:

<?php
if(isset($_POST['hname']) && !empty($_POST['hname']) && isset($_POST['hnumber']) && !empty($_POST['hnumber'])) {
  $sql="INSERT INTO placering values ('', '$_POST[hname]', '$_POST[hnumber]')";
  $result = mysql_query($sql, $conn) or die(mysql_error());
  header("Location ".$_SERVER['PHP_SELF']);
}
?>
<form action="<?php print $_server[PHP_SELF] ?>" method="post">
skuffe:
<input type="text" name="hname" size="15"><br />
rum:
<input type="text" name="hnumber" size="10"><br />
<input type="submit" value="opret">
</form>
Avatar billede johan.o Nybegynder
29. januar 2006 - 13:23 #2
Du kan checke om der er modtaget POST-data før du 'tillader' sql funktioner.

F.eks.:

....din form...
<?php
if(isset($_POST['hname'])) {
$sql="INSERT osv....
}
?>

Mvh. Johan
Avatar billede johan.o Nybegynder
29. januar 2006 - 13:24 #3
Hold da op tog det mig virkelig over to minutter at skrive det indlæg :)

Mvh. Johan
Avatar billede welcro Nybegynder
29. januar 2006 - 14:01 #4
hold da op, håret står stadig bagud :-),
meen der er et problem, submit returnerer:
Warning: Cannot modify header information - headers already sent by (output started at c:\inetpub\wwwroot\place\admin.php:16) in c:\inetpub\wwwroot\place\insert_place.php on line 5
er det mon fordi jeg INCLUDE'er ovenstående?
Avatar billede jaw Nybegynder
29. januar 2006 - 14:29 #5
Der må ikke være noget output til browseren overhovedet før header-linien bliver sendt.
Avatar billede welcro Nybegynder
29. januar 2006 - 15:00 #6
er der jo heller ikke, men gælder det også filen som includerer ovenstående??
Avatar billede jaw Nybegynder
29. januar 2006 - 15:03 #7
Ja, det gør det. Ellers kan du opdele det i 2 filer, hvor brugeren så bliver sendt over hvor dataene bliver indtastet, og så tilbage igen (brugeren vil ikke se det!). Eller flytte indsæt-delen helt op i toppen af filen.
Avatar billede welcro Nybegynder
29. januar 2006 - 15:25 #8
hvordan kunne det ca se ud?, jeg har tænkt at include 3 filer næsten som ovenstående, men include er måske slet ikke smart så?
Avatar billede jaw Nybegynder
29. januar 2006 - 15:28 #9
Tjoh, include er da smart nok, jeg ville så bare kun include formen, altså formen i 1 fil og så selve php-scriptet i en anden.

Så vil jeg sætte action på din form til f.eks. db_insert.php, med dette indhold:
<?php
if(isset($_POST['hname']) && !empty($_POST['hname']) && isset($_POST['hnumber']) && !empty($_POST['hnumber'])) {
  $sql="INSERT INTO placering values ('', '$_POST[hname]', '$_POST[hnumber]')";
  $result = mysql_query($sql, $conn) or die(mysql_error());
}
header("Location ".$_SERVER['HTTP_REFERER']);
?>
Avatar billede radion Nybegynder
29. januar 2006 - 15:31 #10
mht. headers kan du indsætte dem hvor du vil hvis du på øverste linie skriver
ob_start();

så læser den hele siden gennem inden den outputter den.. hvad det gør ved hastigheden har jeg ingen ide om, men jeg bruger det alle steder og er godt tilfreds med at kunne redirecte ligegyldigt hvor jeg er henne :)
Avatar billede jaw Nybegynder
29. januar 2006 - 15:35 #11
Den virker, men den æder ekstremt meget server-ressourcer, og er kun en løsning man efter min bedste overbevisning bør bruge hvis man ikke har andre muligheder. Den gemmer nemlig alt indhold i serverens hukommelse, inden det udskrives.
Avatar billede torbens_dk Nybegynder
29. januar 2006 - 16:41 #12
Eller du kan løse det i SQL'en ved at bruge en kolonne med uniqid som du så bruger `uniqid`= '".md5( uniqid( rand(), true))."'
Avatar billede welcro Nybegynder
29. januar 2006 - 18:55 #13
Torbens, ved ikke lige hvordan dit forslag ser ud med min kode?
Avatar billede welcro Nybegynder
10. august 2006 - 13:57 #14
lukker og takker, har løst det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester