![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 168 Pomógł: 1 Dołączył: 19.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Nie jestem w stanie poradzić sobie sam z moim problem. Przestudiowałem manual tutaj ale niestety nie ruszyłem z miejsca. Chodzi mi o taką rzecz: Pobieram dane z bazy danych.
I teraz chcę to wyświetlić. Problem w tym, że w zależności od ilości zwróconych rekordów chcę mieć albo zwykłą tablicę, w przypadku znalezienia jednego rekordu, albo tablicę numeryczną. Kod wygląda w skrócie tak:
Powyższy kod jest ok, jeśli mam 1 rekord znaleziony. Jeśli jednak jest więcej rekordów to chciałbym zamiast $h mieć $h[$row['nr]]['nr], $h[$row['nr]]['organizacja'] itd. Ja zrobić żeby zastąpić to $h - w przypadku wystąpienia więcej niż jednego rekordu $h[$row['nr']]. Wiem, że mogę zrobić oddzielnie przypisane wartości jeśli znaleziono 1 rekord i oddzielnie jeśli więcej ale tych pól jest naprawdę sporo i nie ma sensu dublować kodu. Próbowałem na różne sposoby: i inne ale bez skutku. Ten post edytował MalyKazio 2.12.2008, 22:52:53 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 225 Pomógł: 18 Dołączył: 30.06.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Hmmm pobrałeś już ile masz wierszy wyniku i teraz np:
No a teraz kilka spraw: 1. "Normalna" tablica to w tablica indeksowana numerami (w większości języków programowania). 2. Zainteresuj się lepiej pdo, albo chociaż mysqli (dla MySQL >=4.1) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 168 Pomógł: 1 Dołączył: 19.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie za bardzo tak mogę zrobić. Po pierwsze nie wszystkie zwracane w tablicy wartości odpowiadają tym z tabeli w bazie danych, np:
$h['nazwa']=przygotujtekst($row['nazwa); albo $h['costam']=$row['costam']*2 itp, itd. dlatego nie mogę wykorzystać czegoś w rodzaju: $return[$data['nr']] = $data; Dlatego potrzebuję takiego cuda, które zwróci mi tablicę w postaci: $h['nazwa']=przygotujtekst($row['nazwa']) - i inne pola podobnie - w przypadku gdy jest tylko jeden pobrany rekord. Zaś w postaci: $h[$row['nr]]['nazwa']=przygotujtekst($row['nazwa']) - jeśli pobranych rekordów będzie więcej. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 32 Dołączył: 14.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 168 Pomógł: 1 Dołączył: 19.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście, tak można zrobić. Tylko przy 50 polach kod trochę się rozstrasta a przy zastosowaniu zmiennej zmiennej, której nie udaje mi się stworzyć tylko raz bym musiał to wpisywać a zatem kod byłby o połowę któtszy.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 230 Pomógł: 27 Dołączył: 27.05.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem co kombinujesz ale może to Ci pomoże:
Po krótce $row['id'] reprezentuje Ci unikalny numer rekordu (więc nie powinien się powtarzać). W przypadku gdy będzie jeden rekord znaleziony to zwróci Ci tablice w postaci: $h[0]['nr'] , $h[0]['organizacja'] itd... Natomiast gdy znajdzie kilka rekordów to zwróci Ci tablicę w postaci: $h[nr_id]['organizacja'], $h[nr_id]['nr'] gdzie nr_id jest to ten klucz jaki wpisałeś tworząc tablicę czyli $row['id']. Co ciekawsze jeśli nie będzie istniało $h[0] znaczy, że znalazło więcej wartości bo numery id masz przydzielane od 1 w góre. To chyba pomoże. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 168 Pomógł: 1 Dołączył: 19.11.2005 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko jasne, tylko że w przypadku gdy jest jeden rekord w wynik ma być $h['nr'], $h[''organizacja'], a gdy jest więcej ma być $h['nr']['nr'], $h['nr']['organizacja'] itd. Nie wiem jak dodać ten jeden dodatkowy indeks w przypadku gdy jest więcej rekordów. Kombinuję ze zmiennymi nazwami zmiennych, tak żeby w przypadku kilku rekordów zamiast $h podstawiało mi $h['nr'] ale mi nie wychodzi.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
To ja Ci powiem coś, o czym (wydaje mi się) nie wiesz.
$h - zmienna i nazwie 'h' $h['dupa'] - zmienna typu tablicowego o nazwie 'h' To, co Ty napisałeś, to nie zmiana nazwy zmiennej, ale jej typu. Wyżej masz podane dobre przykłady. Wystarczy trochę wyobraźni i dobrych chęci. Argument o 50 polach mnie nie przekonuje - od tego są pętle. Zresztą jak zrobisz to w inny sposób to również musisz napisać które pole z tych 50 mnożysz przez 18, a które traktujesz funkcją przygotuj(), więc na jedno wychodzi. Bez urazy, ale tak btw - jak się nie zaplanuje pisana aplikacji przed jej pisaniem, to później się kombinuje tak jak Ty teraz. Ten post edytował sowiq 3.12.2008, 21:43:59 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 13:39 |