Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wyświetlaniem danych z bazy
Forum PHP.pl > Forum > PHP
adamski9000
Witam

Mam dziwny problem z połączeniem z bazą. Na localhost wszystko działa bez zarzutu, jednak po wrzuceniu skryptówna server skrypt nie wyświetla danych z bazy. Niestety nie wyswietlają się też żadne błędy więc nie mogę zlokalizować błędu. Hasło, host, i użytkownik jest poprawne, gdyż testowy skrypt bez obiektów i w jednym pliku działa poprawnie.
W sytuacji gdy ustawię dostęp do bazy w jednym pliku i bez obiektów, wszystko działa jak należy.
W sytuacji, gdy ustawię połączenie z bazą w obiekcie i przerzucę do katalogu /inc wtedy już połączenie z bazą nie działa.
Niestety nie mam pojęcia jak rozwiązać ten problem, gdyż nie wiem jaki wyświetlany jest błąd. Z racji, iż serwer jest z hostingu ustawienie display_errors=on w php.ini raczej nie wchodzi w grę. Uprawnienia katalogu /inc - to 755 a pliki *.inc to 644.

klasa z połączeniem do bazy:
  1. class cls_db_mysql
  2. {
  3. private $host="localhost"; //adres servera
  4. private $uzytkownik="admin"; //nazwa uzytkownika
  5. private $nazwa_bazy_danych="db";
  6. private $haslo="mojehaslo";
  7. private $polaczenie; //id polaczenia
  8.  
  9. private function polacz()
  10. {
  11. $link = mysql_connect( $this->host, $this->uzytkownik, $this->haslo ); //polaczenie z serverem
  12. if ( $link==TRUE )
  13. {
  14. if ( mysql_select_db($this->nazwa_bazy_danych, $link))
  15. {
  16. return $this->polaczenie = $link;
  17. }
  18.  
  19. }
  20. }
  21.  
  22. public function Query($zapytanie1)
  23. {
  24. $this->polacz();
  25. $wynik = mysql_query($zapytanie1, $this->polaczenie); //wys│anie zapytania do bazy
  26. if ( !$wynik ) //gdy blad w zapytaniu
  27. {
  28. echo '<TABLE border=1 bgcolor="red"><TR><TD>';
  29. echo '<BR><div style="font-family:Verdana,Tahoma;color:white;font-weight:bold">BúíD zapytania SQL !<BR>Opis problemu: -> '. $this->pokaz_blad() .'</div><BR>';
  30. echo '</TD></TR></TABLE>';
  31. exit; //zamyka aplikacje
  32. }
  33. else
  34. {
  35. return $wynik;
  36. }
  37. }
  38.  
  39. private function pokaz_blad()
  40. {
  41. $error = @mysql_error($this->polaczenie); //zwraca komunikat o blŕdzie
  42. return $error;
  43. }
  44.  
  45. public function blad_polaczenia( $e )
  46. {
  47. echo '<span class="blad">Blad prz polaczeniu z baza danych. Opis -> '.$e.' </span>';
  48. }
  49.  
  50. }


skrypt:
  1. $path = "inc/";
  2. require_once($path."cls_db_mySQL.inc");
  3. $db = new cls_db_mysql;
  4. $wynik = $db->Query("SELECT * FROM SMSY");
  5. if($wynik)
  6. {
  7. if(mysql_num_rows($wynik)>0)
  8. {
  9. while ($row = mysql_fetch_array($wynik))
  10. {
  11. print_r($row);
  12. }
  13. }
  14. else echo 'Brak wynikow !';
  15. }
  16. else echo "polaczenie - error";
  17.  



Natomiast poniższy skrypt umieszczony w jednym pliku działa prawidłowo:

$
  1. host="localhost"; //adres servera
  2. $uzytkownik="admin"; //nazwa uzytkownika
  3. $nazwa_bazy_danych="db";
  4. $haslo=mojehaslo";
  5.  
  6. $link = mysql_connect( $host, $uzytkownik, $haslo ); //polaczenie z serverem
  7. if ( $link==TRUE )
  8. {
  9. if ( mysql_select_db($nazwa_bazy_danych, $link))
  10. {
  11. $wynik = mysql_query("SELECT * FROM SMSY", $link); //wys│anie zapytania do bazy
  12. if ( $wynik )
  13. {
  14. if(mysql_num_rows($wynik)>0)
  15. {
  16. while ($row = mysql_fetch_array($wynik))
  17. {
  18. print_r($row);
  19. }
  20. }
  21. else echo 'Brak wynikow !';
  22. }
  23. else echo 'polaczenie error';
  24. }
  25.  
  26. }




Ma ktoś pomysł, gdzie może być problem ?



pozdrawiam
Adam
zaajcu
daj zamiast require_once include ja miałem takie problemy jak stosowałem include_once
r4xz
Cytat(zaajcu @ 28.01.2012, 00:22:37 ) *
daj zamiast require_once include ja miałem takie problemy jak stosowałem include_once


ale nie po to jest require, require_once, include i include_once żeby stosować dowolnie. w powyższym przypadku akurat require_once jest najbardziej odpowiedni.

@adamski9000, pokaż jakie błędy ci 'pluje'.
czemu ta klasa nie ma rozszerzenia php?
  1. require_once($path."cls_db_mySQL.inc");
adamski9000
Rzeczywiście trochę pomogło. Przynajmniej wyrzuca jakieś błędy.
  1. Warning: include_once(inc/cls_db_mySQL.inc) [function.include-once]: failed to open stream: No such file or directory in /home/momomo/domains/mojadomena.pl/public_html/test1.php on line 61
  2.  
  3. Warning: include_once() [function.include]: Failed opening 'inc/cls_db_mySQL.inc' for inclusion (include_path='.:/usr/local/php5/lib/php') in /home/mojadomena/domains/mojadomena.pl/public_html/test1.php on line 61
  4.  
  5. Fatal error: Class 'cls_db_mysql' not found in /home/mojadomena/domains/mojadomena.pl/public_html/test1.php on line 62


Przy require_once - nic się nie wyświetlało, ekran czysty.

Przy include_once - wyświetla błędy powyżej. Czyli jakiś błąd z dostępem do katalogu lub pliku. Doprawdy nie wiem o co chodzi. Zmieniłem uprawnienia z 755 na 644 i różne kombinacje ale efekt ten sam. Ścieżka ustawiona poprawnie inc/cls_db_mySQL.inc. Plik z klasą cls_db_mySQL.inc' jest w katalogu inc.
IceManSpy
Przecież dostajesz jasny komunikat, że nie może znaleźć takiego pliku. Nie jest problem w uprawnieniach tylko, że go skrypt nie widzi. Podaj całą strukturę folderów jaką masz na serwerze (dla aplikacji).
adamski9000
W końcu udało się. Ustawiłem pełną ścieżkę, zmieniłem pliki inc na php i Wreszcie działa. Dzięki wszystkim za pomoc.

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.