aasahMedlem sedan mars 20034 471 inlägg Hej!
Håller på att lära mig PHP. Enligt min bok kan man lägga form och hanterande kod i samma fil. Rent generellt undrar jag om det finns några fördelar med det jämfört med att ha en html-sida med formen och en php-sida som tar hand om datat?
Dessutom får jag ett mycket mysko utseende på formen när jag testar ett exempel i boken. (Inte riktigt bokens ex, tyckte det var lite väl stort.) Men, jag försöker skaffa mig en form som ser ut ung så här:
Namn Textfält
Födelseår Textfält
Ålder Textfält
När skriptet laddas första gången ska alla fält vara tomma. Men det är de inte!! Alla fält ligger på samma rad och innehåller texten:
<BR
??? :q Var kommer det ifrån??
<html>
<HEAD>
<title>Posten tas om hand av mig själv</title>
</head>
<?php //Genererar en form OCH tar hand om resultatet
error_reporting(E_ALL);
if (!isSet($_POST["koll"])) {
$_POST["namn"] = "";
$_POST["fodAr"] = "";
$_POST["alder"] = "";
$alder = "";
}
else {
if (!isSet($_POST["namn"])) $_POST["namn"] = "Ej ifyllt!";
else $namn = $_POST["namn"];
if (!isSet($_POST["fodAr"])) $_POST["fodAr"] = "Ej ifyllt!";
else {
$fodAr = $_POST["fodAr"];
$alder = 2004 - $fodAr;
}
}
?>
<body>
<h1>Hur gammal är du?</h1>
Fyll i namn och födelseår så räknar vi ut åldern!
<form name = "Test" action = <?php echo $_SERVER["PHP_SELF"]; ?> method = "post">
<BR>Namn: <Input type = "text" name = "namn" value = <?php echo $_POST["namn"]; ?>
<BR>Födelseår: <Input type = "text" name = "fodAr" value = <?php echo $_POST["fodAr"]; ?>
<BR>Ålder: <Input type = "text" name = "alder" value = <?php echo $alder; ?>
<BR><Input type = "hidden" name = "koll" value = 1>
<BR><Input type ="Submit" name = "Räkna!" value = "Räkna!">
</form></body></html>
PeeerMedlem sedan mars 20025 907 inlägg
aasah skrev:
Rent generellt undrar jag om det finns några fördelar med det jämfört med att ha en html-sida med formen och en php-sida som tar hand om datat?
Om du vid en kontroll upptäcker att ett nödvändigt fält inte är ifyllt, så kan du automatiskt fylla i fälten som besökaren fyllde i innan han/hon postade formuläret samt upplysa henne/honom om att fältet X inte var ifyllt.
Du har glömt att avsluta dina inputfält, prova dessutom att sätta fnuttar runt value, dvs
<BR>Namn: <Input type = "text" name = "namn" value ="<?php echo $_POST["namn"]; ?>">
osv..
aasahMedlem sedan mars 20034 471 inlägg
Peeer skrev:
aasah skrev:
Rent generellt undrar jag om det finns några fördelar med det jämfört med att ha en html-sida med formen och en php-sida som tar hand om datat?
Om du vid en kontroll upptäcker att ett nödvändigt fält inte är ifyllt, så kan du automatiskt fylla i fälten som besökaren fyllde i innan han/hon postade formuläret samt upplysa henne/honom om att fältet X inte var ifyllt.
Aaah! Det var verkligen ett UTMÄRKT skäl! Jag som trodde att en sådan koll endast kunde göras mha Javascript.
Går det att fylla i värdet i en vald radiobutton på detta sätt? :q
Och tack för felsökningen! :) Att jag inte såg att > saknades!
Blev dock ingen skillnad om jag satte ":r runt value eller ej. Men php returnerar ju en string så varför borde det bidra?
@ndersMedlem sedan juni 200032 969 inlägg
Går det att fylla i värdet i en vald radiobutton på detta sätt?
Absolut. :)
Blev dock ingen skillnad om jag satte ":r runt value eller ej. Men php returnerar ju en string så varför borde det bidra?
Det har inte med php att göra att du bör ha citationstecken runt dina fältvärden i html, utan det är för att rätt värden skall visas i fältet och skickas vidare. Kika på detta:
<input type="text" value=jag heter sören>
Eftersom inte jag heter sören omsluts av citationstecken, tolkas endast jag som fältets värde, och heter samt sören är två skumma attribut som inte alls html-tolken känner igen.
Man brukar läsa att man skall använda citationstecken (eller apostrofer, det fungerar ju det med) om fältvärdet innehåller andra tecken än a-z och 0-9.
Mvh
MatteMedlem sedan aug. 20002 975 inlägg Tag för vana att alltid omge värdet för value med citationstecken.
Och skulle det finnas minsta risk att en eventuell variabel du lägger in i value innehåller citationstecken, kör då värdet genom htmlentities:
... value ="<?php echo htmlentities($_POST["namn"], ENT_QUOTES); ?>">
ENT_QUOTES är inte nödvändigt här, men du kan gärna ta med det som en vana ifall du någon gång skulle omge ditt värde med apostrofer istället för citationstecken.
aasahMedlem sedan mars 20034 471 inlägg
@nders skrev:
...
Blev dock ingen skillnad om jag satte ":r runt value eller ej. Men php returnerar ju en string så varför borde det bidra?
Det har inte med php att göra att du bör ha citationstecken runt dina fältvärden i html, utan det är för att rätt värden skall visas i fältet och skickas vidare. Kika på detta:
<input type="text" value=jag heter sören>
Eftersom inte jag heter sören omsluts av citationstecken, tolkas endast jag som fältets värde, och heter samt sören är två skumma attribut som inte alls html-tolken känner igen....
Låter ju mycket rimligt... men varför fick då mina textfält värdet "<BR" i stället för "" (tom sträng)?? Det var ju precis motsvarighaten till jag heter Sören.... :q
htmlentities - Vad gör den? :q
MatteMedlem sedan aug. 20002 975 inlägg Du lägger in text i din value.
Om denna kod har ett citationstecken i sig så kommer din value att avslutas.
För att fortsätta med tidigare exempel, anta att du har ett citationstecken runt heter. Då får du följande i ditt formulär:
<input type="text" value="jag "heter" sören">
Här kommer värdet endast att bli 'jag '.
Ännu värre kunde det blivit om du t.ex haft med "> i texten du la in i value.
Med htmlentities byter du ut ett antal tecken, däribland citationstecknet, mot sina motsvarande entiteter. Med htmlentities skulle koden ovan istället blivit:
<input type="text" value="jag &quot;heter&quot; sören">
Men användaren skulle se citationstecken, och det skulle även postas som citationstecken.
Det är därför en kod vana att alltid köra värden man tänker lägga in i ett formulär genom htmlentities.
aasahMedlem sedan mars 20034 471 inlägg Tack, Matte! :)
Kan tyvärr inte acceptera ditt svar också...