Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [MYSQL][PHP] Wypisanie rekordów z bazy MySql za pomocą funkcji
Woytek950
post
Post #1





Grupa: Zarejestrowani
Postów: 130
Pomógł: 2
Dołączył: 6.06.2008
Skąd: jesteś ?

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


Witam. Chcę aby funkcja info pobirała dane z mysql i aby mozna je było wyświelić:

[PHP] pobierz, plaintext
  1. function Info()
  2. {
  3. ConnectMySql();
  4. $sql = mysql_query("SELECT * FROM config") or die("Nie udało się pobrac danych z bazy MySql !<br />".mysql_error());;
  5. $row = mysql_fetch_array($sql);
  6. $autor = $row['autor'];
  7. $theme = $row['theme'];
  8. $site_name = $row['site_name'];
  9. $keys = $row['keys'];
  10. return $theme;
  11. return $autor;
  12. return $site_name;
  13. return $keys;
  14. }
[PHP] pobierz, plaintext



i jak teraz po koleji zwrócić te wartości?

np. Info($autor) (IMG:style_emoticons/default/wstydnis.gif)
Go to the top of the page
+Quote Post
Quantum
post
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


najlepiej jako tablice

  1.  
  2. function Info($arg)
  3. {
  4. ConnectMySql();
  5. $sql = mysql_query('SELECT * FROM `config` where `cos` = "'.$arg.'"') or die('Nie udało się pobrac danych z bazy MySql !<br />'.mysql_error());
  6. return mysql_fetch_assoc($sql);
  7. }
  8.  
  9. $info = Info('a');
  10.  
  11. foreach($info as $key=>$val)
  12. {
  13. echo $key.'='.$val;
  14. }
  15.  


Ten post edytował sniffer32 23.08.2009, 12:46:44
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Wrzucic do petli while:

  1. while ($row = mysql_fetch_array($sql)) {
  2. $autor = $row['autor'];
  3. $theme = $row['theme'];
  4. $site_name = $row['site_name'];
  5. $keys = $row['keys'];
  6.  
  7. echo "$autor , $theme , $site_name , $kays";
  8. }

Echo wyswietli te wartosci dla wszystkich rekordow
Go to the top of the page
+Quote Post
Quantum
post
Post #4





Grupa: Zarejestrowani
Postów: 450
Pomógł: 84
Dołączył: 27.11.2008
Skąd: Warszawa

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


~sadistic_son twoje rozwiązanie nie jest uniwersalne, jeśli będzie chciał wyświetlić te dane w inny sposób drugiej funkcji tworzyć nie będzie, funkcje mają za zadanie zwracać dane, a nie je echować.

BTW. nie ucz go złych nawyków, apostrofy są szybsze niż cudzysłowy.

Ten post edytował sniffer32 23.08.2009, 12:41:50
Go to the top of the page
+Quote Post
kajzur
post
Post #5





Grupa: Zarejestrowani
Postów: 385
Pomógł: 26
Dołączył: 22.03.2008
Skąd: TM

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


Zrób funkcję jednoargumentową - argument dodaj do zapytanie WHERE i returnem to co wyjdzie i masz (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Spawnm
post
Post #6





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Zamykam.
Propozycję sensownego tematu proszę wysłać na priv do mnie lub innego moderatora,
wtedy temat zostanie otarty.

Otwieram.
Go to the top of the page
+Quote Post
Woytek950
post
Post #7





Grupa: Zarejestrowani
Postów: 130
Pomógł: 2
Dołączył: 6.06.2008
Skąd: jesteś ?

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


W końcu byłem zmuszony robić dla każdego rekord inną funkcję. Macie jakieś propozycje?
Go to the top of the page
+Quote Post
thek
post
Post #8





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Return w funkcji wykonuje się tylko RAZ i od razu po nim wychodzi z funkcji, więc nie można go użyć jako
  1. return x;
  2. return y;
  3. return z;

W takiej sytuacji funkcja zwróci tylko x, bo do innych nawet nie dojdzie. By zwrócić więcej wyników musisz w return zwrócić strukturę, która na to pozwala. Dla php są to Array i Object. I takich też struktur użyj. Sniffer32 już Ci powiedział w tym temacie o tym, ale przemknęło to między innymi postami, z mniej profesjonalnym podejściem do problemu. Wystarczy do return przerzucić wynik z mysql_query zapisany w postaci tablicy (z wygody najlepiej użyć asocjacyjnej, bo wyniki masz w postaci klucz => wartość, a nie liczba => wartość) i gotowe. Zero motania się. A potem już tylko traktuj zmienną do której przypisałeś wartość funkcji jak zwykłą tablicę.
W przypadku gdy masz kilka konfigów, zrób pętlę while i w niej dodawaj kolejne wiersze (de facto to będą tablice asocjacyjne) do tablicy. Tak powstanie tablica tablic (IMG:style_emoticons/default/smile.gif) A taką także możesz returnem zwrócić. Najważniejsze byś wiedział z jakimi danymi masz do czynienia, dlatego wynik sobie potraktuj najlepiej przez print_r, a sam zobaczysz, że się da tak potraktować dane z bazy.

Ten post edytował thek 23.08.2009, 21:28:40
Go to the top of the page
+Quote Post
Woytek950
post
Post #9





Grupa: Zarejestrowani
Postów: 130
Pomógł: 2
Dołączył: 6.06.2008
Skąd: jesteś ?

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


Sorki ale, standarowa moje odpiwedź: mógłbyś wykonać taki skrypt?
Go to the top of the page
+Quote Post
Spawnm
post
Post #10





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Jeśli chcesz aby ktoś ci napisał gotowca, masz dział poszukuję na giełdzie ofert.
Załóż tam temat, napisz ile płacisz itp.
Temat zamykam bo nie prosisz już o pomoc tylko gotowca.
Go to the top of the page
+Quote Post

Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 00:31