Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zepsuty warunek? pewnie to ja... :P
Forum PHP.pl > Forum > Przedszkole
goped
Hello, zaczne od kodu tongue.gif
  1. <?
  2. $name=explode(".", $id); // kasowanie linijki z menu
  3. $menu="../base/menu.txt";
  4. $plik=file($menu);
  5. $count=count($plik);
  6. $a="0";
  7. while($a<=$count)
  8. {
  9. $dane=explode("||", $plik[$a]);
  10.  
  11. if($name[0]==$dane[1]) <----- ten warunek
  12. {
  13. echo"warunek dziala"; // koniec kasowania linijki z menu
  14. }
  15. $a++;
  16. }
  17. ?>

$id to cos.php
plik menu.txt wyglada tak COS||cos

No i co tu duzo mowic, warunek nigdy nie przechodzi. Moze macie jakies pomysly?tongue.gif Z gory thx tongue.gif
acztery
rozumiem ze chcesz sprawdzic czy cos jest identyczne wtedy === a nie ==
goped
=== sprawdza czy typ jest ten sam, == rowniez moze byc. Jezeli nie dziala z == to z === tez nie bedzie, zreszta, sprawdzalem tongue.gif
NuLL
  1. <?
  2. $name=explode(".", $id); // kasowanie linijki z menu
  3. $menu="../base/menu.txt";
  4. $_file=file($menu);
  5. foreach($_file as $line)
  6. {
  7. $data=explode("||",$line);
  8.  
  9. if($data[0]!=$name) $ret[]=$line;
  10. }
  11. ?>

Oczywiscie zgaduje ale w tablicy $ret powinien byc plik bez danej linii smile.gif
goped
A moze jednak ktos wymysli dlaczego nie dziala moj warunek?tongue.gif
NuLL
Nie powinno byc $dane[0] questionmark.gif Pozatym powinno być $a=0; zamiast $a="0";
goped
dane[1], bo chce tekst po prawej stronie COS||cos, a z tym $a to tez nie dziala tongue.gif fajne, co nie?tongue.gif
raf_gc
  1. <?php
  2. $id = "cos.php";
  3. $name=explode(".", $id); // kasowanie linijki z menu
  4. $menu="menu.txt";
  5. $plik=file($menu);
  6. $count=count($plik);
  7. $a="0";
  8. while($a<=$count)
  9. {
  10. $dane=explode("||", $plik[$a]);
  11.  
  12. if($name[0]==$dane[1]) //<----- ten warunek
  13. {
  14. echo"warunek dziala"; // koniec kasowania linijki z menu
  15. }
  16. $a++;
  17. }
  18. ?>

sprawadziłem twój skrypt i działa dobrze, w jaki sposób deklarujesz zmienną $id, jeśli $id jest puste to warunek nie bedzie spełniony nigdy, czy scieżka do pliku menu.txt jest prawidłowa?

Zrób tak jak ja w tym skrypcie, zdefiniuj na początku zmienną $id i sprawdź, czy dalej nie działa, przenieś plik menu.txt do katalogu ze skryptem (dla testów).

Jesli pobierasz zmienną $id z parametrów wywołania skryptu (np: index.php?id=cos.php) to musisz użyć:
  1. <?php
  2. $id = $_GET['id'];
  3. ?>
goped
To teraz juz wiem co sie stalo i wam powiem :] normalnie padniecie <lol2> angrysmiley.gif angrysmiley.gif angrysmiley.gif ale najpierw:
  1. <?php
  2. $id = "h.php";
  3. $name=explode(".", $id); // kasowanie linijki z menu
  4. $menu="menu.txt";
  5. $plik=file($menu);
  6. $count=count($plik);
  7. $a="0";
  8. while($a<=$count)
  9. {
  10. $dane=explode("||", $plik[$a]);
  11. echo $dane[1].$name[0];
  12. if($name[0]==$dane[1]) //<----- ten warunek
  13. {
  14. echo"warunek dziala"; // koniec kasowania linijki z menu
  15. }
  16. $a++;
  17. }
  18. ?>

Menu.txt:
  1. A||a
  2. B||b
  3. C||c
  4. H||h
  5. D||d

Wynik dzialania:
  1. a
  2. hb
  3. hc
  4. hh
  5. hdhh

Kto wymysli dlaczego na koncu mam te 2 hh to ma 6 za odpowiedz. Jedno h ma prawo byc, ale drugie nie wiem skad sie bierze.
A teraz powiem wam czemu to nie dzialalo, bo komus moze tez kiedys cos takiego walnac. Plik Menu.txt wyglada tak:
A||a
B||b
C||c
H||h
D||d
php exploduje to przez znaczniki || i teraz tak, po lewej mamy A, ale poprawej nie jest "a", tam jest kurcze "a\n"(akurat u mnie jest \r\n), tyle ze \n jest niewidoczne. By to szlag trafil tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.