/ 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
Value på submit-knap
Fra : Ole Olsen


Dato : 10-06-04 01:58


Et problem er opstået. Jeg har en ganske alm. form (indlejret i php)
her

echo "<form action=".$_SERVER['PHP_SELF']." method=\"get\"
name=\"form\">";
echo "<input type=\"submit\" value=\"vaerdien\" name=\"navnet\">";
echo "</form>";

Når der trykkes på knappen 'vaerdien' svarer det jo til at
$navnet='vaerdien'. Der er som det skal være.

Kan jeg få en anden tekst på knappen uden at $navnet ændres?

Jeg kan desværre ikke udtrykke det mere klart. Jeg håber det kan
forstås derude.

OO

 
 
Jonas Koch Bentzen (10-06-2004)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 10-06-04 08:23

Ole Olsen wrote:
>
> Et problem er opstået. Jeg har en ganske alm. form (indlejret i php)
> her
>
> echo "<form action=".$_SERVER['PHP_SELF']." method=\"get\"
> name=\"form\">";
> echo "<input type=\"submit\" value=\"vaerdien\" name=\"navnet\">";
> echo "</form>";
>
> Når der trykkes på knappen 'vaerdien' svarer det jo til at
> $navnet='vaerdien'. Der er som det skal være.
>
> Kan jeg få en anden tekst på knappen uden at $navnet ændres?

Ikke umiddelbart. Det er en meget dårlig ide at gøre sit script afhængig
af, at der står noget bestemt som value på en submitknap. Man skal kunne
skifte teksten når som helst.

Hvis du bare vil teste på, om formularen er indsendt, så brug

if (!empty($_POST)) {
}

Ole Olsen (10-06-2004)
Kommentar
Fra : Ole Olsen


Dato : 10-06-04 20:25

On Thu, 10 Jun 2004 09:22:43 +0200, Jonas Koch Bentzen
<ingen.email@eksempel.dk> wrote:

>Ole Olsen wrote:
> >
>> Kan jeg få en anden tekst på knappen uden at $navnet ændres?
>
>Ikke umiddelbart.
Øv, øv og atter øv.

>
>Hvis du bare vil teste på, om formularen er indsendt, så brug
>
>if (!empty($_POST)) {
>}

Den løsnin kan jeg desværre ikke bruge. Sagen er, at jeg har flere
knapper med samme navn og forskellige værdier. Når brugeren klikker på
en af knapperne skal der én af flere mulige ting.

Jeg har også prøvet denne her
<BUTTON TYPE=\"submit\" NAME=\"navnet\"
VALUE=\"vaerdien\">abc</BUTTON>

Den fatter jeg simpelthen ikke. Der bliver værdien sat til abc


OO



Jonas Koch Bentzen (10-06-2004)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 10-06-04 20:54

Ole Olsen wrote:
>
> Den løsnin kan jeg desværre ikke bruge. Sagen er, at jeg har flere
> knapper med samme navn og forskellige værdier. Når brugeren klikker på
> en af knapperne skal der én af flere mulige ting.

Okay, jeg er ikke sikker på, at følgende virker, men prøv det alligevel:

<?php
if (!empty($_POST['submit1'])) {
   echo 'Du har klikket på første submitknap';
}
else if (!empty($_POST['submit1'])) {
   echo 'Du har klikket på anden submitknap';
}
?>

<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post'>
   <div>
      <input type='submit' name='submit1' value='Tekst, der kan udskiftes'/>
      <input type='submit' name='submit2' value='Anden tekst, der kan
udskiftes'/>
   </div>
</form>

Kim Emax (11-06-2004)
Kommentar
Fra : Kim Emax


Dato : 11-06-04 00:41

Jonas Koch Bentzen wrote:

> <?php
> if (!empty($_POST['submit1'])) {
> echo 'Du har klikket på første submitknap';
> }
> else if (!empty($_POST['submit1'])) {
> echo 'Du har klikket på anden submitknap';
> }

Retter lige

else if (!empty($_POST['submit2'])) {
echo 'Du har klikket på anden submitknap';
}

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Jonas Koch Bentzen (11-06-2004)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 11-06-04 08:43

