Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tablica jako wynik działania funkcji
Forum PHP.pl > Forum > Przedszkole
sumar
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. ?>
FiDO
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.
sumar
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. ?>
rogrog
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...
sumar
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;
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.