Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP][MySQL]wyswietlanie txt na stronie
m4dmike
post 25.02.2011, 02:05:27
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 25.02.2011

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


Witam,

Czy moglby ktos podowiedziec mi rozwiazanie mojego problemu, nad ktorym glowie sie juz kilka godzin i nie moge nic sensownego wymyslec, mianowicie:
posiadam katalog w ktorym miesci sie, powiedzmy, ok 50000 plikow txt, kazdy plik zawiera wiersz poetycki, nazwa pliku to tytul wiersza lub tytul i tworca,
chcialbym zrobic stronke na ktorej bedzie mozna wyszukac dany wiersz, po nazwie lub tworcy, no i klikajac na tytul tego wiersza wyswietlic zawartosc pliku txt z tym wierszem na stronie.
Jak sie do tego wogole zabrac? ciezko przypisywac 50000 linkow. Jakies pomysly?
Go to the top of the page
+Quote Post
darko
post 25.02.2011, 02:15:54
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Co do tematu ma sql? Chciałbyś te dane jakoś do bazy wprowadzić? W czym tkwi problem?


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
m4dmike
post 25.02.2011, 02:22:13
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 25.02.2011

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


problem tkwi w tym, ze nie wiem jak zapisac to do bazy w takiej ilosci? chyba nie pojedynczo no i jak potem to wyswietlac na stronie jako liste z odnosnikami do plikow
Go to the top of the page
+Quote Post
darko
post 25.02.2011, 03:19:48
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


- pobierasz zawartość całego folderu z plikami
- każdą pobraną nazwę pliku zapisujesz (wraz z treścią pliku) do odpowiedni przygotowanej bazy
- usuwasz pliki
- piszesz formularz wyszukiwania
- piszesz skrypt obsługujący wyszukiwanie
koniec


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
nekomata
post 25.02.2011, 03:36:55
Post #5





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


Nudziło mi się wiec napisałem ci szkielet , robisz to na xamppie i tworzysz w htdocs tworzysz folder 'wiersze' i tam wrzucasz pliki txt ,w skrypcie ode mnie zmieniasz tylko dane do bazy danych(tabela tworzy się automatycznie biggrin.gif)
plik : dodaj.php
  1. <?php
  2. #Mysqli
  3. DEFINE('DB_USER','login');
  4. DEFINE('DB_PASSWORD','haslo');
  5. DEFINE('DB_HOST','localhost');
  6. DEFINE('DB_NAME','baza');
  7. //connect
  8. $dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
  9. if(!$dbc) {
  10. trigger_error('Nie mozna polaczyc z baza mysql : '.mysqli_connect_error() );
  11. }
  12.  
  13. function masowa_baza($xx){
  14. global $dbc;
  15. $MojFolder = opendir($xx);
  16. while($entryName = readdir($MojFolder)) {
  17. $ListaPlikow[] = $entryName;
  18. }
  19. closedir($MojFolder);
  20. $indexCount = count($ListaPlikow);
  21. sort($ListaPlikow);
  22. for($index=0; $index < $indexCount; $index++) {
  23. if (substr($ListaPlikow[$index], 0, 1) != '.'){
  24. echo '<br/>';
  25. $tytul = str_replace('.txt','',$ListaPlikow[$index]);
  26. $plik = file_get_contents($xx.$ListaPlikow[$index]);
  27. $tytul = mysqli_real_escape_string($dbc,$tytul);
  28. $plik = mysqli_real_escape_string($dbc,$plik);
  29. $test = "SELECT tytul FROM wiersze WHERE tytul='".$tytul."'";
  30. $sprawdzanie = mysqli_query($dbc,$test);
  31. if(mysqli_num_rows($sprawdzanie)<1){
  32. $wstawianie = "INSERT INTO wiersze (tytul,zawartosc) Values ('$tytul','$plik' )";
  33. if(mysqli_query($dbc,$wstawianie)){
  34. echo $tytul.' zostal dodany pomyslnie do bazy danych<br/>';
  35. }
  36. else{
  37. $tytul.' nie mogl zostac dodany do bazy danych.<br/>';
  38. }
  39. }
  40. else {
  41. echo $tytul.' istnieje juz w bazie wiec zostal pominiety.<br/>';
  42. }
  43.  
  44. }
  45. }
  46. }
  47. //Tworzymy baze danych
  48. $tabela = "CREATE TABLE `wiersze` (
  49. `id` smallint(10) NOT NULL AUTO_INCREMENT,
  50. `tytul` varchar(300) COLLATE utf8_polish_ci NOT NULL,
  51. `zawartosc` text COLLATE utf8_polish_ci,
  52. PRIMARY KEY (`id`)
  53. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci";
  54. mysqli_query($dbc,$tabela);
  55. masowa_baza('./wiersze/');
  56. ?>

plik: czytaj.php
  1.  
  2. <?php
  3. #Mysqli
  4. DEFINE('DB_USER','user');
  5. DEFINE('DB_PASSWORD','haslo');
  6. DEFINE('DB_HOST','localhost');
  7. DEFINE('DB_NAME','nazwabazy');
  8. $dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
  9. if(!$dbc) {
  10. trigger_error('Nie mozna polaczyc z baza mysql : '.mysqli_connect_error() );
  11. }
  12. // Teraz wyswietlanie
  13.  
  14. if(!isset($_GET['id'])){
  15. echo 'witam w liscie wierszy .<br/>';
  16. $zapytanie = "SELECT id,tytul FROM wiersze";
  17. $odebrane = mysqli_query($dbc,$zapytanie);
  18. while($wiersze = mysqli_fetch_array($odebrane,MYSQLI_ASSOC)){
  19. echo '<a href="czytaj.php?id='.$wiersze['id'].'" >'.$wiersze['tytul'].'</a><br/>';
  20. }
  21. }
  22. else{
  23. $id = mysqli_real_escape_string($dbc,$_GET['id']);
  24. $zapytanie = "SELECT * FROM wiersze WHERE id='$id'";
  25. $odebrane = mysqli_query($dbc,$zapytanie);
  26. while($wiersze = mysqli_fetch_array($odebrane,MYSQLI_ASSOC)){
  27. echo '<h1>'.$wiersze['tytul'].'</h1><br/>'.$wiersze['zawartosc'];
  28. }
  29. }
  30.  
  31. ?>

