Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] pomoc przy funkcjach
dresik
post 18.06.2008, 20:06:55
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.06.2007
Skąd: Gorlice

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


Witam,
z PHP narazie raczkuje więc prosze o pomoc, próbuje stwrzyć swój własny CMS - przy pomocy róznych książek, i mam taki problem:
W jednej książce są ładnie napisane funkcje do łaczenia się z bazą, wykonanie zapytania, i zwracania wyniku. Tylko jest mały problem bo ten CMS jest troche inaczej zrobiony niż ja chciałbym, więc próbowałem to inaczej zrobić ale nie moge jakoś rozpracować jak działają te funckje.

I tu moja prośba, poniżej wkleje te funkcje - i prosiłbym o podpowiedz jak je wywołać i wyświetlić wyniki zapytania.

  1. <?php
  2.  
  3. function ConnectDB($HostDB,$LoginDB,$PasswordDB)
  4. {
  5. if(mysql_connect($HostDB,$LoginDB,$PasswordDB))
  6. {
  7. return TRUE;
  8. }
  9. else
  10. {
  11. return FALSE;
  12. }
  13. }
  14.  
  15. function SelectDB($NameDB)
  16. {
  17. if(mysql_select_db($NameDB))
  18. {
  19. return TRUE;
  20. }
  21. else
  22. {
  23. return FALSE;
  24. }
  25. }
  26.  
  27. function QueryDB($ZapytanieDoBazy)
  28. {
  29. global $WynikZapytania;
  30.  
  31. $WynikZapytania = mysql_query($ZapytanieDoBazy);
  32.  
  33. if($WynikZapytania)
  34. {
  35. return TRUE;
  36. }
  37. else
  38. {
  39. print("Blad");
  40. return FALSE;
  41. }
  42. }
  43.  
  44. function PokazBlad()
  45. {
  46.  
  47. $Blad['text'] = mysql_error();
  48. $Blad['number'] = mysql_errno();
  49.  
  50. $ErrorDB = 'Nazwa: '.$Blad['text'].' Numer: '.$Blad['number'];
  51.  
  52. return $ErrorDB;
  53. }
  54.  
  55. function QueryResultDB()
  56. {
  57.  
  58. global $WynikZapytania;
  59.  
  60. while($wiersz = mysql_fetch_array($WynikZapytania,MYSQL_ASSOC))
  61. {
  62. $QueryRezultDB[] = $wiersz;
  63. }
  64.  
  65. return $QueryRezultDB;
  66. }
  67.  
  68. function RowsDB()
  69. {
  70. global $WynikZapytania;
  71.  
  72. $RowsDB = mysql_num_rows($WynikZapytania);
  73.  
  74. return $RowsDB;
  75. }
  76.  
  77. ?>




RowsDB = Pobieranie ilości
QueryRezultDB = pobranie wyniku zapytania
QueryDB = wykonanie zapytania


Przykładowe zapytanie:
SELECT * FROM tabela

Przypuścimy ze są trzy kolumny w tej tabeli: Imie, Nazwisko, Wiek.

jak po koleji wywołąć te funkcje oraz jak pobrać i wyświetlić dane z tej tabeli, żeby wyświetliło: Jan Kowalski 30

z góry dziękuje za każdą pomoc!

Ten post edytował dresik 18.06.2008, 20:08:17
Go to the top of the page
+Quote Post
Ociu
post 18.06.2008, 21:30:05
Post #2





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




  1. <?php
  2. function QueryDB($ZapytanieDoBazy)
  3. {
  4.  
  5. $WynikZapytania = mysql_query($ZapytanieDoBazy);
  6.  
  7. if($WynikZapytania)
  8. {
  9. return $WynikZapytania;
  10. }
  11. else
  12. {
  13. print("Blad");
  14. return FALSE;
  15. }
  16. }
  17.  
  18. function QueryResultDB($WynikZapytania)
  19. {
  20.  
  21.  
  22. while($wiersz = mysql_fetch_array($WynikZapytania,MYSQL_ASSOC))
  23. {
  24. $QueryRezultDB[] = $wiersz;
  25. }
  26.  
  27. return $QueryRezultDB;
  28. }
  29. ?>

