webForumDet fria alternativet

Vad är fel?!!

PHP

19 svar · 636 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Frågan#1

Jag får felmeddelande när jag klickar på Tom eller när sidan laddas! Varför?

Warning: Undefined variable: visa in c:\inetpub\wwwroot\php\hmm.php on line 2

Warning: Undefined variable: visa in c:\inetpub\wwwroot\php\hmm.php on line 4

<? 
if ($visa == "ja") { 
   $text = "JA"; 
} elseif ($visa == "nej") { 
   $text = "NEJ"; 
} else { 
  $text = "Tom"; 
} 
?>  
 
<a href="hmm.php?visa=ja">Ja</a> - 
<a href="hmm.php?visa=nej">Nej</a> - 
<a href="hmm.php">Tom</a>  
<br>  
<?=$text?>
Medlem sedan mars 2000263 inlägg
#2

lägg till detta överst:
$visa = $_GET["visa"] ;

Medlem sedan dec. 20011 860 inlägg
#3

Okej - nu blir det fel på den raden jag la in!

Warning: Undefined index: visa in c:\inetpub\wwwroot\php\hmm.php on line 2

Medlem sedan jan. 2002414 inlägg
#4

går du in på sidan "http://www.domän.se/mapp/index.php" så måste du efteråt skriva "?visa=ja"

Medlem sedan dec. 20011 860 inlägg
#5

Varför? Med asp funkar det ju bra ju! Ska ju bara vara hmm.php först ju! Går det ej menar du?

Medlem sedan juli 200214 inlägg
#6

Jag la till lite html innan och efter så att det till slut såg ut såhär:

<html>
<head></head>
<body>
<?
if ($visa == "ja") {
   $text = "JA";
   } elseif ($visa == "nej") {
    $text = "NEJ";
    } else {
    $text = "Tom";
    }
?>

<a href="hmm.php?visa=ja">Ja</a> -
<a href="hmm.php?visa=nej">Nej</a> -
<a href="hmm.php">Tom</a>
<br>
<?=$text?>

</body>
</html>

Och allt fungerar bra för mig...

(kör php 4.1.2 på Mandrake 8.2)

Medlem sedan dec. 20011 860 inlägg
#7

Så här har jag ju i asp:

<%If Request.QueryString("kat") = "" Then%>
Tom
<%ElseIf Request.QueryString("kat") = "3" Then%>
1
<%ElseIf Request.QueryString("kat") = "2" Then%>
2
<%End If%>

Medlem sedan dec. 20011 860 inlägg
#8

Mandrake?? Jag har PHP 4.2.1 och kör med Win XP!

Medlem sedan juli 200214 inlägg
#9

Mandrake är en linuxdistribution men jag har svårt att förstå att det skulle spela någon större roll.

Hos mig fungerar det i alla fall, se http://www.odenholm.nu/download/hmm.php

Medlem sedan dec. 20011 860 inlägg
#10

Hmm - undra vad felet e då? Men dåvet jag iallafall att koden funkar! Tackar :)

Kan det vara nån fil som inte blivit rätt installerad eller nån fil som fattas på min data?

Medlem sedan aug. 20002 975 inlägg
#11

Som jag kan se så är det inget fel på din PHP-installation. Skriptet uppför sig precis som det ska. Vad du får är en varning om att din variabel inte är definierad eller initierad. Vad du kan göra är att kolla först om den finns:

<? 
if (isset($_GET['visa'])){
  if ($_GET['visa'] == "ja") { 
    $text = "JA"; 
  } elseif ($_GET['visa'] == "nej") { 
    $text = "NEJ"; 
  } else { 
    $text = "Något annat"; 
  } 
} else $text = "Tom"; 
?>  
 
<a href="hmm.php?visa=ja">Ja</a> - 
<a href="hmm.php?visa=nej">Nej</a> - 
<a href="hmm.php">Tom</a>  
<br>  
<?=$text?>

Skulle du ha register_globals=On i din php.ini så går det bra att byta ut $_GET['visa'] mot $visa, men det är av säkerhetsskäl inte något som rekommenderas.

Medlem sedan dec. 20011 860 inlägg
#12

Men det funkar ju när jag skickar upp det på min webhotell (Loopia)!

Medlem sedan sep. 20014 781 inlägg
#13

Hehe, så det funkar inte på din dator? :)

Medlem sedan dec. 20011 860 inlägg
#14

Den är på On och om jag sätter den på Off så funkar ej php för mig! Men allt funkar när jag använder koden du skrev! Har jag som jag skrev så blir det felmeddelanden!

Det jobbiga är att jag jämt får fel på andra phpscript som är rätt ju! Lite jobbigt!

Lite jobbigt med alla såna här felmeddelanden:

Notice: Undefined variable: NAM in FILEN.php on line XX

Medlem sedan dec. 20011 860 inlägg
#15

Hur skriver jag för att få det så här ungefär? Så man kan lägga texten mellan ifsatserna! Jag har ju så nu med asp!

<?if ($visa == "ja") { ?>
Ja
<?if ($visa == "nej") { ?>
Nej
<?else?>
Annat

Medlem sedan aug. 20002 975 inlägg
#16

PHP godkänner en odefinierad variabel men är inte riktigt glad över det och sänder därför ut en notis om det, som ett litet tips om att man bör justera sitt skript lite.
Dessa notiser går att ta bort med en inställning i php.ini. I äldre php-versioner så var grundinställningen att inte visa notiser så det är därför du hittar en massa skript på nätet som ger dessa varningar.
För att skriva om din kod, skulle du kunna göra såhär:

<? if (isset ($visa) && $visa == "ja") { ?> 
Ja 
<? } elseif (isset ($visa) && $visa == "nej") { ?> 
Nej 
<? } else { ?> 
Annat
<? } ?>

Att ändra i php.ini är inget jag rekommenderar på en utvecklingsdator, bättre att lära sig skriva "korrekt" kod. För det mesta handlar det om att lägga ett if(isset($variabel)) före. Annars ta en titt på error_reporting i php.ini. Tror för att få bort notiserna, ska du skriva error_reporting = E_ALL & ~E_NOTICE (tror jag). Har det själv inställt på E_ALL för att fånga upp alla "felmeddelanden".

Medlem sedan dec. 20011 860 inlägg
#17

Tackar för det! Hjälpte inte att ändra i php.ini filen men jag ¨får väl lära mig skriva "korrekt" kod då!

Men koden du skrev i inlägget ovan funkar fint!

Medlem sedan aug. 20002 975 inlägg
#18

Jag tycker det är bäst att satsa på "korrekt" kod. :)

När jag gjorde min senaste uppdatering av PHP så fick jag som grundinställning att inte visa notiser. Detta ändrade jag i php.ini, eftersom jag vill ha alla "felmeddelanden" (alltså på andra hållet). Jag har för mig att det före ändring stod som jag beskrev ovan, men jag minns visst fel.
Annars, om du kör PHP som modul så måste man starta om webservern för att de nya inställningarna i php.ini skall gälla.

Medlem sedan dec. 20011 860 inlägg
#19

Okej - ska kolla om det funkar!

Medlem sedan dec. 20011 860 inlägg
#20

Funkar hur bra som helts nu! Tackar för all hjälp!

261 ms totalt · 4 externa anrop · v20260731065814-full.868a69e5
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)