webForumDet fria alternativet

Visa inmatning i ett formulär

PHPur PHP

10 svar · 462 visningar · startad av PixelFix

Medlem sedan juni 200045 inlägg
Frågan#1

Hej.
Försöker lära mig php. Har skaffat mig boken "Webbprogrammering med PHP" skriven av Viktor Jonsson. Nu har jag kört fast. Jag har skrivit följande kod:

<html>
<head>
<title>Exempel 004</title>
</head>
<body>

<form>
Namn: <input type=text size=10 name=namn><br>
Favoritfärg: <input type=text size=10 name=farg><br><br>
<input type=submit value=Skicka>
</form>

<?php
echo "Du heter $namn ";
echo "och din favoritfärg är $farg";?>

</body>
</html>

Formuläret visas i webbläsaren men jag får ett felmeddelande om att variablerna är odefinierade.
Vad kan jag ha gjort för fel?

Medlem sedan okt. 2001253 inlägg
#2

det är en inställning i php.ini tror jag. Jag hjälpte min kompis genom att skicka min php.ini fil till honom och då försvann felmeddelandet. Leta lite i php.ini men ändra inget om du inte är säker på vad det är!!

Medlem sedan sep. 2001788 inlägg
#3

Du har antagligen de globala variablerna satta till 'Off' i din php.ini fil (de är default satta till det).

För att komma åt variabler som du skickar via formulär måste du använda:
$_GET['variabelnamn'] (om du använder method="get") eller
$_POST['variablenamn'] (om du använder method="post") eller
$_REQUEST['variabelnamn'] (som du kan använda i vilket fall)

Alltså i ditt fall

echo "Du heter ".$_GET['namn']." ";
echo "och din favoritfärg är ".$_GET['farg'];

/G :)

Medlem sedan nov. 200013 890 inlägg
#4

Det här kan funka:
• Leta reda på php.ini-filen
• Leta upp raden: display_errors = On
• Ändra den till Off. ;)

Medlem sedan aug. 20002 975 inlägg
#5

Web-Tor skrev:

Det här kan funka:
• Leta reda på php.ini-filen
• Leta upp raden: display_errors = On
• Ändra den till Off. ;)

Nu vill jag protestera lite. Så där kan man göra om sidan ligger ute på en webserver, men i utvecklingsläge är det mycket lämpligare att skriva sin kod så det inte blir några notiser/varningar/felmeddelanden.

När man använder en variabel utan att den är definierad så sätter PHP den till 0 (noll) om det är ett tal eller "" (tom sträng) om det är en sträng. Samtidigt skickas en notis/varning ut om att det är lämpligt att definiera sin variabel innan man använder den. Mitt råd är att följa vad PHP säger.
Vill du kolla en variabel som kommer från ett formulär eller url så titta på vad GrodanBoll skrev annars kan man göra så här:

if (isset($namn)) echo "Du heter $namn ";

eller

if (!isset($namn)) $namn = "";
echo "Du heter $namn ";
Medlem sedan nov. 200013 890 inlägg
#6

När man använder en variabel utan att den är definierad så sätter PHP den till 0 (noll) om det är ett tal eller "" (tom sträng)

En liten fråga bara:
Hur kan PHP veta om variabeln är ett tal eller en sträng om den inte är definierad eller tilldelad ett värde?

Medlem sedan aug. 20002 975 inlägg
#7

Hur kan PHP veta om variabeln är ett tal eller en sträng om den inte är definierad eller tilldelad ett värde?

Vad PHP har för sig rent tekniskt har jag ingen aning om, men när variabeltypen framgår av koden så klarar PHP tydligen av det.
T.ex:

<?php
$tal = 11;
if ($tal = $odef_var){
// gör något
}
// eller
$tal2 = $tal + $odef_var;
// så sätts $odef_var till 0.
?>

Men för att återgå till vad jag skrev tidigare, så tycker jag att man ska undvika att sätta PHP i detta bryderi :)

Medlem sedan nov. 200013 890 inlägg
#8
<?php
$tal = 11;
if ($tal = $odef_var){
// gör något
}
// eller
$tal2 = $tal + $odef_var;
// så sätts $odef_var till 0.

echo "odef_var =". $odef_var;

?>

Hos mig så sätts inte $odef_var till 0 :q

Medlem sedan aug. 20002 975 inlägg
#9

Klumpigt uttryckt av mig. Temporärt i satsen sätts den till, eller rättare sagt används den som 0 (noll). Eftersom den fortfarande inte är definierad så finns variabeln inte, och allt börjar om igen nästa gång den dyker upp. Om det rent tekniskt är på det sättet vet jag inte, men så funkar det praktiskt. Är, som du kanske förstår, ute på litet djupt vatten här, eftersom jag aldrig använder odefinierade variabler.

Sedan upptäckte jag en viss brist på likhetstecken i min if-sats. Ska naturligtvis vara:

if ($tal == $odef_var){
Medlem sedan feb. 20002 612 inlägg
#10

Men....om man har en sträng som man inte har definierat så borde den väl bli NULL...eller??

Medlem sedan juni 200045 inlägg
#11

Tack för alla svar.
Testade det som Grodan Boll skrev. Funkade.
Nu kan jag gå vidare i boken.
:birp

135 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)