Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Maly problem z funkcja if
krystas
post 13.08.2007, 23:26:43
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.07.2004

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
MacPain
post 14.08.2007, 00:28:41
Post #2





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 22.09.2006

Ostrzeżenie: (10%)
X----


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. ?>


Ten post edytował MacPain 14.08.2007, 00:30:48
Go to the top of the page
+Quote Post
krystas
post 16.08.2007, 00:53:30
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.07.2004

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
kossa
post 16.08.2007, 01:46:07
Post #4





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

Ostrzeżenie: (0%)
-----


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

Ten post edytował kossa 16.08.2007, 01:46:53


--------------------
Go to the top of the page
+Quote Post
krystas
post 16.08.2007, 14:16:49
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.07.2004

Ostrzeżenie: (0%)
-----


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? ;-)
Go to the top of the page
+Quote Post
Hazel
post 16.08.2007, 16:35:39
Post #6





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Hazel 16.08.2007, 16:36:18


--------------------
Go to the top of the page
+Quote Post
krystas
post 16.08.2007, 17:46:02
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.07.2004

Ostrzeżenie: (0%)
-----


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? ;-)
Go to the top of the page
+Quote Post
Hazel
post 16.08.2007, 19:01:53
Post #8





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował Hazel 16.08.2007, 19:05:06


--------------------
Go to the top of the page
+Quote Post
krystas
post 16.08.2007, 20:41:18
Post #9





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.07.2004

Ostrzeżenie: (0%)
-----


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...

Ten post edytował krystas 16.08.2007, 20:41:47
Go to the top of the page
+Quote Post
Hazel
post 16.08.2007, 22:31:54
Post #10





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. <?php
  2. echo 'nie znaleziono';
  3. break;
  4. ?>


--------------------
Go to the top of the page
+Quote Post
krystas
post 17.08.2007, 09:22:25
Post #11





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.07.2004

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
Hazel
post 17.08.2007, 09:45:47
Post #12





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Hazel 17.08.2007, 09:47:01


--------------------
Go to the top of the page
+Quote Post
krystas
post 17.08.2007, 11:21:11
Post #13





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.07.2004

Ostrzeżenie: (0%)
-----


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'...
Go to the top of the page
+Quote Post
Hazel
post 17.08.2007, 11:42:17
Post #14





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
krystas
post 17.08.2007, 14:19:57
Post #15





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.07.2004

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
Hazel
post 17.08.2007, 14:24:04
Post #16





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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?


--------------------
Go to the top of the page
+Quote Post
krystas
post 17.08.2007, 19:40:16
Post #17





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.07.2004

Ostrzeżenie: (0%)
-----


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... ;-)
Go to the top of the page
+Quote Post
Hazel
post 17.08.2007, 21:09:07
Post #18





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował Hazel 17.08.2007, 21:09:37


--------------------
Go to the top of the page
+Quote Post
krystas
post 17.08.2007, 21:30:20
Post #19





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.07.2004

Ostrzeżenie: (0%)
-----


Robie w ten sposob... I cokolwiek nie wpisze i tak wyskakuje mi, ze nie znaleziono... i tu mam problem...
Go to the top of the page
+Quote Post
Hazel
post 17.08.2007, 22:26:01
Post #20





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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ć.

Ten post edytował Hazel 17.08.2007, 22:27:56


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 21:14