Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Baza danych TXT na MySql
Forum PHP.pl > Forum > Bazy danych > MySQL
Wieviór
Kod
idnewsa||tytul||tresc||1097149245(data, sekundy?)||16(nie wiem co to, chyba id autora)||obrazek||zrodlo||


Tak wygląda linia kodu w news.txt - w Ps News

I chce ją przerobić na bazę danych...

Kod
id | tytul | tresc_dluga | data(YYYY-MM-DD) | obrazek | zrodlo


Ktoś ma jakiś pomysł?
AxZx
odczytujesz z tego pliku gdzie sa te dane po kolei kazda linie
pozniej
  1. <?php
  2.  
  3. $dane = explode(&#092;"||\",$linia);
  4.  
  5. $sqlquery = &#092;"INPUT INTO baza, tresc_dluga, data, obrazek, zrodlo VALUES (\".$dane[1].\",\".$dane[2].\",\".$dane[3].\",\".$dane[4].\",\".$dane[5].\")\";
  6.  
  7.  
  8. ?>


o to ci chodzi ?
bo nie wiem, w sumie to mi sie wydaje ze to za proste no ale dobra hehe
Wieviór
  1. <?
  2. $file=fopen(&#092;"plik.txt\", \"r\");
  3. $dane = explode(&#092;"||\",$file);
  4. $sqlquery = &#092;"INSERT INTO (pole1, pole2, pole3, pole4, pole5) VALUES ('\".$dane[1].\"', '\".$dane[2].\"', '\".$dane[3].\"', '\".$dane[4].\"', '\".$dane[5].\"')\";
  5. ?>


A tak jest git? Bo ja na plikach to nic nie umiem, ale coś takiego wykombinowałem, dobrze jest?
AxZx
tak bedZie lepiej
z manuala masz po czesci, i masz wynik prosto do bazy smile.gif w eleganckiej postaci hihi

  1. <?php
  2. function file_v2 ( $filename, $return_max_lines=0, $callback_func=null, $do_rtrim=true, $buffer_size=1024 )
  3. {
  4.  
  5.  // open file pointer
  6.  $open = fopen( $filename, 'rb' );
  7.  
  8.  // start an array [good coding practice]
  9.  $open_data = array();
  10.  
  11.  // start an internal line counter [good coding practice]
  12.  $line=0;
  13.  
  14.  // begin the loop
  15.  while( !feof($open) )
  16.  {
  17.  if( $do_rtrim )
  18.  {
  19.  // add line to array, do an rtrim()
  20.  $open_data[$line] = rtrim(fgets($open, $buffer_size));
  21.  }
  22.  else
  23.  {
  24.  // add line to array
  25.  $open_data[$line] = fgets($open, $buffer_size);
  26.  }
  27.  
  28.  if( $callback_func != null && function_exists( $callback_func ) )
  29.  {
  30.  eval($callback_func . '($open_data[$line]);');
  31.  }
  32.  
  33.  // +1 to the internal line counter
  34.  $line++;
  35.  
  36.  if( $return_max_lines > 0 )
  37.  {
  38.  if( $line >= $return_max_lines )
  39.  {
  40.  break;
  41.  }
  42.  }
  43.  }
  44.  
  45.  // close the file pointer
  46.  fclose($open);
  47.  
  48.  // return the data
  49.  return $open_data;
  50. }
  51.  
  52.  function mk_callback( &$input )
  53. {
  54.  $input = explode(&#092;"||\", $input);
  55. }
  56.  
  57. $open = file_v2('file_test.txt', 3, 'mk_callback');
  58. echo &#092;"<pre>\";
  59. print_r($open);//tutaj sobie zobacz wynik jaki bedziesz mial i przeanalizuj i w ten desen dodaj t
  60.  dane do mysql
  61. echo &#092;"</pre>\";
  62.  
  63. ?>
Wieviór
  1. <?php
  2.  
  3. (
  4. [0] => Array
  5. (
  6. [0] => 2
  7. [1] => Startujemy 1 stycznia 
  8. [2] => Została podjęta decyzja, że ruszamy 1 stycznia. Teraz pilnie poszukujemy ludzi do redakcji, sponsorów itp. Jeżeli kto&para; jest chętny pilnie prosimy o kontakt !!!
  9. [3] => 1072547981
  10. [4] => 1
  11. [5] => brak
  12. [6] => 
  13. [7] => 
  14. )
  15.  
  16. [1] => Array
  17. (
  18. [0] => 3
  19. [1] => Houllier pochwalił Dudka 
  20. [2] => Dudek po trzytygodniowej przerwie w grze powrócił między słupki bramki LFC. Dotychczasowo Dudek przesiadywał na ławce rezerwowych a bramkarzem numer 1 był 
  21. hris Kirkland. Dudek powrócił miedzy słupki dzięki temu, że Kirkland nabawił sie kontuzji.&#092;" Nie jestem zadowolony, że stało sie to w taki sposób, mój powrót zawdzięcz
    a
  22.  kontuzji mojego kolegi z druzyny. \" - przyznał DudekJednak powrót Dudka do bramki LFC nie był taki jaki on sam sobie 
  23. ymażył, LFC zremisował z Man. City 2:2. Ale pomimo tego Dudek zebrał spore pochw
    ały od trenera.
    Ľródło: Życie Warszawy
  24. [3] => 1072894385
  25. [4] => 1
  26. [5] => dudek.jpg
  27. [6] => 
  28. [7] => 
  29. )
  30.  
  31. [2] => Array
  32. (
  33. [0] => 4
  34. [1] => Gerrard: \" Ja się nigdzie nie wybieram \"
  35. [2] => Steven Gerrard zdementował wszelkie plotki, które mówiły o jego odej&para;ciu z LFC jeżeli drużyna z Anfield nie bedzie uczestniczyła w Lidze Mis
    trzów.\"
     Ludzie mówi&plusmn;, że jężeli Liverpool nie osi&plusmn;gnie prawa gry w Champions League to ja odejde z klubu. Więc ja chce 
  36. odkre&para;lic, że to wszystko to plotki a ja nie my&para;le teraz o opuszczeniu LFC \". - powiedział Gerrard\" Podpisałem 4-letni kontrakt i my&para;le teraz tylko o dobrej grze i w żadnym wypadku nie planuje odejscia z 
  37. lubu \".
    Ľródło: lechsport.pl
  38. [3] => 1072895411
  39. [4] => 1
  40. [5] => gerrard.jpg
  41. [6] => 
  42. [7] => 
  43. )
  44.  
  45. )
  46.  
  47.  
  48. ?>


Dobrze to pokazuje mi coś takiego.
Jak teraz to dodać do bazy. Albo naczej, jak zrobić by wyświetliło mi z pierwszego newsa(0) 5 opcję czyli "brak"??
AxZx
no jak to

  1. <?php
  2.  
  3. $open[$b][0];
  4. $open[$b][1];
  5. $open[$b][2];
  6. $open[$b][3];
  7. $open[$b][4];
  8. $open[$b][5];
  9. $open[$b][6];
  10. $open[$b][7];
  11.  
  12. ?>


wstawiasz te zmienne w petle i dopisujesz pokolei do bazy
nie wiem jakie tam masz pozycje, chyba sobie poradzisz skoro kodujesz w php
nibytak
chyba da sie to zrobic bez php:

http://dev.mysql.com/doc/mysql/en/load-data.html
AxZx
ano widzisz jak elegancko smile.gif
Wieviór
No właśnie przez tą bazę może być ciężko...

Kod
CREATE TABLE `newsy` (
  `id` int(11) NOT NULL auto_increment,
  `tytul` text NOT NULL,
  `tresc_krotka` text NOT NULL,
  `tresc_dluga` text NOT NULL,
  `data` date NOT NULL default '0000-00-00',
  `autor` text NOT NULL,
  `zrodlo` text NOT NULL,
  `obrazek` text NOT NULL,
  KEY `id` (`id`)
)


  1. <?php
  2. while ($open)
  3. {
  4. $strdate = date( 'Y-m-d', $open[3] );
  5. if ($open[4] == 1) { $uzyt='Duszek'; }
  6. if ($open[4] == 7) { $uzyt='Damian'; }
  7. if ($open[4] == 13) { $uzyt='Michał'; }
  8. if ($open[4] == 16) { $uzyt='AirCanada'; }
  9. if ($open[4] == 18) { $uzyt='Wieviór'; }
  10. if ($open[4] == 19) { $uzyt='Kolongi'; }
  11. if ($open[4] == 21) { $uzyt='Ramirezone'; }
  12. if ($open[4] == 23) { $uzyt='Gin'; }
  13. if ($open[4] == 24) { $uzyt='Forest'; }
  14. if ($open[4] == 25) { $uzyt='Marcin'; }
  15. if ($open[4] == 26) { $uzyt='Liverpoollover'; }
  16. if ($open[4] == 27) { $uzyt='Daniel'; }
  17. if ($open[4] == 28) { $uzyt='Owen55'; }
  18. if ($open[4] == 29) { $uzyt='Arti'; }
  19. if ($open[4] == 31) { $uzyt='Kiełbol'; }
  20. if ($open[4] == 33) { $uzyt='Ada'; }
  21. if ($open[4] == 34) { $uzyt='plu'; }
  22. if ($open[4] == 35) { $uzyt='Kuba'; }
  23. if ($open[4] == 36) { $uzyt='Przemek'; }
  24. if ($open[4] == 37) { $uzyt='Justyna'; }
  25. $sql= &#092;"INSERT INTO newsy (tytul, tresc_krotka, tresc_dluga, data, autor, obrazek, zrodlo) VALUES ('\".$open[1].\"', '\".$open[2].\"', '\".$open[2].\"', '\".$uzyt.\"', '\".$strdate.\"', '\".$open[5].\"', '\".$open[6].\"')\"; 
  26. mysql_query($sql) or die(mysql_error());
  27. echo 'Dodano newsa.';
  28. ?>


Ale czy to jest dobrze. Albo niech będzie przez tą baze. Tylko ja kompletnie nie wiem jak... ktoś mi może pomóc, bo ja to muszę naprawdę zrobić, a nie mam żadnego pomysłu...
rogrog
nie bedzie dobrze.

zrób sobie drugą tabelę, w której będą id użytkowników i ich loginy (i mogą być oczywiście jeszcze inne informacje)

a w tabeli newsów tylko id autora

będzie poprawnie i zaoszczędzisz sobie ifów

----

i użyj pętli foreach
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.