Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [php] Wczytanie z pliku

Napisany przez: afick 21.04.2006, 10:49:58

chce zrobic wczytywanie z pliku zmieniajacego sei textu ale tylko zeby sie wyswietliły 4-5 ostanich wiadomości, jseli skrypt napotka na coa takiego <img src="jakisplik.jpg> zeby zilczył je i jak osiagnie 5 zaprzestał wyswietlania dalej pliku

Napisany przez: LBO 21.04.2006, 11:47:23

A ja chcę, żeby szef dawał mi wolne za każdym razem jak go o to poproszę.

A gdzie masz kod (choc trochę)? Gotowca nie dostaniesz (przynajmniej nie tak od razu tongue.gif).

http://pl.php.net/manual/pl/ref.filesystem.php

Napisany przez: afick 21.04.2006, 12:33:08

  1. <?php
  2. function plik () {
  3. $plik = http://www.php.net/fopen("./plik.txt","r");
  4. $czytaj = http://www.php.net/fread($plik,10000);
  5. http://www.php.net/echo $czytaj;
  6. http://www.php.net/fclose($plik);
  7.  
  8. }
  9.  
  10. http://www.php.net/echo plik();
  11.  
  12. ?>


tutaj kod tylko jak go zmodyfikowac pewnie jakies if i jakis licznik by sie prydało wstawic biggrin.gif jeszcze postaram sie pomyslec ale brak mi pomysłów na modyfikacje tego ale dzieki za link popatrze biggrin.gif poczytam zastosuje tongue.gif


kod mam taki tylko on ma jedna wade ze wyswietla mi krzaki na polskich literkach a zeby bylo smieszniej to jedne sa dobrze wyswietlane jedne inne nie

Napisany przez: Vogel 21.04.2006, 12:54:38

no. to jest po prostu wyswietlany czysty pliczek z newsami.
bardzo kiepski sposob na trzymanie newsow (wlasnie stad masz problem).

Napisany przez: _bezimienny 21.04.2006, 15:19:38

Spróbuj zorbić tak żeby każdą wiadomość zapisywało do osobnego pliku.
Potem czytasz folder funkcją readdir($folder) a następnie w pętli np. while czytasz pliki. Potem wystarczy tylko wyświetlić.

Napisany przez: slash12345 21.04.2006, 20:10:07

