Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Classa błąd z połączeniem
arzach
post
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Witam mam taką classe i nie chce mi się połączyć z bazą danych. W pliku config.php podałem poprawne dane do bazy. Wie ktoś co może być nie tak ?

  1. <?php
  2. // uruchamia plik konfiguracyjny
  3. require_once('config.php');
  4. // uruchamia obsĹ_ugÄ_ bĹ_Ä_dĂłw
  5. require_once('error_handler.php');
  6. // klasa zawierajÄ_ca funkcjonalnoĹ_ci strony serwera
  7. class Chat
  8. {
  9.  // obsĹ_uguje bazÄ_ danych
  10.  private $mMysqli;  
  11.  // konstruktor otwiera poĹ_Ä_czenie z bazÄ_ danych
  12.  function __construct()
  13.  {  
  14.    // Ĺ_Ä_czy siÄ_ z bazÄ_
  15.    $this->mMysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
  16.  }
  17.  // destruktor zamyka poĹ_Ä_czenie z bazÄ_
  18.  public function __destruct()
  19.  {
  20.    $this->mMysqli->close();
  21.  }
  22.  // kasuje zawartoĹ_Ä_ tabeli zawierajÄ_cej wiadomoĹ_ci
  23.  public function deleteMessages()
  24.  {
  25.    // tworzy zapytanie SQL, ktĂłre dodaje nowÄ_ wiadomoĹ_Ä_ do serwera
  26.    $query = 'TRUNCATE TABLE chat';
  27.    // wykonuje zapytanie SQL
  28.    $result = $this->mMysqli->query($query);      
  29.  }
  30.  /*
  31.    Metoda postMessages dodaje nowÄ_ wiadomoĹ_Ä_ do bazy
  32.    - $name odpowiada nazwie uĹźytkownika wysĹ_anej wiadomoĹ_ci
  33.    - $messsage to wysĹ_ana wiadomoĹ_Ä_
  34.    - $color zawiera parametry koloru wybranego przez uĹźytkownika
  35.   */
  36.  public function postMessage($name, $message, $color)
  37.  {  
  38.    // usuwa znaki specjalne przez dodaniem wiadomoĹ_ci do bazy
  39.    $name = $this->mMysqli->real_escape_string($name);
  40.    $message = $this->mMysqli->real_escape_string($message);
  41.    $color = $this->mMysqli->real_escape_string($color);
  42.    // tworzy zapytanie SQL, ktĂłre dodaje nowÄ_ wiadomoĹ_Ä_ do serwera
  43.    $query = 'INSERT INTO chat(posted_on, user_name, message, color) ' .
  44.      'VALUES (NOW(), "' . $name . '" , "' . $message . '","' . $color . '")';
  45.    // wykonuje zapytanie SQL
  46.    $result = $this->mMysqli->query($query);      
  47.  }
  48.  /*
  49.    Metoda retrieveMessages pobiera wiadomoĹ_ci, ktĂłre zostaĹ_y wysĹ_ane na serwer
  50.    - parametr $id jest wysyĹ_any przez klienta i odpowiada identyfikatorowi ostatniej wiadomoĹ_ci pobranej przez niego.
  51.        WiadomoĹ_ci o późniejszych id bÄ_dÄ_ pobrane z serwera i wysĹ_ane klientowi w formacie XML
  52.   */
  53.  public function retrieveNewMessages($id=0)
  54.  {
  55.    // usuwa znaki specjalne przez dodaniem wiadomoĹ_ci do bazy
  56.    $id = $this->mMysqli->real_escape_string($id);
  57.    // tworzy zapytanie SQL, ktĂłre pobiera wiadomoĹ_Ä_ do serwera
  58.    if($id>0)
  59.    {
  60.      // pobiera wiadomoĹ_ci Ĺ_wieĹźsze niĹź te o danym $id
  61.      $query = 'SELECT chat_id, user_name, message, color, ' .
  62.        'DATE_FORMAT(posted_on, "%Y-%m-%d %H:%i:%s") ' . 'AS posted_on ' .
  63.          'FROM chat WHERE chat_id > ' . $id . ' ORDER BY chat_id ASC';
  64.    }
  65.    else
  66.    {
  67.      // przy pierwszym uruchomieniu wyĹ_wietla ostatnich 50 wiadomoĹ_ci z serwera
  68.      $query =
  69.      'SELECT chat_id, user_name, message, color, posted_on FROM ' .
  70.        '(SELECT chat_id, user_name, message, color, ' .
  71.        'DATE_FORMAT(posted_on, "%Y-%m-%d %H:%i:%s") AS posted_on ' . 'FROM chat ' .
  72.        'ORDER BY chat_id DESC ' . 'LIMIT 50) AS Last50 ' . 'ORDER BY chat_id ASC';
  73.    }
  74.    // wykonuje zapytanie
  75.    $result = $this->mMysqli->query($query);  
  76.    // tworzy odpowiedĹş XML
  77.    $response = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
  78.    $response .= '<response>';  
  79.    // wysyĹ_a czystÄ_ flagÄ_
  80.    $response .= $this->isDatabaseCleared($id);
  81.    // sprawdza czy jest odpowiedĹş
  82.    if($result->num_rows)
  83.    {      
  84.       // przeglÄ_da w pÄ_tli wszystkie przechwycone wiadomoĹ_ci, aby stworzyÄ_ wiadomoĹ_Ä_ wynikowÄ_
  85.        while ($row = $result->fetch_array(MYSQLI_ASSOC))
  86.        {
  87.              $id = $row['chat_id'];
  88.              $color = htmlspecialchars ($row['color']);
  89.              $userName = htmlspecialchars ($row['user_name']);
  90.              $time = htmlspecialchars ($row['posted_on']);
  91.              $message = htmlspecialchars ($row['message']);
  92.              $response .= '<id>' . $id . '</id>' .
  93.              '<color><![CDATA[' . $color . ']]></color>' .
  94.              '<time>' . $time . '</time>' .
  95.              '<name><![CDATA[' . $userName . ']]></name>' .
  96.              '<message><![CDATA[' . $message . ']]></message>';
  97.        }
  98.      // zamyka poĹ_Ä_czenie z bazÄ_, jak szybko jest to moĹźliwe
  99.      $result->close();
  100.    }
  101.    // koĹ_czy odpowiedĹş XML i wysyĹ_a jÄ_
  102.    $response = $response . '</response>';
  103.    return $response;    
  104.  }
  105.  /*
  106.    Metoda isDatabaseCleared sprawdza, czy baza zostaĹ_a wyczyszczona od ostatniego wywoĹ_ania serwera
  107.         -   parametr $id zawiera identyfikator ostatniej wiadomoĹ_ci pobranej rpzez klienta
  108.   */
  109.  private function isDatabaseCleared($id)
  110.  {
  111.    if($id>0)
  112.    {
  113.      //sprawdzenie liczby wierszy o id mniejszym niĹź uzyskany od klienta  mĂłwi nam, czy baza byĹ_a ostatnio czyszczona
  114.      $check_clear = 'SELECT count(*) old FROM chat where chat_id<=' . $id;
  115.      $result = $this->mMysqli->query($check_clear);
  116.      $row = $result->fetch_array(MYSQLI_ASSOC);      
  117.            
  118.      // jeĹ_li baza byĹ_a czyszczona, tablica musi byÄ_ przeĹ_adowana
  119.      if($row['old']==0)
  120.        return '<clear>true</clear>';    
  121.    }
  122.    return '<clear>false</clear>';
  123.  }
  124. }
  125. ?>


Ten post edytował erix 17.01.2009, 16:00:15
Powód edycji: dodałem tag tematu
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 00:43