Napisałem to tylko z ciekawości bo nie pisałem niczego podobnego wcześniej, na stronę to i tak zamalo ale szkielet jest :] , wystarczy ze odpalisz plik dodaj.php i wszystkie pliki txt z folderu 'wiersze' zostaną dodane do bazy.
Go to the top of the page
+Quote Post
wNogachSpisz
post 25.02.2011, 09:35:01
Post #6





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


I co, full text search za każdym razem jak ktoś chce wyszukać tytuł?

Już lepiej podzielić tytuły na słowa,
z każdego słowa zrobić wiersz, gdzie pierwsza kolumna to słowo, druga to ID utworu,
tabele zaindeksować po słowach.

Będzie szybko jak na google smile.gif

Ten post edytował wNogachSpisz 25.02.2011, 09:36:32
Go to the top of the page
+Quote Post
m4dmike
post 25.02.2011, 09:42:49
Post #7





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 25.02.2011

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


ok zrobilem jak napisales i wyswietla sie blad :
Fatal error: Call to undefined function mysqli_connect() in...
dlaczego tam jest mysqli a nie mysql ?

Cytat(wNogachSpisz @ 25.02.2011, 09:35:01 ) *
I co, full text search za każdym razem jak ktoś chce wyszukać tytuł?

Już lepiej podzielić tytuły na słowa,
z każdego słowa zrobić wiersz, gdzie pierwsza kolumna to słowo, druga to ID utworu,
tabele zaindeksować po słowach.

Będzie szybko jak na google smile.gif


jak mam podzielic tytuly na slowa? chodzi o nazwy plikow? jak indeksowac po slowach?
Go to the top of the page
+Quote Post
nekomata
post 25.02.2011, 15:07:20
Post #8





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


mysqli_connect. Mysqli_ jest rozwinięciem mysql. Dostępne dopiero od PHP5 wiec wychodzi na to ze masz jakiś stary serwer postawiony. , ja używam mysqli_ od początku mojej nauki bo jest szybsze od normalnego.
Cóż ta funkcja ode mnie powinna działać bezproblemowo gdy zamieni się mysqli na mysql.Ja patrzyłem tylko na masowe dodawanie jako ze sam się ciągle uczę , a nigdy nie robiłem czegoś takiego wcześniej.Szkielet działania zostaje ten sam.. niech sobie poprawi po prostu i będzie śmigać .

Cytat(m4dmike)
jak mam podzielic tytuly na slowa?

explode , potem count na array i odpowiednie zapytanie pod to.

Ten post edytował nekomata 25.02.2011, 15:10:25
Go to the top of the page
+Quote Post
wNogachSpisz
post 25.02.2011, 15:12:50
Post #9





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Cytat(m4dmike @ 25.02.2011, 09:42:49 ) *
jak mam podzielic tytuly na slowa? chodzi o nazwy plikow? jak indeksowac po slowach?


Odpal nowy wątek, to pogadamy..
Go to the top of the page
+Quote Post
m4dmike
post 25.02.2011, 21:32:09
Post #10





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 25.02.2011

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


Cytat(nekomata @ 25.02.2011, 15:07:20 ) *
mysqli_connect. Mysqli_ jest rozwinięciem mysql. Dostępne dopiero od PHP5 wiec wychodzi na to ze masz jakiś stary serwer postawiony. , ja używam mysqli_ od początku mojej nauki bo jest szybsze od normalnego.
Cóż ta funkcja ode mnie powinna działać bezproblemowo gdy zamieni się mysqli na mysql.Ja patrzyłem tylko na masowe dodawanie jako ze sam się ciągle uczę , a nigdy nie robiłem czegoś takiego wcześniej.Szkielet działania zostaje ten sam.. niech sobie poprawi po prostu i będzie śmigać .


explode , potem count na array i odpowiednie zapytanie pod to.


nie działa
Go to the top of the page
+Quote Post
nekomata
post 25.02.2011, 22:33:09
Post #11





Grupa: Zarejestrowani
Postów: 314
Pomógł: 44
Dołączył: 12.11.2010
Skąd: UK

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


Bardzo wiele nam to mówi wiesz?Jakieś błędy coś?Szukasz pomocy czy nabijasz posty?Co konkretnie nie działa?Dostałeś i tak więcej kodu niż powinneś i więcej porad niż normalnie się udziela , ale nie daj dłoń to chcą rękę -.- .
Go to the top of the page
+Quote Post
m4dmike
post 25.02.2011, 23:34:12
Post #12





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 25.02.2011

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


nie mam pojecia co jest, wywala mi takie oto błędy:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in D:\WebServ\httpd\portal\dodaj.php on line 56

Warning: opendir(./portal/wiersze/) [function.opendir]: failed to open dir: No error in D:\WebServ\httpd\portal\dodaj.php on line 17

Warning: readdir(): supplied argument is not a valid Directory resource in D:\WebServ\httpd\portal\dodaj.php on line 18

Warning: closedir(): supplied argument is not a valid Directory resource in D:\WebServ\httpd\portal\dodaj.php on line 21

Warning: sort() expects parameter 1 to be array, null given in D:\WebServ\httpd\portal\dodaj.php on line 23
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: 6.07.2025 - 18:25