Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] użycie funkcji w funkcji
ensim
post 14.01.2010, 21:14:00
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 28.01.2004

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


Cześć mam pytanko,
posiadam takie 3 funkcje:

Kod
function sqlConnect() {
   global $sqlUsername, $sqlPassword, $sqlDatabase, $sqlHostname, $sqlConnection;
    
    $sqlConnection = mysql_connect($sqlHostname, $sqlUsername, $sqlPassword);
    mysql_select_db($sqlDatabase, $sqlConnection);
}

function sqlDisconnect() {
   global $sqlConnection;
    
    mysql_close($sqlConnection);
}

/* FUNKCJE WERYFIKUJĄCE */
function validateUsername($username) {
   $errorBitrate = 0;
      if (empty($username)) { $errorBitrate++; }
        if (!eregi("^[a-z0-9]{6,12}$", $username)) { $errorBitrate++; }
        if ($errorBitrate == 0) {
           $sqlQuery = ("SELECT * FROM tblClients WHERE clUsername=\"$username\"");
            $sqlCount = mysql_num_rows($sqlQuery);
            if ($sqlCount != 0) { $errorBitrate++; }
        }
    
    if ($errorBitrate != 0) { echo 'error'; }
    else { echo 'ok'; }
}


nie wiem teraz w jaki sposób zmusić funkcję validateUsername() do tego żeby skorzystała z już istniejącego połączenia SQL. Ale dziwne jest także to, że jeżeli dam sqlConnect() przed zapytaniem sql i sqlDisconnect() po $sqlCount to i tak dostaję błąd mimo że wysłana nazwa użytkownika nie istnieje w bazie. Tak jakby coś było nie tak z połączeniem.

Ten post edytował ensim 14.01.2010, 21:14:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
no_face
post 14.01.2010, 21:27:05
Post #2





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Zrob global wskaznika polaczenia lub po prostu przekaz w parametrze funkcji.

Ten post edytował no_face 14.01.2010, 21:27:27
Go to the top of the page
+Quote Post
Burned
post 14.01.2010, 22:03:45
Post #3





Grupa: Zarejestrowani
Postów: 67
Pomógł: 8
Dołączył: 19.05.2004
Skąd: Warszawa

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


Co ma na celu ten kawałek?
  1. <?php
  2. function sqlDisconnect() {
  3. global $sqlConnection;
  4.  
  5. mysql_close($sqlConnection);
  6. }
  7. ?>

Go to the top of the page
+Quote Post
no_face
post 14.01.2010, 22:13:08
Post #4





Grupa: Zarejestrowani
Postów: 346
Pomógł: 23
Dołączył: 28.11.2004

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


Ten kawalek sluzy do zlglobalowania wskaznika w tej funkcj w ktorej wystepuje, a chcesz wykorzystac polaczenie z baza w validateUsername()
Go to the top of the page
+Quote Post
Burned
post 14.01.2010, 23:04:09
Post #5





Grupa: Zarejestrowani
Postów: 67
Pomógł: 8
Dołączył: 19.05.2004
Skąd: Warszawa

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


Miałem raczej na myśli to, że jest to niepotrzebne powielanie funkcji. W czym złe było samo mysql_close, żeby obudowywać je w funkcję w taki sposób?
Go to the top of the page
+Quote Post
ensim
post 15.01.2010, 08:44:55
Post #6





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 28.01.2004

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


ma na celu to żeby naprzykład jak na stronie potrzebuję w różnych momentach zrobić z 50 różnych zapytań to żeby utrzymać połączenie a nie robić sztucznego tłumu i obciążać serwera sql.
Go to the top of the page
+Quote Post
darko
post 15.01.2010, 09:06:47
Post #7





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


  1. // 1. nowa funkcja
  2. function sqlQuery($sql_query, $sqlConnection) {
  3. return mysql_query($sql_query, $sqlConnection);
  4. }
  5.  
  6. // 2. zmiana:
  7. function validateUsername($username, $db_resource) {
  8. // (...)
  9. if(is_resource($db_resource)) {
  10. $sqlQuery = "SELECT * FROM tblClients WHERE clUsername='".$username."'";
  11. $sqlCount = mysql_num_rows(sqlQuery($sqlQuery, $db_resource));
  12. } else {
  13. die('nieprawidłowy zasób połączenia z bazą danych');
  14. }
  15. // (...)
  16. }
  17. // 3. zmiana:
  18. function sqlConnect($sqlUsername, $sqlPassword, $sqlDatabase, $sqlHostname) {
  19. // global $sqlUsername, $sqlPassword, $sqlDatabase, $sqlHostname, $sqlConnection;
  20. $sqlConnection = mysql_connect($sqlHostname, $sqlUsername, $sqlPassword);
  21. if(mysql_select_db($sqlDatabase, $sqlConnection))
  22. return $sqlConnection;
  23. else
  24. return false;
  25. }
  26. // 4. zmiana:
  27. function sqlDisconnect($sqlConnection) {
  28. if(is_resource($sqlConnection))
  29. return mysql_close($sqlConnection);
  30. else
  31. return false;
  32. }
  33. // Teraz tylko odpowiednio wywołać.


Ten post edytował darko 15.01.2010, 09:08:33


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
ensim
post 15.01.2010, 17:07:41
Post #8





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 28.01.2004

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


Chłopaki dzięki wielkie za pomoc, darko dzięki wdrożyłem twoje rozwiązanie, jednakże błąd mojego kodu polegał na literówce i pośpiechu zapomniałem dać mysql_query :-/

Mam jeszcze taki mały problem, dokladnie ten sam kod - tylko na dwóch różnych stronach:

!eregi("^[+][0-9]{1,3}[.][0-9]{9}$", $phone)

a jak wpisze ten numer +48.662663664 to na jednej stronie pokazuje ze numer nie pasuje do wzorca, w drugiej ze tak :/
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:48