|
| 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
| |
|
|