Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PostgreSQL][PHP] prosty skryp, ale nie działa.
Forum PHP.pl > Forum > Przedszkole
zagex
Witam. Mówiąc szczerze swoją prace z Postgre oraz PHP zacząłem dopiero dzisiaj, ale od razu wskoczyłem na głęboką wodę (przynajmniej porównując do moich umiejętności).
Mój problem polega na tym, że poniższy kod nie zwraca niczego- generuje pustą stronę.
(pozwoliłem sobie ukryć dane do logowania smile.gif )
  1. <?php
  2. // Nawiązanie połączenia, wybór bazy danych
  3. $dbconn = pg_connect("host=*** port=5432 dbname=gis user=*** password=***")
  4. or die('Nie można nawiązać połączenia: ' . pg_last_error());
  5.  
  6. // Wykonanie zapytania SQL
  7. $query = 'SELECT * FROM "Wojewodztwo"';
  8. $result = pg_query($query) or die('Nieprawidłowe zapytanie: ' . pg_last_error());
  9.  
  10. // Wyświetlenie wyników w postaci HTML
  11. echo "<table>\n";
  12. while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
  13. echo "\t<tr>\n";
  14. foreach ($line as $col_value) {
  15. echo "\t\t<td>$col_value</td>\n";
  16. }
  17. echo "\t</tr>\n";
  18. }
  19. echo "</table>\n";
  20.  
  21. // Zwolnienie zasobów wyniku zapytania
  22. pg_free_result($result);
  23.  
  24. // Zamknięcie połączenia
  25. pg_close($dbconn);
  26. ?>


Czy oznacza to, że mam wprowadzone błędne dane do logowania do bazy, czy mam szukać błędu gdzieś indziej?
Daimos
Raczej byś miał wyświetlony błąd z połączeniem, w końcu masz tam or die(). Włączone masz błędy na serwerze? Daj na początku error_reporting(E_ALL);
Albo try{}catch{} wink.gif
zagex
Po wstawieniu generuje to błąd:
Fatal error: Call to undefined function pg_connect() in /virtual/stronanastudia.cba.pl/abc.php on line 4
zagex
Jeżeli dobrze zrozumiałem to muszę na serwer cba dograć plik php.ini i odblokowanymi: extension=php_pdo_pgsql.dll oraz extension=php_pgsql.dll. Sprawdziłem to jeszcze
  1. echo extension_loaded('pgsql') ? 'yes':'no';
, które niestety zwraca "no". Co jeszcze mogę zrobić?

Nie wspomniałem o tym wcześniej, ale baza danych znajduję się na innym komputerze z postawionym no-ip, a strona jest narazie stawiana w serwisie cba.pl, ale to chyba nie generuje dodatkowych problemów?
Daimos
cba to chyba darmowy hosting z tego co pamiętam, więc raczej generuje problem wink.gif Bo chyba żaden darmowy hosting nie da Ci możliwości modyfikowania php.ini i włączania/instalacji rozszerzeń PHP.
zagex
Dziękuje wszystkim za dotychczasową pomoc. Postawiłem serwer na swoim kompie i ruszyło, ale napotkałem na kolejny problem, którego nawet nie wiem jak mogę opisać w google...
Sprawa wygląda tak, że napisałem wyszukiwarkę, która przeszukuje bazę miejscowości, ale nie wiadomo czemu działa ona selektywnie. Wpisując miejscowość 'Beskid' do kodu:
  1. select (m.id_m, m.nazwa, m.typ_m, m.teryt_sym, m.teryt_sympod, g.nazwa, p.nazwa , w.nazwa) as dane from "Miejscowosc" m,"Wojewodztwo" w,"Gmina" g, "Powiat" p
  2. where w.id_woj=m.id_m and g.id_gm=m.id_m and p.id_pow=m.id_m and m.nazwa = \''.$_POST['zmienna1'].'\';';

wszystko działa jak należy, natomiast dla miejscowości 'Wrocław' już nie (wpisując bezpośrednio zapytanie do bazy oba rekordy są odnajdywane)

Jeszcze jedno pytanie. Jest inny sposób dokonywania złączeń tabel? bez tego nawiasu zwraca mi tylko wartości tabeli która jest dołączana jako ostatnia, natomiast z nim niszczy mi to wyświetlanie w tabeli html.
mmmmmmm
1. postgreSQL jerst Case Sensitive, więc Wrocław może znaleźć, a WROCŁAW nie.
2. sprawdź kodowanie - musisz mieć takie samo dla www i bazy
3. łączenie to JOIN, a nie WHERE. WHERE, to stara szkoła (niekoniecznie dobra, bo nie można zrobić LEFT)
4. Na pewno masz dobre warunki połączeniowe we WHERE?
zagex
3. Zmieniłem na join
4. Masz racje, błędny był warunek łączenia tabel

Wszystko już działa jak należy. Jeszcze raz dzięki smile.gif
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.