Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stałe połączenie z bazą danych
Forum PHP.pl > Forum > Przedszkole
polibode
Witam

Mam 2 skrypty
W nich obu korzystam z bazy danych.
Skrypt trzeci jest konfiguracyjny, w których odwołuję się do bazy danych i ustanawiam połączenie, tak jak poniżej

config.php
  1. <?
  2. $pub_db_server        = '192.168.2.1';
  3. $pub_db_database    = 'baza_danych';
  4.  
  5. if (isset($_COOKIE["check_login"]))
  6. {    
  7.        $uzytkownik = $_COOKIE["check_login"];
  8.    $haslo = $_COOKIE["check_passwd"];
  9.  
  10.    $conn = mssql_connect($pub_db_server, $uzytkownik, $haslo);
  11.    
  12. //Wybranie bazy
  13.    mssql_select_db('$pub_db_database, $conn);
  14. }
  15. else
  16. header( 'Location: <a href=&#092;"http://192.168.2.1/login_request.php'\" target=\"_blank\">http://192.168.2.1/login_request.php'</a> ) ;
  17. ?>


i teraz w obu skryptach aby np coś pobrać z bazy muszę odwołać się do pliku konfiguracyjnego config.php , aby połączyć się ponownie z bazą i zapodać zapytanie:
np:
  1. <?php
  2. $dostepne_dzialy=mssql_query("select dzial,lpdzial from tabelka kr where kr.[user]='$userr'");
  3. ?>



Moja prośba jest następująca:
Jak zrobić abym nie musiał w obu skryptach ponownie ustanawiać połączenie z bazą danych tylko raz na początku kiedy loguję się do systemu?
Próbowałem coś takiego, kiedy loguję się do systemu:

  1. <?php
  2. require ('config/config.php');
  3.  
  4. $login = $_POST['login'];
  5. $passwd = $_POST['passwd'];
  6.  
  7. setcookie("check_login", $login);
  8. setcookie("check_passwd", $passwd);
  9.  
  10. $dbhandle = @mssql_pconnect($pub_db_server, $login, $passwd)
  11. or die(header('Location: '.$pub_adres_strony.'/login_failed.php'));
  12.  
  13.    $selected = mssql_select_db($pub_db_database, $dbhandle)
  14.  or die(header( 'Location: '.$pub_adres_strony.'/login_failed.php' ));
  15.  
  16.  
  17. header( 'Location: '.$pub_adres_strony.'/menu.php');
  18. ?>


Ale niewiele pomaga, i tak niestety aby coś wyświetlić w tych skryptach nie wystarczy zrobić querry
  1. <?php
  2. $dostepne_dzialy=mssql_query("select dzial,lpdzial from tabelka kr where kr.[user]='$userr'");
  3. ?>

bo system wtedy nic nie wyświetli , muszę odwołąć się do pliku konfiguracyjnego poprzez include ('config.php') i wtedy jest ok
Andaramuxo
Przeciesz przez include Ci działa, to czego chcesz?
polibode
tak , ale jeszcze raz łączy się z bazą danych.
Chciałbym ak zrobić aby tylko raz się łączył po zalogowaniu , a nie za każdym querry.
Chodzi o utrzymanie połączenia z bazą , od momentu zalogowania do systemu do momentu wylogowania.

B
Pilsener
No to po co się łączysz przed każdym query? Sorry, ale nie bardzo rozumiem problem... gdzieś na początku skryptu pobierasz parametry połączenia, łączysz się i połączenie trwa dopóki nie użyjesz mysql_close lub skrypt nie przestanie się wykonywać, w czym problem?
polibode
Nie przeczytałeś dokładnie.

Właśnie problem jest w tym:

Jeśli w skrypcie użyję querry, ale bez odwołania się do pliku konfiguracyjnego to niestety nie "leci" zapytanie.
Dopiero jak odwołam się do pliku konfiguracyjnego to jest ok.

Widocznie nie wystarczy , że raz po zalogowaniu łącze się z bazą.
Zdaje się, że system tak się zachowuje , że nie trzyma tego połaczenia.
W każdym skrypcie , w którym chciałbym coś wyświetlić z bazy, muszę niestety ponownie się z nią połączyć.
Dlatego stworzyłem jeszcze jeden plik config.php , w którym to robię, niestety sad.gif


Podsumowując:
Czy ma ktoś recepte , jak utrzymywać stałe połączenie z bazą, tak aby nie potrzeba było co zapytanie łączyć się z nią ponownie?

B
ernie242
aaa.. do tego to trzeba się zainteresować Programowaniem Obiektowym w PHP i wzorcami projektowymi. W tym przypadku: 'Singleton'. Jak interesuje, poszukaj na google, na forum, znajdziesz.

pozdr smile.gif
  1. //lacz.php
  2.  
  3. <?php
  4. class Baza {
  5. private static $zasob;
  6.  
  7. private function __construct() {
  8. self::$zasob; = mssql_pconnect($pub_db_server, $login, $passwd);
  9. }
  10.  
  11. public static function init()
  12. { if ( empty( self::$zasob) ) {
  13. self::$instance = new Baza();
  14. }
  15. return self::$zasob;
  16. }
  17.  
  18. //innyplik.php
  19. include(lacz.php);
  20. $conn = Baza::init();
  21.  
  22. //Wybranie bazy
  23.    mssql_select_db($pub_db_database, $conn); //itd...
  24. ?>
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.