webForumDet fria alternativet

xhtml och php

HTML & CSS

11 svar · 356 visningar · startad av Patrik81

Medlem sedan okt. 2001538 inlägg
Frågan#1

Satt här och fipplade lite med xhtml, som jag är helt ny på, och så satt jag och läste på w3schools där de sa att man skall byta ut name="" mot id="" på input taggar etc.

D.v.s

<input type="text" id="fnamn" />

istället för det traditionella

<input type="text" name="fnamn">

men eftersom php använder sig utav name="" för att skapa sina variabler (exempelvis $_POST['fnamn'] ) så blev jag lite nyfiken på om php klarar av id="" med, och ok, nu kör jag en gammal version av php (4.0.6) men om man byter ut alla name="" mot id="" hur skall man då göra?

Det står ju iofs. på w3schools också att man för bakåtkompabilitetens skull skall använda bägge

<input type="text" name="fnamn" id="fnamn" />

men funkar det om man ska köra strict xhtml?

Bara en tanke...

Kanske mer en php fråga än en xhtml fråga, så det är möjligt att jag postat denna fel, ber om ursäkt om så är fallet.

MVH Patrik

Medlem sedan juni 20014 290 inlägg
#2

Borde inte vara några problem eftersom PHP inte ser forumlären eller hur variablerna är skapade.

webläsaren skickar ju bara "variabelnamn=värde" till servern oavsett hur ditt formulär ser ut.

Snarare borde det vara problem med äldre versioner av webläsarna.

Medlem sedan dec. 20025 483 inlägg
#3

men funkar det om man ska köra strict xhtml?

Svar: Ja.

Se även http://www.w3.org/TR/xhtml1/#h-4.10

:)

Medlem sedan okt. 2001538 inlägg
#4

Jag slängde ihop lite kod för att testa det, men det gick inte alltför bra :(

<?php
// xhtml test
if(isset($HTTP_POST_VARS['xhtml'])){
	echo("Det funkar fint att sätta id istället för name på input elementen");
} else {
	?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml-strict.dtd">
<html>
<head>
	<title>xhtml test</title>
</head>
<body>
<form action="test.xhtml.php" method="post">
	<input type="text" id="xhtml" /> Skriv något!<br />
	<input type="submit" value="Submit!" />
</form>
</body>
</html>
	<?php
}
?>

och det funkade inget vidare med GET heller :(

Men så har jag förstås inte kollat i någon nyare version av php heller... kanske funkar bättre där...

Nåväl, får fortsätta att testa...

MVH Patrik

Medlem sedan dec. 20025 483 inlägg
#5

När det gäller XHTML så fungerar det inte p.g.a.:

1. Du har inte definierat någon charset. Ex:
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />

2. Dina input-taggar måste ligga i exempelvis en <div>

Fungerande kod:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml-strict.dtd">
<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
	<title>xhtml test</title>
</head>
<body>
<form action="test.xhtml.php" method="post">
	<div><input type="text" id="xhtml" /> Skriv något!<br /></div>
	<div><input type="submit" value="Submit!" /></div>
</form>
</body>
</html>

:)

Medlem sedan juni 20014 290 inlägg
#6

Här är en variant som går igenom w3c validator

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>xhtml test</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-15" />
</head>
<body>
<?php
// xhtml test
if(isset($xhtml)){
        echo("<p>Det funkar fint att sätta id istället för name på input elementen</p>");
} else {
?>
<form action="test.phtml" method="post">
<div>
        <input type="text" id="xhtml" /> Skriv något!<br />
        <input type="submit" value="Submit!" />
</div>
</form>
</body>
</html>
<?php
}
?>

Har kollat lite vad min webserver (Apache 1.3.27, PHP 4.3.0) får från webläsaren (Mozilla 1.2 och IE 6) och det är inte mycket, verkar som om mozilla'n inte skickar med variablen om man använder id.

Medlem sedan juni 20014 290 inlägg
#7

Om man tittar på xhtml standarden så skall variabelns namn sättas via name.

HTML 4 defined the name attribute for the elements a, applet, form, frame, iframe, img, and map. HTML 4 also introduced the id attribute. Both of these attributes are designed to be used as fragment identifiers.
.
.
.
Note that in XHTML 1.0, the name attribute of these elements is formally deprecated, and will be removed in a subsequent version of XHTML.

Name är alltså deprecated för taggarna applet, form, frame, iframe, img och map.

Input tagen står inte med, det är name i form tagen som nu är deprecated och man skall använda id istället, det gäller alltså inte input taggen.

Medlem sedan okt. 2001538 inlägg
#8

Där ser man, då har jag lärt mig en hel del idag då =)
Jag får tacka för det visade intresset, och för att ni har tålamod med mig =)

MVH Patrik

Medlem sedan juli 20013 378 inlägg
#9

Peter S skrev:

2. Dina input-taggar måste ligga i exempelvis en <div>

Hmm...
Med det tillägget att det bara är i i xhtml 1.0 Strict som man måste ha t.ex. en <div> runt <input/>-taggarna i ett formulär...
Ur DTD:n:

<!ENTITY % form.content "(%block; | %misc;)*">

I xhtml 1.0 Transitional kan man fortfarande "köra utan" precis som i gammal hederlig html4 Transitional -
Ur DTD:n

<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">

Allt beror (som vanligt) alltså på vilken <!DOCTYPE man valt för sin sida ;)

Medlem sedan dec. 20025 483 inlägg
#10

Allt beror (som vanligt) alltså på vilken <!DOCTYPE man valt för sin sida

Ja, och han använder ju strict. Därav mitt svar.

men funkar det om man ska köra strict xhtml?

:)

Medlem sedan juli 20013 378 inlägg
#11

Sorry att jag var otydlig...
Klargörandet gällde alltså kombinationen:

När det gäller XHTML så...
...
2) Dina input-taggar måste ligga i exempelvis en <div>

Som jag fick för mig eventuellt kunde missuppfattas av någon som inte läser <!DOCTYPE så noga.

Ledsen om du uppfattade det som kritik av ditt svar... Det var inte så det var menat :bire

Medlem sedan dec. 20025 483 inlägg
#12

No offence taken :birp

:)

268 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)