Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Maly problem z funkcja if
Forum PHP.pl > Forum > PHP
krystas
Witam...
mam maly problem... jesli chodzi o php to jestem prawie zielony... : - ) mam maly skrypt w ktorym mam uzyty 2 razy warunek if... jeden w drugim zagniezdzony... chcialbym uzyc else ale niestety mam problem bo wykonuje mi to 2 razy... wiec jak teraz zrobic zeby ta funkcja else dotyczyla tylko tego drugiego warunku. oto kod:

  1. <?php
  2.  
  3. if($szukane==""){
  4. $szukane="xyz";}
  5. $baza = file("baza.txt");
  6.  
  7. for ($index=0; $index < count($baza); $index++)
  8. {
  9. $grupa = split("|", chop($baza[$index])); 
  10. $count="0";
  11.  
  12.  
  13.  if (eregi("$szukane", $baza[$index])) {
  14. $count++;
  15. echo "&raquo; <a href=\"$grupa[0]\">$grupa[1]</a><br /><br />";
  16.  
  17. }
  18.  
  19. }
  20.  
  21. ?>


Z gory dziekuje za pomoc... ; - )
Pozdrawiam...
MacPain
Wykonuje dwa razy ponieważ masz użyta iteracje for, a else możesz użyć tak:
  1. <?php
  2. if(warunek)
  3. {
  4. if(warunek2)
  5. {
  6. kod do wykonania ....
  7. }
  8. else
  9.  {
  10. kod do wykonania ....
  11. }
  12. }
  13. ?>
krystas
Ehh... Probowalem cos z tym zrobic ale chyba jestem kompletnym analfabeta jesli chodzi o php... ;-) moglby ktos dla mnie to tak przeksztalcic? Bylbym naprawde bardzo wdzieczny...

Dziekuje i pozdrawiam...
kossa
Twoja wypowiedź jest strasznie niezrozumiała...

  1. <?php
  2. if($szukane=="")
  3. {
  4.  $szukane="xyz";
  5. }
  6.  
  7. $baza = file("baza.txt");
  8.  
  9. for ($index=0; $index < count($baza); $index++)
  10. {
  11.  $grupa = split("|", chop($baza[$index]));
  12.  $count="0";
  13.  
  14. if (eregi("$szukane", $baza[$index])) 
  15.  {
  16.  $count++;
  17.  echo "&raquo; <a href=\"$grupa[0]\">$grupa[1]</a><br /><br />";
  18. }
  19. else
  20. {
  21. //kod do drugiego warunku w else...
  22. }
  23. }
  24. ?>


Twoje instrukcje warunkowe nie są zagnieżdżone, pierwszy if jest na samym początku i nie zawiera drugiego

Cytat
if($szukane=="")
{
$szukane="xyz";
}


Łukasz
krystas
Przepraszam, ze tak mecze ale jak juz mowilem jestem calkowitym beztalenciem.

tym razem otrzymalem takie cos:
Warning: split() [function.split]: REG_EMPTY in /home/marcino/www/szukaj.txt on line 14
Okolo 30 razy...

Ehh... co teraz? ;-)
Hazel
Spróbuj tak, bo kossa pominął to w swoich rozważaniach:
  1. <?php
  2. $grupa = split("|", chop($baza[$index]));
  3. ?>

Chodzi mi o backslash, który był w Twoim kodzie, a nie był w kodzie kossa.
krystas
Hmm... Myslalem, ze to juz bedzie koniec problemow ale widze, ze nie bardzo... tongue.gif

Mam taki kod:
  1. <?php
  2. if($szukane=="")
  3. {
  4.  $szukane="xyz";
  5. }
  6.  
  7. $baza = file("baza.txt");
  8.  
  9. for ($index=0; $index < count($baza); $index++)
  10. {
  11.  $grupa = split("|", chop($baza[$index]));
  12.  $count="0";
  13.  
  14. if (eregi("$szukane", $baza[$index])) 
  15.  {
  16.  $count++;
  17.  echo "&raquo; <a href=\"$grupa[0]\">$grupa[1]</a><br /><br />";
  18. }
  19. else
  20. {
  21. echo "nie znaleziono";
  22. }
  23. }
  24. ?>


No... a wynik dostalem taki:

nie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziononie znaleziono

Wie ktos co moge na to poradzic? ;-)
Hazel
Zamień wiersz 21 na następujący:
  1. <?php
  2. echo 'nie znaleziono<br>';
  3. ?>

Oczywiście, jeśli chodzi Ci o format wyplutych danych. Bo nie zrozumiałem do końca, w czym problem.

A jeśli chodzi Ci o to, że funkcja zwraca ciąg "nie znaleziono" wiele razy zamiast raz, to wiersz 21 zamień na:
  1. <?php
  2. die('nie znaleziono');
  3. ?>
krystas
Hehe... jestesmy blizej ale to nadal nie to biggrin.gif
chodzi o to, ze jesli dam die a ten skrypt mam na swojej stronie gdzies w srodku walniety w include to obicna mi cala reszte wiec nadal mnie to nei zadowala... ;-) Co trzeba by zrobic zeby wyswietlilo mi to tylko jeden raz?

Dziekuje i pozdrawiam...
Hazel
  1. <?php
  2. echo 'nie znaleziono';
  3. break;
  4. ?>
