Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL][PHP] Wypisanie rekordów z bazy MySql za pomocą funkcji
Forum PHP.pl > Forum > Przedszkole
Woytek950
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) wstydnis.gif
Quantum
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.  
sadistic_son
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
Quantum
~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.
kajzur
Zrób funkcję jednoargumentową - argument dodaj do zapytanie WHERE i returnem to co wyjdzie i masz smile.gif
Spawnm
Zamykam.
Propozycję sensownego tematu proszę wysłać na priv do mnie lub innego moderatora,
wtedy temat zostanie otarty.

Otwieram.
Woytek950
W końcu byłem zmuszony robić dla każdego rekord inną funkcję. Macie jakieś propozycje?
thek
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 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.
Woytek950
Sorki ale, standarowa moje odpiwedź: mógłbyś wykonać taki skrypt?
Spawnm
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.
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.