Avatar billede atheist Nybegynder
18. juli 2004 - 11:58 Der er 11 kommentarer og
1 løsning

problemer med tomme variabler i php

Jeg har lidt problemer med at få mit php til at acceptere  variabler der ikke er definerede:

if ($_REQUEST["noget"]!=""){
}
Hvis $_REQUEST["noget"] er tom, kommer den med flg. fejl:
Notice: Undefined index: month in c:\documents and settings\gregers\dokumenter\internet\gregersboye\kalender.php on line 44

jeg ved det kan lade sig gøre da jeg inde på b-one sagtens kan lave tricket.
Hvis i kigger på hensholddsvis
http://gregersboye.dk/kalender.php <= Virker ok.
http://gregersboye.dk/kalender1.php <= kommer fra min server, virker ikke...

Jeg er klar over at det er et sted i min opsætning af php, den er gal... Nogen der ved hvor?
Avatar billede googolplex Novice
18. juli 2004 - 12:00 #1
if (isset($_REQUEST["noget"]) && $_REQUEST["noget"]!=""){
}
Avatar billede atheist Nybegynder
18. juli 2004 - 12:03 #2
Må indrømme jeg hellere vil ændre opsætningen så den matcher b-one. Bliver der ikke problemer med den sidste del af betingelsen?

$_REQUEST["noget"]

Er jo det samme som det jeg bruger, så den vil vel egentlig bare brokke sig igen?
Avatar billede googolplex Novice
18. juli 2004 - 12:04 #3
Nej, det brokker sig kun, fordi du ikke tjekker med isset(). Samme alle steder med E_ALL.
Avatar billede atheist Nybegynder
18. juli 2004 - 12:04 #4
ok, men hvordan kan det vær at b-one ikke brokker sig?
Avatar billede atheist Nybegynder
18. juli 2004 - 12:09 #5
hmm, jeg giver op, og bruger din løsning, men så bliver du lige nødt til at svare på et andet spørgsmål:
Hvad gør jeg de steder, hvor jeg bare skal bruge variablen, hvor det egentlig er ligegyldigt om der er noget i eller ej?

dvs. de steder jeg skriver
$min_ting = $_REQUEST["noget"];
?
Avatar billede detox Nybegynder
18. juli 2004 - 12:10 #6
Hvis du vil rette i din opsætning skal du sætte:

error_reporting = E_ALL & ~E_NOTICE

i din php.ini. Men notitser er faktisk meget rare at have med under udviklingen af scripts, så det vil jeg ikke anbefale. Så er det bedre at programmere korrekt istedet ;o)
Avatar billede tipsen Nybegynder
18. juli 2004 - 17:55 #7
Det er altid en god idé at initialisere dine input-variable i starten af dit script:

eks:

// Initaliser sprogvariabel - defaultsprog er dansk
$lang = (isset($_REQUEST['lang'])) ? $_REQUEST['lang'] : 'da_DK';
// Initialiser "noget" som evt. blot kan bruges tom senere hen i scriptet
$noget = (isset($_REQUEST['noget'])) ? $_REQUEST['noget'] : '';
// Initialiser "noget2" som kun skal bruges, hvis den er sat
$noget2 = (isset($_REQUEST['noget2'])) ? $_REQUEST['noget'] : null;

echo $lang; // udskriver altid uden problemer
echo $noget; // udskriver altid uden problemer - evt udskrives ingenting!
echo $noget2; // kan give problemer med notice, hvis ej defineret ('=null')
Avatar billede atheist Nybegynder
18. juli 2004 - 18:23 #8
Vil det sige hvis jeg laver:

$noget = (isset($_REQUEST['noget'])) ? $_REQUEST['noget'] : '';
$noget = $_REQUEST["tingen"];

if ($noget==""){
echo "\$noget er en tom variabel..."
}
Så vil den ikke brokke sig?
Avatar billede tipsen Nybegynder
18. juli 2004 - 21:37 #9
Den vil brokke sig, hvis $_REQUEST["tingen"] ikke er defineret... - men hvis du holder den linie væk, vil det fungere fint!
Avatar billede atheist Nybegynder
18. juli 2004 - 21:38 #10
Det underlige er nemlig bare at på b-ones servere brokker den sig ikke, men hvis jeg glemmer en ; efter en linje eller andet, SÅ skal i bare høre den kæfte op...
Avatar billede atheist Nybegynder
04. december 2005 - 23:51 #11
undskylder den lange respons-tid, har rettet min side til, så isset() bliver brugt :D

Nu har b-one tilgengæld fjernet error-reporting - og kors hvor savner jeg det...
Avatar billede tipsen Nybegynder
05. december 2005 - 01:24 #12
Du kan selv styre, hvilket niveau fejl skal rapporteres på i dit php-script:

http://dk2.php.net/manual/en/function.error-reporting.php

Mvh Tommy
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester