/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Browser gentager submit
Fra : "Jan Hallin"


Dato : 18-05-01 09:21

Jeg er nu endelig ved at lægge sidste hånd på min admin-side, men har et lille problem, som jeg ikke forstår at løse. Når jeg har oprettet et nyt medlem i min database - og jeg efterfølgende kommer til at trykke på opdater-knappen i Explorer-browseren, så opretter den en kopi af den netop oprettede person i databasen - på den måde virker browser-knappen, som en utilsigtet submit-knap. Jeg har ingen problemer, når jeg blot har været inde at rette i en eksisterende post. Kan nogen fortælle mig hvordan jeg løser problemet? Uddrag af min kildekode følger herunder.

Mvh Jan

<?
Function Oversigt() {
print "<A HREF=\"$PHP_SELF?id=ny\">Opret ny</A><BR><BR>";
$foresp=mysql_query("SELECT * FROM medlemmer ORDER BY opdateret DESC");
print "<TABLE cellespacing=0 cellpadding=1 border=1>\n";
while($row = mysql_fetch_array($foresp)){

print "<TR>\n";
print "<TD>$row[indmeldt]</TD>";
print "<TD>$row[opdateret]</TD>";
if ($row[aktiv]=="X") {
print "<TD width=12>$row[aktiv]</TD>";
}elseif ($row[aktiv]=="P") {
print "<TD width=12>$row[aktiv]</TD>";
} else {
print "<TD>&nbsp;</TD>";
}
print "<TD><A HREF=$PHP_SELF?id=$row[id]>
$row[fornavn] $row[efternavn]</A></TD>";
}
print "</TR></TABLE>\n";
}

