Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Porównywanie pliku i formularza
Krisso
post 28.12.2007, 12:56:38
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 25.12.2007

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


Napisałem poniższy fragment kodu:
plik baza.txt
Kod
Mickiewicz Adam`Dziady`PWN`1985`456123-987-987`powieϾ`literacka`Nudna ksiazka ale co robic to lektura jest
Sienkiewicz Henryk`Potop`PWN`1992`1236-9875-4865`powieϾ`historyczna`Fajna lekturka
Jajuga Krzysztof`Inwestycje`WN PWN`2007`7896-5235-7842`podrecznik`informator` Instrumenty finansowe
Szewczyk Ryszard`Bankowa obsługa firmy`Oficyna Ekonomiczna` 2002`98775-6512-9875`poradnik`finanse`Cos jakby przewodnik


plik szukaj.php
  1. <?php
  2.  
  3.  
  4. $pole1 = trim($_POST['pole1']); 
  5. echo '<form action="" method="post">
  6. <center><strong>Szukana </strong> :  <center>  
  7. <input type="text" name="pole1" style="width:  200px;" /><br /> <br /> 
  8. <input type="submit" value="Zapisz" />
  9. <br />
  10. <br />
  11. </form>';
  12. $plik = "baza.txt";
  13. $dana = file($plik);
  14. for ($i=0; $i<count($dana); $i++)
  15. {
  16. list($autor[$i], $tytul[$i] ) = explode("`", $dana[$i]);
  17. $dane =$autor[$i];
  18. if(strstr($dane, $pole1)!==False)
  19. echo "Autor".$autor[$i]."<br />Tytuł:".$tytul[$i]."<br />";
  20. } 
  21. ?>

I sprawa polega na tym, aby sprawdzić czy dany autor istnieje w spisie, a jesli tak to wyrzucić jego nazwisko oraz tytuł ksiażki jaką napisał. A że istnieje możliowść napisania wielu dzieł przez jednego autora to musi przegladać linijke po linijce.
Problem polega na tym, że porownując zmienna $dane nie jest jest porownywana.
I wynik nie jest wyswietlany.

Jestem początkujący w tej tematyce,więc może jakieś sugestie??
Wiem że na Bazach to robiąc byłoby szybciej,ale chcialem sprobować najpierw pracy na plikach.

Ten post edytował Krisso 28.12.2007, 17:06:07
Go to the top of the page
+Quote Post
Hazel
post 28.12.2007, 15:16:57
Post #2





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

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


Może jestem dziwny, ale uruchamiam ten Twój kod i wyskakuje mi pusty delimiter przy explode, czyli że znak ` nie może być pierwszym argumentem funkcji rozbijającej...


--------------------
Go to the top of the page
+Quote Post
Krisso
post 28.12.2007, 17:07:57
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 25.12.2007

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


Pierwszym argumentem f rozbijajacej nie jest ` lecz Nazwisko i imię autora, chyba że coś źle zrozumialem.

Ps. dodalem do gornego kody framgent pliku baza.txt

Ten post edytował Krisso 28.12.2007, 17:08:30
Go to the top of the page
+Quote Post
Hazel
post 28.12.2007, 18:23:53
Post #4





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

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


Chodzi mi nie o list(), lecz o explode()...
  1. <?php
  2. list($autor[$i], $tytul[$i] ) = explode("`", $dana[$i]);
  3. ?>

wywołanie explode ("`", .... u mnie wypluwa błąd że delimiter (pierwszy argument) jest pusty. Myślę, że w tym tkwi problem.
Zastosuj po prostu inne wyrażenie, według którego będziesz rozbijać wiersze pliki, może być to kropka, przecinek, średnik, cokolwiek, byle nie odwrócony apostrof, jak widać. A drugie co powinieneś zrobić, to włączenie raportowania błędów w php.ini, bo aż dziwne, że coś takiego Ci nie zwraca żadnego komunikatu...

Ten post edytował Hazel 28.12.2007, 18:26:03


--------------------
Go to the top of the page
+Quote Post
Krisso
post 2.01.2008, 18:11:52
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 25.12.2007

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


Przykro mi ale to nadal nie jest ten problem. Po naciśnięciu przycisku "Szukaj" nadal nic nie otrzymuję.
Może są jakieś inne propozycje?



EDIT:
A oto moja wersja. Jakby ktoś miał jakieś pomysły co do efektywniejszego lub "bardziej eleganckiego" wykonania to chętnie posłucham.


  1. <?php
  2. $pole1 = trim($_POST['pole1']); 
  3. echo '<form action="" method="post">
  4. <center><strong>Szukany Zwrot : </strong>  <center>  
  5. <input type="text" name="pole1" style="width:  130px;" /><br /> <br /> 
  6. <input type="submit" value="Szukaj" />
  7. <br />
  8. <br />
  9. </form>';
  10. $arrFile = file( 'baza.txt' );
  11. for( $i = 0; $i < count( $arrFile ); $i++ )
  12. {
  13. list($autor[$i], $tytul[$i], $wyd[$i],$rw[$i],$isbn[$i],$gat1[$i],$gat2[$i],$opis[$i] ) = explode(".", $arrFile[$i]);
  14. $line = explode( '.', $arrFile[ $i ] ); 
  15. if( eregi( $pole1, $line[1])||eregi( $pole1, $line[0] ) )  
  16. { 
  17. echo "<strong>Autor :</strong>".$autor[$i].
  18. "<br /><strong> Tytuł:</strong>".$tytul[$i].
  19. "<hr />";
  20.  
  21. }
  22.  else { ; }
  23. }
  24. ?>


Ten post edytował Krisso 2.01.2008, 18:12:39
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: 19.07.2025 - 20:29