Tworzymy grę, część 5: Własny system newsów

Mariusz Siwko
05.09.2015

V - Własny system newsów

Dawno nie pisałem... dość zajęty byłem zarówno w szkole jak i przy grze. Po porozmawianiu z kilkoma użytkownikami forum tematu kolejnej części poradnika stwierdziłem, że najlepiej będzie napisać jak wykonać prosty system newsów.
 

W systemie tym będziemy używać kilku nowych funkcji języka php. Między innymi najprostszej ze wszystkich funkcji date oraz time.

1. Poczatek...
Na początku powinniśmy ustawić tabelę w bazie danych o nazwie np. news. Będziemy w niej zapisywać wszystkie newsy, informacje o autorze newsa, etc. Powinna ona wyglądać następująco (oczywiście można dodać inne pola, przedstawiam tylko wygląd tabeli dla tego poradnika):
ID - dowolny typ int np. int, auto_increment, index
tekst - tekst widoczny dla gracza po włączeniu strony z newsami (po prostu, treść newsa) - typ text
autor - autor newsa - typ text
date - nasza data pobrana zapytaniem time(); - typ bigint
Zapytanie, które można wkleić do bazy mysql wyglądać może więc następująco:

CREATE   TABLE `news` (
  `ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  `tekst` TEXT NOT NULL ,
  `autor` TEXT NOT NULL ,
  `date` BIGINT NOT NULL
  ) ENGINE = MYISAM;

Mamy już gotową tabelę w bazie danych... należało by rozpisać kod...

2. Pisanie kodu
Utwórzmy więc plik news.php, który uruchomiony będzie wyświetlał 5 ostatnich newsów. Czemu 5? Bo to przejrzyste i w ogóle. A w każdym momencie można to zmienić. Poniższy kod jest systemem newsów razem ze stronicowaniem (czyli z dzieleniem wszystkich newsów na kilka stron):

     session_start(); // Obsługa sesji na stronie
  $dbh = mysql_connect("localhost", "root", "");   // Logowanie do bazy danych
  mysql_select_db("gra"); // Wybieranie bazy danych
  if(isset($_SESSION['login'])){ // Sprawdzanie czy user jest zalogowany, w   miejsce login należy wstawić nazwę swojej sesji, która jest włączana przy logowaniu.   Warunek ten nie jest konieczny jeśli chcecie by każdy user widział newsy -   wykasujcie to i jeden } na końcu
  $news_strona = 5; // ile ma być newsów na stronę
  $x = $_GET['x']; // Pobieranie aktualnej strony
  if($x == NULL){ // Sprawdzanie czy $x nie jest puste
  $x = 1; // Jeśli jest puste to znaczy, że strona to strona nr. 1
  }
  $x = $x*$news_strona-5; // Ot obliczenie;)
  $x = ceil($x);
  $dzien = 60*60*24; // Ilość sekund w dniu
  $mysql = mysql_query("select * from `news` limit $x, $news_strona order   by `id` desc"); // Zapytanie do bazy wyciągające z niej newsy od $x   (pobiera ilość: $news_strona)
  while($news = mysql_fetch_array($mysql)){ // Pętla powtarzająca się   $news_strona razy
  $time = time(); // Aktualna data w sekundach od 1970r.
  if(($news['date']+$dzien) <= $time){ // Warunek sprawdzający jak ma być   wyświetlana data
  $data = date("d-m-Y");
  }
  else {
  $data = $time-$news['date'];
  $data = $data/60;
  $data = $data.' minut temu';
  }
  echo $news[1].'

Napisane przez '.$news[2].',   '.$data.''; // Tu ustalacie jak ma być wyświetlany tekst
  }
  $mysql = mysql_query("select * from `news`"); // Zliczanie ilości   newsów
  $ilosc_stron = mysql_num_rows($mysql); // To samo
  $ilosc_stron = ceil($ilosc_stron/$news_strona); // Obliczanie ile jest stron
  for($i=1;$i<=$ilosc_stron;$i++){
  echo "[$i]"; // Tu   ustawcie jak mają być wyświetlane strony
  }
  }
  ?>


Viola! tym razem wszystko zostało napisane w komentarzach.

Zgłoś swój pomysł na artykuł

Więcej w tym dziale Zobacz wszystkie