Jump to content

PHP if else ar ifset


ju
 Share

Recommended Posts

1. Mācos PHP, iet. 4. diena naučnovo tika režīmā

2. Taisu "dinamisku" include

kods šāds

<?php
$pass = array('lapa1','lapa2','lapa3','lapa4'); 
  if (in_array($_GET['idl'], $pass)) { 
     include ($_SERVER['DOCUMENT_ROOT'] . '/zinojums/' . $_GET['idl'] . '.php');
    } 
    else  
    { 
     include ($_SERVER['DOCUMENT_ROOT'] . '/zinojums/lapa1.php'); 
    } 
?>

Pie pirmreizējās lapas ielādes man izmet Notice:Undefined index: idl in , kas savā ziņā ir loģiski. Tā gan viss strādā OK.

Lai dabūt nost to Notice: , pieliku isset  iekš if (in_array(isset($_GET['idl']), $pass)) , tad Notice vairs nerāda, izvlene strādā OK, bet nestrādā else daāl, jo ievadot manuāli kau tkādu ?idl=lapaNEPAREIZA , atgriež paziņojumu, ka viņš šādu lapu neatrod, kas man galīgi neder, jo varēs kaut ko ne to includot. Man vajag, lai aiziet uz else daļu, kā tas ir bez tā isset .

 

Vēl pēc savas saprašana mēģināju sākumā jau pielikt piem. $idl="lapa1" bez isset, lai pēc manas saprašanas būt nodefinēts.

Nu tā kaut kā. Kā man panākt, lai nebūtu tas Notice, un strādātu else daļa.

Link to comment
Share on other sites

if(!isset($_GET['idl'])) $_GET['idl']="lapa1";
$pass = array('lapa1','lapa2','lapa3','lapa4'); 
if (in_array($_GET['idl'], $pass)) { 
   echo "ir id: ".$_GET['idl'];
} else { 
   echo "nav id";
}
 

 

tā gribēji?

Labots - HTC
Link to comment
Share on other sites

1) kāda man garantija, ka man tas Notice tur nebūs, par nedefinētu indexu? Tāpat, gribētu tomēr saprast, kāpēc tā isset pielikšana "pazaudē" else daļu? Vai tas isset man kaut kā automātiski pieliek jauno vērtību tam array klāt?

2) es jau saku, man tik 4. diena iet



if(!isset($_GET['idl'])) $_GET['idl']="lapa1";

 

PAlDIES! šī ir tā rindiņa, kas man pietrūka

paziņojumus man tur nevajag, man vajadzēja, lai pie nepreica idl iet uz galveno lapu.

Link to comment
Share on other sites

vienkāršiem vārdiem:

notices uz nedefinētiem variabļiem parādījās sākot (ja nemaldos) ar 5 php versiju kā rezultātā ja izmanto gatavus vecos skriptus/klases, pastāv iespēja, ka metīs šos brīdinājumus, ja kas tad notici var atslēgt ar

error_reporting(E_ALL ^ E_NOTICE); 

 

Principā, jebkuru variabli ir nepieciešams nodefinēt

Labots - HTC
Link to comment
Share on other sites

Cik es tā saprotu, tas isset kaut kā pasaka, ka tā vērtība ir jebkurā gadījumā, un nemaz tajā array īsti neskatās, t.i. laikam tomēr kaut ko īsti nesaprotu :) un it kā visu saprotu, bet kāpēc tas isset nojauc to loģiku, it kā pieņemot, ka vērtība ir iekš array.

OK, turpinu mācīties.

Link to comment
Share on other sites

superKrona

Izlasi latviski rindiņu: if (in_array(isset($_GET['idl']), $pass)) 

un pats atbildēsi uz savu jautājumu, vai ir kaut kur kodā norādīts, ko darīt gadījumā, ja mainīgais nav definēts

Laikam jau biji gribējis lietot !isset

Labots - superKrona
Link to comment
Share on other sites

Леший

Jautrs topiks, pēc tam cilvēki brīnās, kāpēc PHP ir slikts.

 

1)

 

if(!isset($_GET['idl'])) $_GET['idl']="lapa1";

 

Kaut tavs ieteikums arī ir pareizs, bet tomēr nevajag mācīt "nepareizo" sintaksi. Figuriekavas jāliek. 

 

2)

 

Izlasi latviski rindiņu: if (in_array(isset($_GET['idl']), $pass))  un pats atbildēsi uz savu jautājumu

 

Diez vai, izlasot latviski, cilvēks ar minimālām zināšanām sapratīs, kas tur notiek.
isset() vienmēr atgriež boolean vērtību, šajā gadījumā false, ja getā mainīgais nav, un true, ja ir. Attiecīgi, kad tu meklē masīvā elementu ar indeksiem true vai false, tev tiek atgriezti elementi ar indeksiem attiecīgi 1 vai 0.

Ar in_array nedaudz savādāk. in_array taisa beztipa salīdzinājumu ar masīva elementiem. Un jebkura netukša rinda ir vienāda ar true. Līdz ar to, tā ka masīvā $pass elementi ir rindas, in_array atgriezīs true, kad atradīs netukšo rindu.

 

Ieteikums autoram: pamācies nevis PHP, bet par datu tipiem, kā arī, kā notiek salīdzinājumi weak typing valodās.

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...