Kim Emax wrote:
>
> Retter lige
>
> else if (!empty($_POST['submit2'])) {

Tak - jeg var lidt hurtigt ude dér :)

Ole Olsen (11-06-2004)
Kommentar
Fra : Ole Olsen


Dato : 11-06-04 03:33

On Thu, 10 Jun 2004 21:53:58 +0200, Jonas Koch Bentzen
<ingen.email@eksempel.dk> wrote:


>Okay, jeg er ikke sikker på, at følgende virker, men prøv det alligevel:

Det gør jeg så, altså prøver! Tak for hjælpen, også til de andre der
har bidraget til denne tråd. Det har været interessant.

OO


Kim Emax (11-06-2004)
Kommentar
Fra : Kim Emax


Dato : 11-06-04 09:25

Jonas Koch Bentzen wrote:

> Ikke umiddelbart. Det er en meget dårlig ide at gøre sit script
> afhængig af, at der står noget bestemt som value på en submitknap.
> Man skal kunne skifte teksten når som helst.

Hvorfor mener du det? Jeg har f.eks. brugt det til "videre til udsendelse af
nyhedsmail" & "tilbage og ret nyhedsmail" knapper. Kan ikke se det skulle
give anledning til et problem?

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Ulrik Nielsen (11-06-2004)
Kommentar
Fra : Ulrik Nielsen


Dato : 11-06-04 10:23

Kim Emax wrote:
>>Ikke umiddelbart. Det er en meget dårlig ide at gøre sit script
>>afhængig af, at der står noget bestemt som value på en submitknap.
>>Man skal kunne skifte teksten når som helst.
>
> Hvorfor mener du det? Jeg har f.eks. brugt det til "videre til udsendelse af
> nyhedsmail" & "tilbage og ret nyhedsmail" knapper. Kan ikke se det skulle
> give anledning til et problem?

Det giver hurtigt problemer hvis du på et tidspunkt skal sprogversionere
dit site, for så vil teksten i knappen skulle ændre sig alt afhængigt af
hvilket sprog der er aktivt.

--
>> ulrik nielsen
excuse of the day : We only support a 1200 bps connection.
from bofh : http://www.cs.wisc.edu/~ballard/bofh/

Kim Emax (11-06-2004)
Kommentar
Fra : Kim Emax


Dato : 11-06-04 10:43

Ulrik Nielsen wrote:
> Kim Emax wrote:

> Det giver hurtigt problemer hvis du på et tidspunkt skal
> sprogversionere dit site, for så vil teksten i knappen skulle ændre
> sig alt afhængigt af hvilket sprog der er aktivt.

Kommmer jo igen an på, hvordan man koder... Ahh... sorry... Når jeg tænker
value, så tænker jeg NAMEs value - nu forstår jeg, hvad I opponerer imod.
Jeg er enig

--
Take Care
Kim Emax - master|minds - Vi tænker IT for dig...
http://www.masterminds.dk - http://www.emax.dk



Kim Andersen (10-06-2004)
Kommentar
Fra : Kim Andersen


Dato : 10-06-04 08:29

> echo "<form action=".$_SERVER['PHP_SELF']." method=\"get\"
> name=\"form\">";
> echo "<input type=\"submit\" value=\"vaerdien\" name=\"navnet\">";
> echo "</form>";
>
> Når der trykkes på knappen 'vaerdien' svarer det jo til at
> $navnet='vaerdien'. Der er som det skal være.
>
> Kan jeg få en anden tekst på knappen uden at $navnet ændres?
>

Alternativt kan du lave en hidden værdi.

<input type="hidden" name="action" value="myvalue">

og når man trykker på submit, hente værdien ud med $_GET["action"]


/Kim



Peter Anskjær (10-06-2004)
Kommentar
Fra : Peter Anskjær


Dato : 10-06-04 09:04

