Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Klasa do obsługi MySql - nie zwraca wynikuz bazy
Forum PHP.pl > Forum > Przedszkole
bartek12421
Zainteresowałem się dziś użyciem klas w skryptach. Do dziś dzień pisałem wszystko jak leciało, a na sam widok klasy słabo mi się robiło. Po kliku artykułach mi się spodobało smile.gif
Wracając do tematu: napisałem klasę obsługującą bazę danych.
Wygląda to tak:

  1. <?php
  2. class mysql{
  3. private $id;
  4. private $host;
  5. private $user;
  6. private $baza;
  7. private $zapytanie;
  8. private $log = array();
  9. private $log_tabela;
  10. function polacz($host, $user, $haslo) {
  11. if($this->id = @mysql_connect($host, $user, $haslo)) {
  12. array_push($this->log, "_OK:Połączono z bazą");
  13. $this->host = $host;
  14. $this->user = $user;
  15. return true;
  16. } else {
  17. array_push($this->log, "_BL:Nie udało się połączyć z bazą<br>". mysql_error());
  18. return false;
  19. }
  20. }
  21. function wybierz($baza) {
  22. if(@mysql_select_db($baza, $this->id)) {
  23. array_push($this->log, "_OK:Wybrano bazę");
  24. $this->baza = $baza;
  25. return true;
  26. } else {
  27. array_push($this->log, "_BL:Nieudało się wybrać bazy<br>". mysql_error());
  28. return false;
  29. }
  30. }
  31. function zapytanie($zapytanie){
  32. if($this->zapytanie = @mysql_query($zapytanie, $this->id)) {
  33. array_push($this->log, "_OK:Wykonano zapytanie ".$zapytanie);
  34. return $this->zapytanie;
  35. } else {
  36. array_push($this->log, "_BL:Nieudało się wykonać zapytania ".$zapytanie."<br>". mysql_error());
  37. return false;
  38. }
  39. }
  40. function do_tablicy($wynik) {
  41. if(mysql_num_rows($wynik)){
  42. $tablica = array();
  43. while ($wiersz = mysql_fetch_array($wynik)) {
  44. array_push($tablica, $wiersz);
  45. }
  46. array_push($this->log, "_OK:Zapisano wyniki w tablicy");
  47. return $tablica;
  48. } else {
  49. return false;
  50. array_push($this->log, "_BL:Nieuadło się zapisać wyników zapytania w tablicy<br>". mysql_error());
  51. }
  52. }
  53. function log(){
  54.  
  55. $this->log_tabela = "<table style='font-size:10px;font-family:Verdana;border-spacing:2px'>";
  56. $this->log_tabela .= "<tr style='background-color:black;color:white'><td>-</td><td>Host: ".$this->host."<br />Użytkownik: ".$this->user."<br />Baza: ".$this->baza."</td></tr>";
  57. for($i=0;$i<=count($this->log);$i++){
  58. $id = $i+1;
  59. if (substr($this->log[$i], 0, 4) == "_OK:") {
  60. $this->log_tabela .= "<tr style='background-color:green;color:white'><td>".$id."</td><td>". substr($this->log[$i], 4, strlen($this->log[$i])) ."</td></tr>";
  61. }
  62. if (substr($this->log[$i], 0, 4) == "_BL:") {
  63. $this->log_tabela .= "<tr style='background-color:red;color:white'><td>".$id."</td><td>". substr($this->log[$i], 4, strlen($this->log[$i])) ."</td></tr>";
  64. }
  65. }
  66. $this->log_tabela .= "</table>";
  67. return $this->log_tabela;
  68. }
  69. function __destruct() {
  70. mysql_close($this->id);
  71. }
  72. }
  73. ?>

Funkcja do_tablicy() zapisuje wiersz z bazy do tablicy. Problem polega na tym, że gdy chcę podejrzeć tan wynik, funkcja zwraca Array
  1. <?php
  2. $zmienna = new mysql;
  3. $zmienna->polacz("localhost","admin","haslo");
  4. $zmienna->wybierz("baza");
  5. $zapytanie = $zmienna->zapytanie("SELECT `tresc` FROM `artykuly` WHERE `tytul` = 'test'");
  6. $y = $zmienna->do_tablicy($zapytanie);
  7. echo $y[0];
  8. ?>

Co zmienić, aby można było wyświetlać wybrany wiersz wyniku?
Z góry dzięki za pomoc smile.gif
smietek
Skoro twoje przykładowe zapytanie to
  1. "SELECT `tresc` FROM `artykuly` WHERE `tytul` = 'test'"
, to tą wartość pobierasz:
  1. echo $y[0]['tresc'];
bartek12421
Dziękuję pięknie, teraz działa.
Czyli w tej funkcji będzie tak, że każdy wiersz w bazy trafi do oddzielnego wiersza w tablicy, a w nim dopiero będzie wiersz z polem z bazy?
Np. $y[wiersz w tablicy][pole z bazy] questionmark.gif
smietek
Tak, zawsze tak jest w kontaktach PHP - MySQL.
Jeśli pobierasz np. wszystkie a nie chcesz ich wszystkich wypisywać, możesz użyć pętli foreach:
  1. foreach($y[0] as $key => $val){
  2. //Tu kod
  3. }
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.