ugrás a tartalomhoz

Súlyos gondok php include-olás közben

Laszlo14 · 2012. Feb. 16. (Cs), 14.29
Hali!

Van egy oldal (search.php) ahova külön formokat include-olok be a helyzetnek megfelelően. Vagyis érthetőben.
  1. //search.php//  
  2. <?php  
  3. //lekérdezem az átavett adatot//  
  4. $act=$_GET['act'];  
  5. //ha -nev- a kapott érték akkor a nev.php-t töltöm be//  
  6. if($act="nev"){  
  7.     include("search/nev.php");  
  8. }  
  9. //ha online akkor az online.php-t//  
  10. elseif($act="online"){  
  11.     include("search/online.php");  
  12. }  
  13.   
  14. ?>  
Viszont az a gondom, hogy ha <a href="search.php?act=online>Online</a>-ra kattintok akkor is a nev.php-t tölti be.
 
1

Mert az összehasonlításhoz ==

QXY · 2012. Feb. 16. (Cs), 14.52
Mert az összehasonlításhoz == kellene.

Tehát:
  1. if($act=="nev"){ ...  
  2.   
  3. elseif($act=="online"){ ...  
De szerintem inkább használj switch szerkezetet. Áttekinthetőbb és könnyebb módosítani/bővíteni.
4

Úhh, hát szerintem ennyire

Laszlo14 · 2012. Feb. 16. (Cs), 15.35
Úhh, hát szerintem ennyire még semmit nem néztem el :-D Köszi mind három választ
2

Az egyetlen egyenlőségjel az

Udi · 2012. Feb. 16. (Cs), 14.53
Az egyetlen egyenlőségjel az értékadás jele, a dupla (és tripla) egyenlőségjel az összehasonlításé.

Ez mindig le fog futni, mert nem ellenőrzi az $act változót, hanem értéket ad neki:
  1. if($act="nev"){    
  2.     include("search/nev.php");    
  3. }  
Ez már ellenőriz:
  1. if($act=="nev"){    
  2.     include("search/nev.php");    
  3. }  
Az egyszerű kommentet (//) pedig nem kell lezárni, az a sor végéig érvényes, csak a többsoros kommentet kell lezárni (/* */)
3

Hibás operátor

molnigee · 2012. Feb. 16. (Cs), 14.57
A feltételben nem egyenlőség vizsgálat történik hanem értékadás.
5

Tipp

gabesz666 · 2012. Feb. 16. (Cs), 16.51
Az ilyen hibák kiküszöbölésére szokták azt csinálni, hogy az összehasonlítandó értékeket felcserélik.
  1. ...  
  2. if("nev" == $act) {  
  3. }  
  4. ...  
Ha véletlenül csak egy egyenlőségjel kerülne a feltételbe, akkor szintaktikai hibával elszállna kód.
6

Yoda Conditions

MadBence · 2012. Feb. 16. (Cs), 17.21
Yoda Conditions +1
(szerencsére attól, hogy benne van a Yoda szó, még szabad try-catch szerkezetet használni :-) )
7

+1

Poetro · 2012. Feb. 16. (Cs), 17.32
8

-1

Hidvégi Gábor · 2012. Feb. 16. (Cs), 17.47
Szerintem a kód olvashatóságát rontja. Amikor elkezdesz programozni, elköveted egy-kétszer ezt a hibát, de utána rááll a szemed.
9

-1 +1, szerintem is rontja az

inf · 2012. Feb. 17. (P), 00.31
-1 +1, szerintem is rontja az olvashatóságot :D akkor most 0-n állunk? :D
10

Elsőre nekem is úgy tűnt. De

kuka · 2012. Feb. 17. (P), 11.42
Elsőre nekem is úgy tűnt. De a Java hasonló esete végül meggyőzött és azóta a Yoda kifejezésekre sem nézek görbén:
  1. if (nev.equals("kuka")) // olvasható  
  2.   
  3. if (nev!=null && nev.equals("kuka")) // null biztos  
  4.   
  5. if ("kuka".equals(nev)) // köztes megoldás