Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Zmienna w zmiennej
Buła
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 21.01.2009

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


Witam.

Znów mam problem z PHP.
Wyciągam rekordy z bazy:

  1. $c1_res = mysql_query("SELECT `category_name` FROM lpf_categories WHERE main_category_id='1' ORDER BY category_id ASC");
  2.  
  3. if (mysql_num_rows($c1_res) != 0)
  4. {
  5. while ($cat1_list_data = mysql_fetch_array($c1_res))
  6. {
  7. $cat1_list .= "<option value='".$cat1_list_data['category_id']."' ".$cat1_select."> — ".$cat1_list_data['category_name']."</option>\n";
  8. }
  9. }


Wszystko śmiga, ale problem w tym że muszę dla 10 kategorii wyciągnąć rekordy i gdybym chciał to zrobić znanymi mi sposobami, musiałbym ten skrypt napisać jeszcze 10x i zmienić tylko nazwy zmiennych na kolejne...
Czy mógłbym tak zrobić, że wziąć jeden skrypt w pętle FOR i utworzyć jakby zmienną w zmiennej?

Działałoby to tak, że w pętli byłaby dodatkowa zmienna która za każdym 'okrążeniem' powiększała by się o 1, aż do 10.
Zmienną tą wstawiłbym w te poprzednie zmienne:

$cat{tutaj ta zmienna}_list, $c{tutaj ta zmienna}_res
itp.

Czy można tak wstawić w jedną zmienną drugą, żeby to normalnie działało?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





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




Zrób nieco optymalizacji (IMG:style_emoticons/default/smile.gif) Po co przechowywać wynik dziesięciu zapytań, skoro możesz jednym pobrać wszystko i potem tylko jedna pętla (IMG:style_emoticons/default/winksmiley.jpg)
  1. $lista = array(); //dla 1 i 3 przypadku lub po prostu $lista = '' jeśli to ma być string, czyli przypadek 2
  2. $kategorie = '1,2,3,4,5,6,7,8,9';
  3. $result = mysql_query(' SELECT category_name FROM lpf_categories WHERE main_category_id IN ('.$kategorie.') ORDER BY category_id ASC' );
  4. if( $result && mysql_num_rows( $result ) ) {
  5. while( $row = mysql_fetch_assoc( $result ) ) {
  6. $lista[] = '<option value="'.$row['category_id'].'">'.$row['category_name'].'</option>'; //przypadek 1
  7. //$lista .= '<option value="'.$row['category_id'].'">'.$row['category_name']."</option>\n"; <- jeśli to ciąg - przypadek 2
  8. //$lista[ $row['category_id'] ] = $row['category_name']; <- jeśli tylko wyciągasz id i kategorię do tablicy - przypadek 3
  9. }
  10. }
To czy użyjesz tylko ciągu, tablicy, czy wycąigniesz jedynie do tablicy id i nazwę kategorii a potem podczas robienia całego select uzupełnisz w pętli while brakujące pola to Twój wybór. Jak widzisz możliwości jest minimum 3 (IMG:style_emoticons/default/winksmiley.jpg) a to jakie id pchniesz to Twoja sprawa i jak. Możesz użyć na sztywno w ciągu jak ja, ale rónie dobrze wyciągnąć podzapytaniem w samym SQL. Znów możliwości jest kilka (IMG:style_emoticons/default/smile.gif)


EDIT: Bym zapomniał... Jeśli chcesz wyrzucić powtarzające się ( nie znam truktury bazy więc może się coś powtarzać ) to użyj DISTINCT we właściwym miejscu.

Ten post edytował thek 11.11.2009, 14:30:20
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 12:36