krystas
Ehh... A myslalem, ze juz sie udalo... tongue.gif pieknie dziala... jak wpisze coś co nie istnieje w bazie... Zreszta... Cokolwiek nie wpisze to teraz zawsze pojawia mi sie, ze nie znaleziono... ;p chyba dam juz sobie z tym spokoj... Dziekuje wszystkim serdecznie za pomoc ^^ Pozdrawiam...
Hazel
Dawaj kod, mów, co nie działa, a nie rezygnuj...
Btw, w temacie: if nie jest funkcją, a instrukcją tongue.gif Takie małe pouczenie tongue.gif

A jeśli chodzi o Twój problem, to zamiast pliku jednorodnego zastosowałbym bazę danych typu MySQL i to rozwiązałoby problemy z wyszukiwaniem.
krystas
Mowilem, ze sie nei znam! biggrin.gif

Powiedzmy, ze zrobie tak:

  1. <?php
  2. if($szukane=="")
  3. {
  4.  $szukane="xyz";
  5. }
  6.  
  7. $baza = file("baza.txt");
  8.  
  9. for ($index=0; $index < count($baza); $index++)
  10. {
  11.  $grupa = split("|", chop($baza[$index]));
  12.  $count="0";
  13.  
  14. if (eregi("$szukane", $baza[$index])) 
  15.  {
  16.  $count++;
  17.  echo "&raquo; <a href=\"$grupa[0]\">$grupa[1]</a><br /><br />";
  18. }
  19. else
  20. {
  21. echo 'nie znaleziono';
  22. break;
  23. }
  24. }
  25. ?>


Ale wlasnie wtedy nawet jak wpisze dobre slowo, ktore wczesniej dodalem do bazy i tak mi nie znajduje tylko wyswietla 'nie znaleziono'...
Hazel
Hmmm...
A jaką postać ma mieć plik baza.txt, według Ciebie?
Bo jak wpiszesz tam na przykład ciąg "słowo", to powinno się wyświetlić tylko &raquo;.
Ale jeśli wpiszesz słowo|słowo, to wtedy się wyświetli coś innego...
Napisz, co ma robić ten skrypt i o co w nim chodzi.
krystas
Tak... baza jest zbudowana dokladnie tak jak mowisz... To ma byc wyszukiwarka... Wlasciwie wszystko dziala... Poza tym, ze jesli nie znajdzie pozycji to nie wyswietla nic... Chodzi mi o to zeby w takim przypadku wyswietlalo mi 'nie znaleziono' albo cos w tym stylu...
Hazel
Jeśli baza jest pusta, to wynikiem powinna być pusta strona bez żadnego komunikatu.
Jeśli w bazie jest jakikolwiek znak, to powinien wyświetlać się komunikat "nie znaleziono".
Czy nie działa w ten sposób?
krystas
Jesli mam taki kod:

  1. <?php
  2.  
  3. if($szukane==""){
  4. $szukane="xyz";}
  5. $baza = file("baza.txt");
  6.  
  7. for ($index=0; $index < count($baza); $index++)
  8. {
  9. $grupa = split("|", chop($baza[$index])); 
  10. $count="0";
  11.  
  12.  
  13.  if (eregi("$szukane", $baza[$index])) {
  14. $count++;
  15. echo "&raquo; <a href=\"$grupa[0]\">$grupa[1]</a><br /><br />";
  16.  
  17. }
  18.  
  19. }
  20.  
  21. ?>

wszystko dziala poza tym, ze nie mam zadnego napisu w przypadku nieznalezienia wyniku.

Jesli uzywam kodu zbudowanego z Wasza pomoca w obu przypadkach (gdy rekord istnieje lub nie) pojawia mi sie napis 'nie znaleziono'... Z tym mam problem... Heh... Dzieki, ze sie meczysz... ;-)
Hazel
Ehh... Spójrz na ten kod...
Gdzie on ma zdefiniowaną instrukcję alternatywną do if?
Od wiersza 17 powinno być to, do czego już wspólnie doszliśmy...
Wkleję cały kod:

  1. <?php
  2. if($szukane==""){
  3. $szukane="xyz";}
  4. $baza = file("baza.txt");
  5.  
  6. for ($index=0; $index < count($baza); $index++)
  7. {
  8. $grupa = split("|", chop($baza[$index])); 
  9. $count="0";
  10.  
  11.  
  12.  if (eregi("$szukane", $baza[$index])) {
  13. $count++;
  14. echo "&raquo; <a href=\"$grupa[0]\">$grupa[1]</a><br /><br />";
  15.  
  16. }
  17.  else
  18. {
  19. echo 'nie znaleziono';
  20. break;
  21. }
  22. }
  23. ?>
krystas
Robie w ten sposob... I cokolwiek nie wpisze i tak wyskakuje mi, ze nie znaleziono... i tu mam problem...
Hazel
U mnie działa, jeśli wpiszę w bazie ciąg: słowo|słowo a w skrypcie ustawie $szukane na słowo.
Kod:
  1. <?php
  2. if($szukane=="")
  3. {
  4.  $szukane="słowo";
  5. }
  6.  
  7. $baza = file("baza.txt");
  8.  
  9. for ($index=0; $index < count($baza); $index++)
  10. {
  11.  $grupa = split("|", chop($baza[$index]));
  12.  $count="0";
  13.  
  14. if (eregi("$szukane", $baza[$index])) 
  15.  {
  16.  $count++;
  17.  echo "&raquo; <a href=\"$grupa[0]\">$grupa[1]</a><br /><br />";
  18. }
  19. else
  20. {
  21. echo 'nie znaleziono';
  22. break;
  23. }
  24. }
  25. ?>


Kod pliku baza.txt:

| słowo
| drugie_słowo
| trzecie_słowo

Nie pytaj więcej, bo to nie ma prawa nie działać.
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.