ju Ierakstīts Janvāris 9, 2013 Share Ierakstīts Janvāris 9, 2013 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 More sharing options...
HTC Janvāris 9, 2013 Share Janvāris 9, 2013 (labots) 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 Janvāris 9, 2013 - HTC Link to comment Share on other sites More sharing options...
Dword Janvāris 9, 2013 Share Janvāris 9, 2013 1) Izmanto šajā gadījumā labāk "switch case" 2) Rakstīšanas stils nav tev labākais. 3) http://designreviver.com/tips/10-tips-for-writing-better-php-code/ Link to comment Share on other sites More sharing options...
ju Janvāris 9, 2013 Author Share Janvāris 9, 2013 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 More sharing options...
HTC Janvāris 9, 2013 Share Janvāris 9, 2013 (labots) 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 Janvāris 9, 2013 - HTC Link to comment Share on other sites More sharing options...
ju Janvāris 9, 2013 Author Share Janvāris 9, 2013 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 More sharing options...
superKrona Janvāris 9, 2013 Share Janvāris 9, 2013 (labots) 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 Janvāris 9, 2013 - superKrona Link to comment Share on other sites More sharing options...
Леший Janvāris 9, 2013 Share Janvāris 9, 2013 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 More sharing options...
ju Janvāris 9, 2013 Author Share Janvāris 9, 2013 Paldies par norādēm. Link to comment Share on other sites More sharing options...
Recommended Posts
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 kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!