Problem: potrzebujesz systemu przechowywania wiadomości w jednym pliku, bez wywoływania zamieszania.
Rozwiązanie: poniższy kod (kompletny zestaw funkcji do wykorzystania) lub mySQL (lepsze niż pliki)

  1. <?
  2. /*
  3. czytaj zwraca tablicę kilku ostatnich wpisów w pliku $plik. Liczbe wpisow do zwr
    ocenia okresla zmienna $liczba.
  4. */
  5. function czytaj($plik,$liczba=5)
  6. {
  7. $zaw = http://www.php.net/file($plik);
  8. foreach($zaw as $zk => $zv) { if ($zv === "") http://www.php.net/unset($zaw[$zk]); }
  9.  if (http://www.php.net/count($zaw) > $liczba)
  10.  {
  11. $zaw = http://www.php.net/array_slice($zaw,http://www.php.net/count($zaw)-$liczba);
  12.  }
  13. return $zaw;
  14. }
  15.  
  16. /*
  17. wypisz wypisuje dane z tablicy (np. otrzymanej za pomoca czytaj), umieszczajac na koncu kazdego wpisu ciag znakow $delimit.
  18. */
  19. function wypisz($arr,$delimit="<br />")
  20. {
  21.  if (http://www.php.net/is_string($arr)) http://www.php.net/print($arr);
  22.  elseif (http://www.php.net/is_array($arr))
  23.  {
  24. foreach ($arr as $k => $v) http://www.php.net/print($v.$delimit);
  25.  }
  26. }
  27.  
  28. /*
  29. dodajwpis dodaje wpis (lub kilka jesli $wpis to tablica) do pliku $plik, przetwarzajac dane wejsciowe za pomoca funkcji ktorej nazw
    e przekazujemy jako trzeci parametr.
  30. */
  31. function dodajwpis($plik,$wpis,$obrobka="nl2br")
  32. {
  33. $pzaw = http://www.php.net/file($plik);
  34. if (http://www.php.net/is_string($wpis))
  35.  {
  36. $pzaw[] = $obrobka($wpis);
  37.  }
  38.  else if (http://www.php.net/is_array($wpis))
  39.  {
  40. foreach ($wpis as $wk => $wv) $pzaw[] = $obrobka($wv);
  41.  }
  42. $p1 = http://www.php.net/fopen($plik,"w") or http://www.php.net/die("<span style=\"color: #FF0000;\"><br />Błąd otwierania pliku {$plik}, sprawdź prawa dostępu.</span><br />");
  43.  foreach ($czaw as $ck => $pv) { $pv = http://www.php.net/str_replace("\n","",$pv); http://www.php.net/fputs($p1,$pv."\n"); }
  44. http://www.php.net/fclose($p1);
  45. }
  46.  
  47. /*
  48. usuwa z pliku $plik wpis numer $nrwpisu (liczac od zera). Przydatne zwlaszcza przy dynamicznym generowaniu formluarzy edycyjnych, g
    dy mamy radio lub checkboxy. W wypadku podania tablicy jako drugiego parametru, u
    suniete zostana wpisy o numerach odpowiadajacym wartosciom tablicy.
  49. */
  50. function usunwpis($plik,$nrwpisu)
  51. {
  52. $czaw = http://www.php.net/file($plik);
  53. if (http://www.php.net/is_int($nrwpisu)) http://www.php.net/unset($czaw[$nrwpisu]);
  54. else if (http://www.php.net/is_array($nrwpisu))
  55.  {
  56. foreach ($nrwpisu as $nk => $nv) http://www.php.net/unset($czaw[$nv]);
  57.  }
  58. $p1 = http://www.php.net/fopen($plik,"w") or http://www.php.net/die("<span style=\"color: #FF0000;\"><br />Błąd otwierania pliku {$plik}, sprawdź prawa dostępu.</span><br />");
  59.  foreach ($czaw as $ck => $cv) { $cv = http://www.php.net/str_replace("\n","",$cv); http://www.php.net/fputs($p1,$cv."\n"); }
  60. http://www.php.net/fclose($p1);
  61. }
  62. ?>


Przepraszam za napisanie tego tutaj, mogłem wprawdzie dać to do gotowców...

Napisany przez: afick 25.04.2006, 21:39:29

witam to znowu jak wiec tak poszłem za sugestja wasza i napisałem cos dla bazy tylko ze zle mi wyswietla date

do strony includuje sobie pliczek ktory wyglada tak (juz po przeróbkach)

  1. <?
  2. require ("./config/config.php");
  3. $connection = http://www.php.net/mysql_connect($db_host, $db_user, $db_password) or http://www.php.net/die ("error");
  4. http://www.php.net/mysql_select_db($db_name, $connection);
  5.  
  6. $query= "SELECT * FROM afick ORDER BY autoID";
  7. $result = http://www.php.net/mysql_query($query, $connection) or http://www.php.net/die (http://www.php.net/mysql_error());
  8.  
  9. for ($i = 0; $i < http://www.php.net/mysql_num_rows($result); $i++ )
  10. {
  11. $news = http://www.php.net/mysql_result($result, $i, "news");
  12. $show_news = http://www.php.net/nl2br($news);
  13. $data = http://www.php.net/mysql_result($result, $i, "data");
  14. $show_date = http://www.php.net/date("H:i:S m/d/Y", $date);
  15.  
  16. http://www.php.net/echo $show_date."<br>";
  17. http://www.php.net/echo $news."<br><br>";
  18. }
  19.  
  20.  
  21. ?>


(ten kod powyzje jest fragmentem kodu tego poniżej)


a dane sa wpisywane z mojej przerubki jakies ksiegi gosci
ktorej kod wyglada tak

  1. <?php 
  2. require ("./config/config.php");
  3. $connection = http://www.php.net/mysql_connect($db_host, $db_user, $db_password) or http://www.php.net/die ("error");
  4. http://www.php.net/mysql_select_db($db_name, $connection);
  5.  
  6. $name = $_POST["text_name"];
  7. $len = http://www.php.net/strlen($name);
  8. //tylko do wpisu do bazy danych biggrin.gif 
  9. if($len > 0 )
  10. {
  11. $news = $_POST["news"];
  12. $date = http://www.php.net/time();
  13.  
  14. $query = "INSERT INTO afick (autoID, news, data) VALUES(NULL, '$news', '$data')";
  15. http://www.php.net/mysql_query($query, $connection) or http://www.php.net/die(http://www.php.net/mysql_error());
  16. }
  17. ?>
  18.  
  19. <html>
  20. <head>
  21. <title>Afick</title>
  22. </head>
  23. <body>
  24. <center>
  25.  
  26. <form action="<?php http://www.php.net/echo $_SERVER['PHP_SELF']; ?>" method="post">
  27. <p><font face="Arial, Helvetica, sans-serif" size="1">
  28. Name: 
  29. <input type="text" name="text_name" />
  30. &nbsp;</font></p>
  31. <p><font face="Arial, Helvetica, sans-serif" size="1">NEWS:<br />
  32. <textarea style="width: 75%" rows="10" name="news"></textarea>
  33. </font></p>
  34. <font face="Arial, Helvetica, sans-serif" size="1">
  35. <center>
  36. <input type="submit" value="Submit">
  37. </center>
  38. </font>
  39. </form>
  40. </center>
  41. </body>
  42. </html>
  43.  
  44. <?
  45.  
  46. $query= "SELECT * FROM afick ORDER BY autoID";
  47. $result = http://www.php.net/mysql_query($query, $connection) or http://www.php.net/die (http://www.php.net/mysql_error());
  48.  
  49. for ($i = 0; $i < http://www.php.net/mysql_num_rows($result); $i++ )
  50. {
  51. $news = http://www.php.net/mysql_result($result, $i, "news");
  52. $show_news = http://www.php.net/nl2br($news);
  53. $data = http://www.php.net/mysql_result($result, $i, "data");
  54. $show_date = http://www.php.net/date("H:i:S m/d/Y", $date);
  55.  
  56. http://www.php.net/echo $show_date."<br>";
  57. http://www.php.net/echo $news."<br><br>";
  58. }
  59.  
  60. ?>




i teraz moja prośba w jaki sposob napisac pierwszy kod zeby wyswietlał dobrze date w pierwszym skrypcie wypisuje mi 1st 1970r 00:00 jakos tak a w tym drugim skrypcie jzu wyswietla poprawnie (22:37:th 04/25/2006)

ztcw to wyglada tak ze 2 kod pobiera skas dobrze dane ale mimo ze pierwszy kod jest zywcem wyciety z tego drugiego nie chce to działać sad.gif
i jak zrobic zeby sie to wyswietlało na odwrot niz obecnie (teraz najnowsza jest na dole)



wiem ze to co tu jest napisane (kod) nie jest to optymalne rozwiazanie ale dopiero sie ucze i testuje rożne drogi do celu snitch.gif

Napisany przez: matrach 25.04.2006, 23:17:20

Są pokręcone nazwy zmiennych ($date z $data)
W pełnym skrypcie:
Najpierw sie do mysql nic nie wpisuje bo $data nie jest zdefiniowana (tam zmień na $date)
Potem w wyświetlaniu sie wyświetla data zdefiniowana do zapisania ($date) jeśli ma być z mysql to jest $data.

  1. <?php
  2. $data = http://www.php.net/mysql_result($result, $i, "data");
  3. $show_date = http://www.php.net/date("H:i:S m/d/Y", $date);
  4. ?>

Widzisz chyba że te zmienne mają inną nazwe.

Więc tak:
To:
  1. <?php
  2. $query = "INSERT INTO afick (autoID, news, data) VALUES(NULL, '$news', '$data')"
  3. ?>

Zmieniasz na:
  1. <?php
  2. $query = "INSERT INTO afick (autoID, news, data) VALUES(NULL, '".$news."', '".$date."'')"
  3. ?>

A:
  1. <?php
  2. $show_date = http://www.php.net/date("H:i:S m/d/Y", $date);
  3. ?>

na:
  1. <?php
  2. $show_date = http://www.php.net/date("H:i:S m/d/Y", $data);
  3. ?>

Napisany przez: afick 26.04.2006, 11:38:06

OK działa wielkie dzieki biggrin.gif byl mały błąd jeszcze bo

  1. <?php
  2. $query = "INSERT INTO afick (autoID, news, data) VALUES(NULL, '".$news."', '".$date."'')"
  3. ?>
wstawiłes podwujnie ' smile.gif i nie zapisywało do bazy ale teraz jest ok biggrin.gif jeszcze tylko musze sie iporac z wypiisaniem od najnowszej do najstarszej:P

Napisany przez: matrach 26.04.2006, 12:06:52

  1. <?php
  2.  
  3. for ($i = 0; $i < http://www.php.net/mysql_num_rows($result); $i++ )
  4. {
  5. $data = http://www.php.net/mysql_result($result, $i, "data");
  6. $news = http://www.php.net/mysql_result($result, $i, "news");
  7. $post[$data] = http://www.php.net/nl2br($news);
  8.  
  9.  
  10.  }
  11. http://www.php.net/krsort($post);
  12. foreach($post as $czas => $tresc)
  13. {
  14. $show_date = http://www.php.net/date("H:i:S m/d/Y", $czas);
  15. http://www.php.net/echo $show_date . '<br />' . $tresc;
  16. }
  17.  
  18. ?>

Tablica "post" (nie $_POST) przechowuje posty
w kluczu ma date posta a jako wartość treść

Napisany przez: afick 26.04.2006, 12:41:15

zastosowałem cos takiego d owypisania bazy od konca czyli od ostatnich wpisów oraz wypisuje tylko 5 ostatnich

  1. <?php
  2.  
  3. $rows = http://www.php.net/mysql_num_rows($result);
  4. $iloscnewsow = 5; //wypisuje ilośc ostatnich wpisów do bazy danych biggrin.gif
  5. $wypis = $rows - $ilośćnewsow;
  6.  
  7. /*echo ($wypis."<br>");
  8. echo ($rows."<br>");*/
  9.  
  10. for ($i = $wypis; $rows > $i; $rows-- )
  11. {
  12. $news = http://www.php.net/mysql_result($result, $rows-1, "news");
  13. $show_news = http://www.php.net/nl2br($news);
  14. $data = http://www.php.net/mysql_result($result, $rows-1, "data");
  15. $show_date = http://www.php.net/date("H:i m/d/Y", $data);
  16.  
  17. http://www.php.net/echo "<b>".$show_date."</b><br>";
  18. http://www.php.net/echo $news."<br><br>";
  19. }
  20.  
  21. ?>



nie jest to moze zbyt optymalne rozwiazanie ale najważniejsze ze działa biggrin.gif


update zna ktos gdzies jakis darmowy hsoting samej bazy danych questionmark.gif do ktorej mozna by wlesc z zewnatrz bo nie wszystki darmoewe serwisy na to pozwalaja questionmark.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)