Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> tablica jako wynik działania funkcji, mysql i php
sumar
post 2.08.2004, 10:29:47
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 31.01.2004

Ostrzeżenie: (20%)
X----


Witam

Czy ktoś wie jak w wyniku działania tej funkcji otrzymać tablicę.

Bo teraz w wyniku jej działa otrzymuje ciąg np:
14,15,16,17,18,39,40,41,39

I wszystko było by fajnie gdyby zamienić "echo" na coś w wyniku czego otrzymał bym tablice.

  1. <?php
  2. function cat_array($kategoria){
  3. $db = mysql_query(&#092;"SELECT ID FROM cat WHERE IDpar='$kategoria'\");
  4. $numrows = mysql_num_rows($db);
  5. if ($numrows > 0) {
  6. while ($row = mysql_fetch_row($db)) {
  7. $sql= $row[0];
  8. echo&#092;"$sql,\";
  9. cat_array($row['0']);
  10. }
  11. }
  12. return $sql;
  13. }
  14. ?>


Chodzi oto żeby dało się zrobić zapytanie do bazy danych postaci

Cat=14 OR Cat=15 OR Cat=16 OR Cat=17 OR Cat=17 .... OR Cat=39

  1. <?php
  2.  
  3. $tablica = cat_array($kategoria);
  4.  
  5. $sql=explode(&#092;",\"$sql);
  6.  
  7. $sql=implode(&#092;" OR \",$sql);
  8.  
  9.  
  10. ?>
Go to the top of the page
+Quote Post
FiDO
post 2.08.2004, 11:01:17
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Ale przeciez warunek postaci "Cat = 1 OR Cat = 2 OR ..." mozesz zamienic na duzo krotszy: "Cat IN (1,2,3,4,...)". Numery w tym formacie juz masz, wiec nic nie musisz zmieniac.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
sumar
post 2.08.2004, 11:30:37
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 31.01.2004

Ostrzeżenie: (20%)
X----


Tzn. mam ale one są wypisywane przez "echo", a żeby zastosować je do zmiennej musze je wyciągnąć jako ciąg.
  1. <?php
  2.  
  3. $sql= cat_array($kategoria); // 
  4.  
  5. Cat IN ($sql)
  6.  
  7.  
  8.  
  9. ?>
Go to the top of the page
+Quote Post
rogrog
post 2.08.2004, 11:56:27
Post #4





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


no to np.

  1. <?php
  2. function cat_array($kategoria){
  3.  
  4.  $wynik = Array(); 
  5.  
  6. $db = mysql_query(&#092;"SELECT ID FROM cat WHERE IDpar='$kategoria'\");
  7. $numrows = mysql_num_rows($db);
  8. if ($numrows > 0) {
  9. while ($row = mysql_fetch_row($db)) {
  10.  $sql = $row[0];
  11. $wynik[] = $sql;
  12. cat_array($row['0']);
  13. }
  14. }
  15. return $wynik;
  16. }
  17. ?>

i wywala ci tablice...


--------------------
Go to the top of the page
+Quote Post
sumar
post 2.08.2004, 12:15:11
Post #5





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 31.01.2004

Ostrzeżenie: (20%)
X----


Zrobiłem już. Jak by komuś się przydało to zamieszczam funkcję:

I dzięki FiDO za sugestię z Cat IN

  1. <?php
  2.  
  3.  
  4. function all_cat($kategoria, $sql){
  5. $sql.= &#092;"$kategoria,\";
  6. $db = mysql_query(&#092;"SELECT ID FROM cat WHERE IDpar='$kategoria'\");
  7. $numrows = mysql_num_rows($db);
  8. if ($numrows > 0) {
  9. while ($row = mysql_fetch_row($db)) {
  10. $idw = $row[0];
  11. $sql= all_cat($row['0'], $sql);
  12. }
  13. }
  14. return $sql;
  15. }
  16.  
  17.  
  18. $IDallcat= all_cat($id, $sql);
  19. $len = strlen($IDallcat);
  20. $categories = substr($IDallcat, 0, $len-1);
  21.  
  22. // uproszczone zapytanie
  23. $query = mysql_query(&#092;"SELECT * FROM $table_store WHERE IDcat IN ($categories) LIMIT $od, 20\");
  24.  
  25.  
  26. ?>


  1. #
  2. # Struktura tabeli dla `cat`
  3. #
  4.  
  5. CREATE TABLE cat (
  6. ID int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  7. IDpar int(11) DEFAULT '0',
  8. Name char(35) DEFAULT NULL,
  9. PRIMARY KEY (ID)
  10. ) TYPE=MyISAM;
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 06:28