Slettet bruger
21. januar 2009 - 11:42
Der er
13 kommentarer og 2 løsninger
Tom query giver problem
Hej, Jeg sætter følgende ind i min php: $kursus_id=$_GET['kursus']; og kalder jeg min side med eks. "domæne.dk/side.php?kursus=112" virker det fint... "domæne.dk/side.php?kursus=" virker også fint. Problemet er, hvis jeg bare kalder (altså loader) siden UDEN variabel - altså: "domæne.dk/side.php" så melder den fejl: Notice: Undefined index: kursus Hvordan kommer man omkring det? Det hjælper ikke noget, hvis jeg indsætter eks.: $kursus_id=$_GET['kursus']; if ($kursus_id == "") { $kursus_id = "2009-01"; } SÅ - hvordan kalder man siden med en tom/uden variabel - uden den melder fejl?
Annonceindlæg tema
21. januar 2009 - 11:47
#1
if(isset($_GET['kursus'])){ $kursus_id=$_GET['kursus']; if ($kursus_id == "") { $kursus_id = "2009-01"; } }
21. januar 2009 - 11:47
#2
Bruger isset() $kursus_id = (isset($_GET['kursus']) ? intval($_GET['kursus']) : "2009-01);
21. januar 2009 - 11:48
#3
hov, jeg tror jeg misforstod... if(!empty($_GET['kursus'])){ $kursus_id = $_GET['kursus']; }else{ $kursus_id = "2009-01"; }
21. januar 2009 - 11:49
#4
det kunne man jo osse, men der mangler lige en " $kursus_id = (isset($_GET['kursus']) ? intval($_GET['kursus']) : "2009-01"); :)
21. januar 2009 - 11:50
#5
Og hov, det er vist ikke brugbart med intval() :O)
21. januar 2009 - 11:51
#6
eller, hvis kursus altid skal være et tal, så er det bedst at bruge intval()
Slettet bruger
21. januar 2009 - 13:55
#7
Jeg synes ikke rigtigt, det virker... der blev smidt lidt rigeligt ind i bunken synes jeg; isset, empty, intval :-D
Slettet bruger
21. januar 2009 - 14:01
#8
Jeg har nu sat flg. ind: if(isset($_GET['kursus'])){ $kursus_id=$_GET['kursus']; if ($kursus_id == "") { $kursus_id = "2009-01"; } } Kalder jeg siden UDEN variabel melder den: Notice: Undefined variable: kursus_id [...] on line 39 I linie 39 bruger jeg flg: (39 er første linie af nedenstående) if ($kursus_id != "") { echo "<b>Deltagere i kursus ".$kursus_id."</b><br><br>"; ... og en masse mere kode...
21. januar 2009 - 14:11
#9
isset() tjekker om en var er sat. intval() bruges til at "sikre" det er et tal man har med at gøre. empty() betyder "tom", men bruger den nu aldrig selv til at tjekke om en var er sat. Du kan evt. bruge: $kursus_id = "2009-01"; if(isset($_GET['kursus']) && trim($_GET['kursus']) != ""){ $kursus_id=$_GET['kursus']; } Men igen, så skal du aldrig stole på brugerinput, d.v.s. du skal sikre at vars ikke kan lave rod i din sql. trim() fjerner space og linieskift før og efter en var
Slettet bruger
21. januar 2009 - 14:13
#10
Ah... if(!empty($_GET['kursus'])){ $kursus_id = $_GET['kursus']; }else{ $kursus_id = "2009-01"; } Det virker fint!
Slettet bruger
21. januar 2009 - 14:34
#11
I er velkomne til at svare begge to - så kan I dele pointene. Tak for hjælpen!
21. januar 2009 - 15:02
#12
selv tak :)
21. januar 2009 - 19:12
#13
<ole> - men du begår stadig offentligt selvmord, hvis du ikke tjekker, at $_GET['kursus'] _kun_ indeholder præcist, hvad du forventer, før den bliver brugt mod databasen ;o) /mvh </bole>
21. januar 2009 - 20:17
#14
Et svar, og læs lige olebole's indlæg en gang til ..... )
25. januar 2009 - 19:47
#15
tak for point :)
Vi tilbyder markedets bedste kurser inden for webudvikling