"Kim Andersen" <_dingdong@dingeling> skrev i en meddelelse
news:67flp1-7d52.ln1@crm.nwg.dk...
> > echo "<form action=".$_SERVER['PHP_SELF']." method=\"get\"
> > name=\"form\">";
> > echo "<input type=\"submit\" value=\"vaerdien\" name=\"navnet\">";
> > echo "</form>";
> >
> > Når der trykkes på knappen 'vaerdien' svarer det jo til at
> > $navnet='vaerdien'. Der er som det skal være.
> >
> > Kan jeg få en anden tekst på knappen uden at $navnet ændres?
> >
>
> Alternativt kan du lave en hidden værdi.
>
> <input type="hidden" name="action" value="myvalue">
>
> og når man trykker på submit, hente værdien ud med $_GET["action"]
>
Som et andet alternativ kan man lade formen sende til
$_SERVER['PHP_SELF']."?submit=true"
Det er selvfølgeligt lidt mærkeligt lige umiddelbart, men jeg har fundet det
brugbart for at undgå at formen blev sendt flere gange ved brug af refresh.
Når formen sendes sættes så en session_var eller lign til en værdi, hvis
denne er sat redirectes til $_SERVER['PHP_SELF'] uden submit=true, derved
tror IE (var vist kun den jeg havde problemer med) at det er en anden side
og vil derfor ikke have sat "action" og sende formen igen.
Det er en noget anderledes løsning, men det løser problemer med resubmits
effektivt.

Mvh
Peter



Jonas Koch Bentzen (10-06-2004)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 10-06-04 09:31

Peter Anskjær wrote:
>
> Som et andet alternativ kan man lade formen sende til
> $_SERVER['PHP_SELF']."?submit=true"
> Det er selvfølgeligt lidt mærkeligt lige umiddelbart, men jeg har fundet det
> brugbart for at undgå at formen blev sendt flere gange ved brug af refresh.
> Når formen sendes sættes så en session_var eller lign til en værdi, hvis
> denne er sat redirectes til $_SERVER['PHP_SELF'] uden submit=true, derved
> tror IE (var vist kun den jeg havde problemer med) at det er en anden side
> og vil derfor ikke have sat "action" og sende formen igen.
> Det er en noget anderledes løsning, men det løser problemer med resubmits
> effektivt.

Personligt synes jeg, det er en meget bedre ide at lave en
Location-header-viderestilling fra det script, der postes til. Det
betyder så, at brugeren kan opdatere resultat-/svarsiden så meget,
han/hun vil.

Altså:
formular.php poster til formularmodtagelse.php, som ikke sender noget
output, men bare behandler dataene og dernæst viderestiller til svar.php.

Peter Anskjær (10-06-2004)
Kommentar
Fra : Peter Anskjær


Dato : 10-06-04 11:06

"Jonas Koch Bentzen" <ingen.email@eksempel.dk> skrev i en meddelelse
news:ca967h$1kgj$1@news.cybercity.dk...
> Peter Anskjær wrote:
> >
> > Som et andet alternativ kan man lade formen sende til
> > $_SERVER['PHP_SELF']."?submit=true"
> > Det er selvfølgeligt lidt mærkeligt lige umiddelbart, men jeg har fundet
det
> > brugbart for at undgå at formen blev sendt flere gange ved brug af
refresh.
> > Når formen sendes sættes så en session_var eller lign til en værdi, hvis
> > denne er sat redirectes til $_SERVER['PHP_SELF'] uden submit=true,
derved
> > tror IE (var vist kun den jeg havde problemer med) at det er en anden
side
> > og vil derfor ikke have sat "action" og sende formen igen.
> > Det er en noget anderledes løsning, men det løser problemer med
resubmits
> > effektivt.
>
> Personligt synes jeg, det er en meget bedre ide at lave en
> Location-header-viderestilling fra det script, der postes til. Det
> betyder så, at brugeren kan opdatere resultat-/svarsiden så meget,
> han/hun vil.
>
> Altså:
> formular.php poster til formularmodtagelse.php, som ikke sender noget
> output, men bare behandler dataene og dernæst viderestiller til svar.php.

Kan godt følge dig, problemet er bare at jeg har det hele i en fil,
formular.php. Når først formularen er sendt står der på skærmen hvad
brugeren har sendt, derfor er der ingen som helst grund til at brugeren skal
opdatere. Hvis jeg derimod lavede det i 3 filer ville den første indeholde
formularen, den næste skulle sende indholdet og viderestille eller stille
tilbage til formularen hvis alting ikke var korrekt udfyldt. Men hvad så
hvis brugeren beslutter sig for at sende en besked mere og derfor går
tilbage til formularen, så vil de gamle værdier vel stadigvæk være gemt og
derfor blive vist i formularen?
Jeg kan godt se at min løsning ikke duer hvis der på når formularen er sendt
er dynamisk indhold, dette vil betyde at brugeren bliver ledt tilbage til
start.

Mvh
Peter



Jonas Koch Bentzen (10-06-2004)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 10-06-04 12:54

Peter Anskjær wrote:
>
>>Altså:
>>formular.php poster til formularmodtagelse.php, som ikke sender noget
>>output, men bare behandler dataene og dernæst viderestiller til svar.php.
>
>
> Kan godt følge dig, problemet er bare at jeg har det hele i en fil,
> formular.php.

Min kan sagtens laves i én fil:

formular.php?side=formular poster til formular.php?side=modtagelse, som
ikke sender noget output, men bare behandler dataene og dernæst
viderestiller til formular.php?side=svar

I formular.php:

/* Ordentlige programmører udfører aldrig kode på
variabler, de ikke er 100% sikre på eksisterer :) */
if (!isset($_GET['side'])) $_GET['side'] = NULL;

switch ($_GET['side']) {
   case 'modtagelse':
      // ...
      break;
   case 'svar':
      // ...
      break;
   default: // Vi lader formularsiden være default.
      // ...
}


> Når først formularen er sendt står der på skærmen hvad
> brugeren har sendt, derfor er der ingen som helst grund til at brugeren skal
> opdatere.

Det er muligt - jeg har dog oplevet mange tilfælde, hvor selv erfarne
brugere går i den her fælde: De sender en formular, ser en side med
resultatet og klikker på et link på resultatsiden, der fører til f.eks.
forsiden. Fint nok, men på et eller andet tidspunkt har brugeren så lyst
til at bevæge sig tilbage til en tidligere side. Han/hun klikker et par
gange på tilbageknappen, og når han/hun så kommer til resultatsiden,
kommer der en meddelelse a la "siden kan ikke ses uden at gensende
dataene". Den erfarne bruger får så ødelagt sin historik (han/hun kan
ikke komme tilbage til siderne før formularen (med mindre han/hun
klikker på pilen ved siden af tilbageknappen og finder siden, han/hun
vil frem til, på listen - men det er besværligt). Er det derimod en
uerfaren bruger, ja, så gør han/hun det, der er endnu værre: Han/hun
klikker bare på "Okay" til at gensende dataene, hvorefter formularen
bliver indsendt igen.

> Hvis jeg derimod lavede det i 3 filer ville den første indeholde
> formularen, den næste skulle sende indholdet og viderestille eller stille
> tilbage til formularen hvis alting ikke var korrekt udfyldt. Men hvad så
> hvis brugeren beslutter sig for at sende en besked mere og derfor går
> tilbage til formularen, så vil de gamle værdier vel stadigvæk være gemt og
> derfor blive vist i formularen?

Ja - det, at der er et mellemskridt mellem formularsiden og
resultatsiden hindrer ikke, at dataene stadig står i formularen, når man
via tilbageknappen går tilbage på siden.

Peter Anskjær (10-06-2004)
Kommentar
Fra : Peter Anskjær


Dato : 10-06-04 14:20

"Jonas Koch Bentzen" <ingen.email@eksempel.dk> skrev i en meddelelse
news:ca9i59$2460$1@news.cybercity.dk...
> Peter Anskjær wrote:
> >
> >>Altså:
> >>formular.php poster til formularmodtagelse.php, som ikke sender noget
> >>output, men bare behandler dataene og dernæst viderestiller til
svar.php.
> >
> >
> > Kan godt følge dig, problemet er bare at jeg har det hele i en fil,
> > formular.php.
>
> Min kan sagtens laves i én fil:
>
Ok, kan godt se det smarte i din fremstilling, brugerens historik vil ikke
være ødelagt og der kan refreshes uden at blive stillet tilbage til den
tomme form, jeg vil overveje om en ændring af min formular er nødvendig.

Mvh
Peter



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

Månedens bedste
Årets bedste
Sidste års bedste