webForumDet fria alternativet

$_GET undefined index

PHP

4 svar · 218 visningar · startad av mhedda

Medlem sedan feb. 2000385 inlägg
Frågan#1

Hejsan jag blir tokig på detta det är sökert något simpelt men vad är det för fel??
Jag får detta felmeddelande som så många gånger förr.
Jag kollar ju om den är satt och inte är tom line 23 är

			if( isset( $_GET[ 'filter' ] ) || $_GET[ 'filter' ] != '' ){
					$filter=$_GET[ 'filter' ];		
				
					if($filter=="com"){

-------------------------------------------------------------------------

Notice: Undefined index: filter in C:\Inetpub\testet\admin_test_1.php on line 23

--------------------------------------------------------------------------


MVH
			if( isset( $_GET[ 'filter' ] ) || $_GET[ 'filter' ] != '' ){
					$filter=$_GET[ 'filter' ];		
				
					if($filter=="com"){
					$checkUserSQL = "SELECT* from tbl_preview WHERE stat='2' AND commerce='1'";
					$userRow = odbc_do($conn, $checkUserSQL);
					}
					elseif($filter=="nocom"){
					$checkUserSQL = "SELECT* from tbl_preview WHERE stat='2' AND commerce='0'";
					$userRow = odbc_do($conn, $checkUserSQL);
					}
					elseif($filter=="all"){
					$checkUserSQL = "SELECT* from tbl_preview WHERE stat='2'";
					$userRow = odbc_do($conn, $checkUserSQL);
					}
			}
			else{
			$checkUserSQL = "SELECT* from tbl_preview WHERE stat='2'";
			$userRow = odbc_do($conn, $checkUserSQL);
			}
Medlem sedan mars 20007 896 inlägg
#2
if( isset( $_GET[ 'filter' ] ) || $_GET[ 'filter' ] != '' ){

Testa att byta mot:

if( isset( $_GET[ 'filter' ] ) && $_GET[ 'filter' ] != '' ){
Medlem sedan feb. 2000385 inlägg
#3

Tack SPiN för det supersnabba svaret,
som dessutom funkar klockrent.
Super bra forum det här.

MedMycketVänligaHälsningar

Medlem sedan okt. 20023 030 inlägg
#4

<hint> Acceptera gärna svaret som slutgiltigt svar. :) </hint>

Medlem sedan mars 20007 896 inlägg
#5

NP. :)

Jag kanske ska förklara varför det fungerar också... Och inte bara lägga in en liten kodbit.

Saken är att om du använder || ( Eller ) så räcker det ju med att ett av uttrycken är sant för att komma in i if-blocket. Det gör, att om isset()-uttrycken blir falskt - så "känner inte PHP av" att kontrollen är gjord utan försöker evaluera nästa uttryck också. Eftersom att då index:et inte finns ( isset() koms inte ihåg ) får du din notis. Använder du däremot && ( Och ) och första uttrycket blir falskt, så körs aldrig det andra uttrycket eftersom att hela if-uttrycket ( Både isset() och != "" ) aldrig kan bli sant. Alltså klarar man sig då ifrån sin notis. Hade du däremot vänt på dem:

if( $var != "" && isset( $var ) )

Då hade du fått en notis ändå, eftersom att isset() körs som andra uttryck.

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