Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] pomoc przy funkcjach
Forum PHP.pl > Forum > Przedszkole
dresik
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!
Ociu
  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.
dresik
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. ?>
mike
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.
dresik
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');
Ociu
  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. ?>
dresik
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
Lars
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
dresik
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.
Kicok
Cytat
3. ktoś kiedyś mi mówił zeby po każdym połaczeniu z BD i wykonaniu zapytania zamknać je.


To źle mówił.
dresik
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
Ociu
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.
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.