Te dwie funkcje zrobił bym tak jak wyżej napisałem (analogicznie funkcja RowsDB).

Wywołanie:

  1. <?php
  2. ConnectDB('localhost', 'user', 'pass');
  3. selectDB('test');
  4. $query=QueryDB('SELECT * FROM test');
  5. foreach(QueryResultDB($query) AS $row) {
  6. echo $row['imie'];
  7. }
  8. ?>


Można by się bawić jeszcze w znajdowanie błędów, ale to już prosta sprawa.
pozdrawiam, Wojtek.
Go to the top of the page
+Quote Post
dresik
post 19.06.2008, 10:03:58
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.06.2007
Skąd: Gorlice

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


ok, dzięki wielkie. jutro będe próbował. jak cos to jeszcze będe pisał.
Pozdrawiam

jak moge wywołać funkcje, której nazwa mieście się w zmiennej?

Poniżej jest kod który używam. W zmiennej $page znajduje się nazwa funkcji i niewiem własnie jak ją wywoałać, pomoże ktoś?

  1. <?php
  2. $page = $_GET ['cmd'];
  3. if(!isset($page)){$page="page";}
  4. $page."();";
  5. ?>
Go to the top of the page
+Quote Post
nospor
post 19.06.2008, 10:08:25
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://pl.php.net/manual/en/function.call-user-func.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mike
post 19.06.2008, 10:08:48
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(dresik @ 19.06.2008, 11:03:58 ) *
jak moge wywołać funkcje, której nazwa mieście się w zmiennej?
  1. <?php
  2.  
  3. $nazwa = 'funkcja';
  4.  
  5. function funkcja() {
  6. return 'OK';
  7. }
  8.  
  9. echo $nazwa();
  10.  
  11. ?>

Szczegóły w dokumentacji.
Go to the top of the page
+Quote Post
dresik
post 29.07.2008, 09:19:32
Post #6





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.06.2007
Skąd: Gorlice

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


Cytat(Ociu @ 18.06.2008, 21:30:05 ) *
...
Wywołanie:

  1. <?php
  2. ConnectDB('localhost', 'user', 'pass');
  3. selectDB('test');
  4. $query=QueryDB('SELECT * FROM test');
  5. foreach(QueryResultDB($query) AS $row) {
  6. echo $row['imie'];
  7. }
  8. ?>


...


Jeszcze sie tak zastanawiam, czy dla bezpieczeństwa danych trzeba zamykać połączenie z bazą danych po wykonaniu zapytania?
Jeśli tak to jak zamknąć połączenie które jest wywołane w taki sposób:
ConnectDB('localhost', 'user', 'pass');
Go to the top of the page
+Quote Post
Ociu
post 29.07.2008, 09:38:58
Post #7





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




  1. <?php
  2. function ConnectDB($HostDB,$LoginDB,$PasswordDB)
  3. {
  4. $connection=mysql_connect($HostDB,$LoginDB,$PasswordDB);
  5. if($connection)
  6. {
  7. return $connection;
  8. }
  9. else
  10. {
  11. return FALSE;
  12. }
  13. }
  14.  
  15. $connect=ConnectDB('', '', '');
  16. mysql_close($connect);
  17. ?>
Go to the top of the page
+Quote Post
dresik
post 30.07.2008, 20:19:42
Post #8





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.06.2007
Skąd: Gorlice

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


wywala mi taki bład

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in c:\usr\krasnal\www\praca\logi.php on line 34
Go to the top of the page
+Quote Post
Lars
post 30.07.2008, 20:22:23
Post #9





Grupa: Zarejestrowani
Postów: 279
Pomógł: 15
Dołączył: 29.04.2005
Skąd: Gdynia

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


Cytat(dresik @ 30.07.2008, 21:19:42 ) *
wywala mi taki bład

Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in c:\usr\krasnal\www\praca\logi.php on line 34


1. Sprawdź dane do bazy
2. Krasnal? Zapraszam na www.apachefriends.org
3. Nigdy nie słyszałem, żeby w celu bezpieczeństwa zamykać połączenie po wykonaniu zapytania.
Czyli masz zamiar otwierać je na nowo za każdym razem, gdy chcesz wywołać zapytanie?
Poza tym, gdyby było to niebezpieczne (zostawiać połączenie) - w PHP nie było by funkcji pconnect

Ten post edytował Lars 30.07.2008, 20:25:24


--------------------
(\.../) This is Bunny. Copy and paste bunny into
(O.o) your signature to help him gain world domination.
(> <) Zanim zapytasz | Też się przyda | Pomogłem ci? Kliknij "Pomógł"
Go to the top of the page
+Quote Post
dresik
post 30.07.2008, 22:43:29
Post #10





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.06.2007
Skąd: Gorlice

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


Cytat(Lars @ 30.07.2008, 20:22:23 ) *
1. Sprawdź dane do bazy
2. Krasnal? Zapraszam na www.apachefriends.org
3. Nigdy nie słyszałem, żeby w celu bezpieczeństwa zamykać połączenie po wykonaniu zapytania.
Czyli masz zamiar otwierać je na nowo za każdym razem, gdy chcesz wywołać zapytanie?
Poza tym, gdyby było to niebezpieczne (zostawiać połączenie) - w PHP nie było by funkcji pconnect


1. dane są ok
2. krasnal smile.gif
3. ktoś kiedyś mi mówił zeby po każdym połaczeniu z BD i wykonaniu zapytania zamknać je.

"Czyli masz zamiar otwierać je na nowo za każdym razem, gdy chcesz wywołać zapytanie?"
odp. tak, przed każdym zapytaniem mam:

ConnectDB($HostDB, $LoginDB, $PasswordDB);
SelectDB($NameDB);

a co do funkcji pconnect to niewiem do czego służy, jeśli mógbyś mi to opisać do czego służy i jak działa to byłbym wdzięczny.
Go to the top of the page
+Quote Post
Kicok
post 30.07.2008, 22:57:05
Post #11





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Cytat
3. ktoś kiedyś mi mówił zeby po każdym połaczeniu z BD i wykonaniu zapytania zamknać je.


To źle mówił.


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
dresik
post 3.10.2008, 20:31:06
Post #12





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 12.06.2007
Skąd: Gorlice

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


Jeszcze jedna mała prośba do @Ociu

chce zrobić znajdowanie błedów w tym wyswietlaniu danych oraz jeśli niema danych w bazie to żeby nie wyświetlało warningów.
Próbowałem to zrobić ale jeszcze jestem za słaby w php.

Co w tym trzeba dopisać?

  1. <?php
  2. ConnectDB('localhost', 'user', 'pass');
  3. selectDB('test');
  4. $query=QueryDB('SELECT * FROM test');
  5. foreach(QueryResultDB($query) AS $row) {
  6. echo $row['imie'];
  7. }
  8. ?>


z góry dziekuje za pomoc
Go to the top of the page
+Quote Post
Ociu
post 4.10.2008, 10:55:49
Post #13





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Dopisz sobie funkcję:
  1. <?php
  2. function isResultNotEmpty($strQuery) {
  3. if(mysql_num_rows($strQuery>0) return TRUE; else return FALSE;
  4. }
  5. ?>


i potem:
  1. <?php
  2. ConnectDB('localhost', 'user', 'pass');
  3. selectDB('test');
  4. $query=QueryDB('SELECT * FROM test');
  5. if(isResultNotEmpty($query)) {
  6. foreach(QueryResultDB($query) AS $row) {
  7. echo $row['imie'];
  8. }
  9. }else {
  10. echo "Brak wyników";
  11. }
  12. ?>


pozdrawiam, Wojtek.
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: 18.07.2025 - 02:42