Function Nytmedlem()
{global $medlemsnr, $password, $aktiv, $fornavn, $efternavn, $privat_adr;
$indmeldt=date("YmdHis");
$search = "INSERT INTO medlemmer (medlemsnr, password, aktiv , fornavn,
efternavn, privat_adr, indmeldt)
VALUES ('$medlemsnr', '$password', '$aktiv', '$fornavn','$efternavn',
'$privat_adr', '$indmeldt')";
$resultat = mysql_query($search) or die
("Kan ikke få forbindelse til SQL-server!<P>
<B>Query:</B> $search");
}
Function Retmedlem(){
global $id, $medlemsnr, $password, $aktiv , $fornavn, $efternavn, $privat_adr, $indmeldt,
$opdateret;
$dato=date("YmdHis");
$search = "UPDATE medlemmer SET medlemsnr='$medlemsnr', password='$password', aktiv='$aktiv', fornavn='$fornavn', efternavn='$efternavn', privat_adr='$privat_adr', indmeldt='$indmeldt', opdateret='$dato' WHERE id='$id'";
$resultat = mysql_query($search) or die
("Kan ikke få forbindelse til SQL-server!<P>
<B>Query:</B> $search");

}

if ($id){
if ($aktion=="ret"){
Retmedlem();
Oversigt();
} elseif ($aktion=="ny"){
Nytmedlem();
Oversigt();
}else{

if ($id<>"ny"){
$foresp=mysql_query("SELECT * FROM medlemmer WHERE id='$id'");
while($row = mysql_fetch_array($foresp)){
$id=$row[id]; $medl=$row[medlemsnr];
$pass=$row[password];
$aktiv=$row[aktiv];
$fornavn=$row[fornavn];
$efternavn=$row[efternavn];
$adr=$row[privat_adr];
$ind=$row[indmeldt];
$opd=$row[opdateret];
}
}


print "<form method=\"post\" action=\"$PHP_SELF\">";
if ($id<>"ny") {

print "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"$id\">\n";
print "<INPUT TYPE=\"hidden\" NAME=\"aktion\" VALUE=\"ret\">\n";
print "<INPUT TYPE=\"hidden\" NAME=\"indmeldt\" VALUE=\"$ind\">\n";
print "<INPUT TYPE=\"hidden\" NAME=\"opdateret\" VALUE=\"$opd\">\n";
}
else{
print "<INPUT TYPE=\"hidden\" NAME=\"id\" VALUE=\"ny\">\n";
print "<INPUT TYPE=\"hidden\" NAME=\"aktion\" VALUE=\"ny\">\n";
}

print "<TABLE border=2 cellspacing=3 cellpadding=2 bgcolor=\"\#FCDB69\">";
print "<TR><TD width=200 align=right valign=top>Indmeldt dato:</TD>";
print "<TD><input type=\"text\" size=10 name=\"indmeldt\" value=\"$ind\">";

print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Status: ";
print "<SELECT NAME=\"aktiv\" SIZE=1>";
if ($aktiv=="X") {
print "<OPTION value=\"X\" SELECTED>Aktiv\n";
} else {
print "<OPTION value=\"X\">Aktiv\n";
}
if ($aktiv=="P") {
print "<OPTION value=\"P\" SELECTED>Passiv\n";
} else {
print "<OPTION value=\"P\">Passiv\n";
}
print "</SELECT>\n";
print "</TD>";
print "</TR>";

print "<TR><TD align=right valign=top>Password:</TD><TD><input type=\"text\" size=10 name=\"password]\" value=\"$pass\">";
print "</TD></TR>";

print "<TR><TD align=right>Fornavn:</TD><TD><input type=\"text\" size=50 name=fornavn value=\"$fornavn\"></TD></TR>";
print "<TR><TD align=right>Efternavn:</TD><TD><input type=\"text\" size=50 name=efternavn value=\"$efternavn\"></TD></TR></TABLE>";
print "<BR>";

Adresse-tabel begynder
print "<TABLE border=0 cellspacing=3 cellpadding=2><TR bgcolor=\"\#FFFF66\"><TD width=110>&nbsp;</TD>";
print "<TD width=463><BIG><B>Privatbolig</B><BIG></TD></TR>";
#Adressefelt
print "<TR><TD align=right valign=top>Adresse:</TD>";
print "<TD><input type=\"text\" size=64 name=\"privat_adr\" value=\"$adr\"></TD></TR>";
print "</TABLE>";
print "<BR>";

print "<input type=submit name=ny value='Aktivér'>";
print " ";
print "<input type=reset name=reset value='Nulstil'> <BR>";
print "</form>";
}
}else{
Oversigt ();}

?>




--
Posted from fe170.worldonline.dk [212.54.64.199]
via Mailgate.ORG Server - http://www.Mailgate.ORG

 
 
Thomas Jensen - pil.~ (18-05-2001)
Kommentar
Fra : Thomas Jensen - pil.~


Dato : 18-05-01 09:22

On Fri, 18 May 2001 08:21:21 +0000 (UTC), hallin@dj-freelance.dk ("Jan
Hallin") wrote:

>Jeg er nu endelig ved at lægge sidste hånd på min admin-side, men har et lille problem, som jeg ikke forstår at løse. Når jeg har oprettet et nyt medlem i min database - og jeg efterfølgende kommer til at trykke på opdater-knappen i Explorer-browseren, så opretter den en kopi af den netop oprettede person i databasen - på den måde virker browser-knappen, som en utilsigtet submit-knap. Jeg har ingen problemer, når jeg blot har været inde at rette i en eksisterende post. Kan nogen fortælle mig hvordan jeg løser problemet? Uddrag af min kildekode følger herunder.

fix din linielængde


--
mvh
Thomas Jensen
http://pil.dk/

Kim Schulz (18-05-2001)
Kommentar
Fra : Kim Schulz


Dato : 18-05-01 10:13

Jan Hallin wrote:
>
> Jeg er nu endelig ved at lægge sidste hånd på min admin-side, men har et lille problem, som jeg ikke forstår at løse. Når jeg har oprettet et nyt medlem i min database - og jeg efterfølgende kommer til at trykke på opdater-knappen i Explorer-browseren, så opretter den en kopi af den netop oprettede person i databasen - på den måde virker browser-knappen, som en utilsigtet submit-knap. Jeg har ingen problemer, når jeg blot har været inde at rette i en eksisterende post. Kan nogen fortælle mig hvordan jeg løser problemet? Uddrag af min kildekode følger herunder.
[snip en masse kode]

hvis du lover aldrig mere at skrive mails eller nyhedsindlæg med så
lange
linier i, så kan jeg godt svare dig på hvad du skal gøre.


Problemet er at når du laver en form POST så ligger alle variablerne fra
formen i hukommelsen, så når man trykker reload, så sender den disse
igen.
den løsning som jeg finder bedst er ved at hav formen på side1, denne
form submitter så til side2 der bare behandler data(sætter ind i
databasen osv) og så via en header(location: side1) hopper vidre uden
overhovedet at vise en side frem.

altså


SIDE1 (formen) -> SIDE2 (database insert, header(location: side1)) ->
^______________________________________________________________________|


håber det hjalp lidt!

MVH
Kim

Christian Schmidt (19-05-2001)
Kommentar
Fra : Christian Schmidt


Dato : 19-05-01 15:54

Kim Schulz wrote:
>
> Problemet er at når du laver en form POST så ligger alle variablerne fra
> formen i hukommelsen, så når man trykker reload, så sender den disse
> igen.
> den løsning som jeg finder bedst er ved at hav formen på side1, denne
> form submitter så til side2 der bare behandler data(sætter ind i
> databasen osv) og så via en header(location: side1) hopper vidre uden
> overhovedet at vise en side frem.

Jeg vil også foreslå en lignende løsning.

I den forbindelse skal det bemærkes, at nogle browsere tilsyneladende
ikke bryder sig om at blive redirectet til en side med samme URL. Dvs.
at hvis samme PHP-fil står for at gemme i databasen og generere den
efterfølgende side (afhængigt af, om der bliver POST'et ting til den
eller ej), så kan der opstå problemer.


Christian

Søg
Reklame
Statistik
Spørgsmål : 177523
Tips : 31968
Nyheder : 719565
Indlæg : 6408674
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste