Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przeszukiwanie wielu tablic.
Forum PHP.pl > Forum > Przedszkole
Genek
W jaki sposób najszybciej i najefektywniej przeszukać 7 tablic o nieregularnej wielkości w celu znalezienia powtarzającego(wspólnego) się elementu?

  1. Array ( [0] => 1 )
  2. Array ( [0] => 1 [1] => 2 [2] => 16 [3] => 16 [4] => 16 [5] => 17 [6] => 17 [7] => 17 [8] => 22 )
  3. Array ( [0] => 1 )
  4. Array ( [0] => 1 [1] => 2 [2] => 19 [3] => 19 [4] => 21 [5] => 22 )
  5. Array ( [0] => 1 [1] => 2 [2] => 5 [3] => 6 [4] => 7 [5] => 8 [6] => 9 [7] => 10 [8] => 11 [9] => 12 [10] => 13 [11] => 14 [12] => 15 [13] => 16 [14] => 17 [15] => 18 [16] => 19 [17] => 21 [18] => 22 [19] => 24 [20] => 25 )
  6. Array ( [0] => 1 )
  7. Array ( [0] => 1 )
Posio
Nie wiem dokładnie co chcesz zrobić ale tutaj masz wszystko :
http://www.php.net/manual/en/ref.array.php
Genek
Mój skrypt to wyszukiwarka w katalogu bibliotecznym. Mam 7 pól w formularzu i 7 zapytań, z czego każde zwraca mi ID książek, jeżeli dany warunek jest spełnony(np jeżeli hasło_przedmiotowe jest powiązane z daną książką). Wyniki zwracane są do tablic. W wyszukiwaniu żadne pole nie jest obowiązkowe więc można podać zarówno 7 jak i 1, albo 5, a także każda książka może mieć wielu autorów, albo jeden autor może napisać wiele książek, tak samo z słowami kluczowymi zachodzi relacja wiele do wielu.

W związku z tym mając te N tablic o M wielkości potrzebuję znaleźć najczęściej powtarzającą się wartość/wartości(id książek), które będą odpowiadać wynikom wyszukiwania.

Kod:

  1. //tytul
  2. $q="SELECT id FROM ksiazki WHERE tytul='$tytul';";
  3. $r=mysql_query($q);
  4.  
  5. $by_tytul=array();
  6. while ($row=mysql_fetch_array($r, MYSQL_ASSOC)) {
  7. $by_tytul[]=$row['id'];
  8. }
  9.  
  10. //autor
  11. $q="SELECT k.id FROM ksiazki AS k, autorzy AS a, autorzy_to_ksiazki AS atk WHERE a.imie='$autor' AND atk.autor_id=a.id AND atk.ksiazka_id=k.id;";
  12. $r=mysql_query($q);
  13.  
  14. $by_autor=array();
  15. while ($row=mysql_fetch_array($r, MYSQL_ASSOC)) {
  16. $by_autor[]=$row['id'];
  17. }
  18.  
  19. //haslo przedmiotowe
  20. $q="SELECT k.id FROM ksiazki AS k, hasla_przedmiotowe AS hp, hasla_to_ksiazki AS htk WHERE hp.haslo_przedmiotowe='$hasloPrzedmiotowe' AND htk.id_hasla=hp.id AND htk.id_ksiazki=k.id;";
  21. $r=mysql_query($q);
  22.  
  23. $by_hasloprzedmiotowe=array();
  24. while ($row=mysql_fetch_array($r, MYSQL_ASSOC)) {
  25. $by_hasloprzedmiotowe[]=$row['id'];
  26. }
  27.  
  28. //slowa kluczowe
  29. $q="SELECT k.id FROM ksiazki AS k, slowa_kluczowe AS sk, slowa_to_ksiazki AS stk WHERE sk.slowo_klucz='$slowaKluczowe' AND stk.id_slowa=sk.id AND stk.id_ksiazki=k.id;";
  30. $r=mysql_query($q);
  31.  
  32. $by_slowakluczowe=array();
  33. while ($row=mysql_fetch_array($r, MYSQL_ASSOC)) {
  34. $by_slowakluczowe[]=$row['id'];
  35.  
  36. }
  37.  
  38. //rok wydania
  39. $q="SELECT id FROM ksiazki WHERE rok_wydania='$rokWydania';";
  40. $r=mysql_query($q);
  41.  
  42. $by_rokwydania=array();
  43. while ($row=mysql_fetch_array($r, MYSQL_ASSOC)) {
  44. $by_rokwydania[]=$row['id'];
  45. }
  46.  
  47. //wydawnictwo
  48. $q="SELECT id FROM ksiazki WHERE wydawnictwo='$wydawnictwo';";
  49. $r=mysql_query($q);
  50.  
  51. $by_wydawnictwo=array();
  52. while ($row=mysql_fetch_array($r, MYSQL_ASSOC)) {
  53. $by_wydawnictwo[]=$row['id'];
  54. }
  55.  
  56. //isbn
  57. $q="SELECT id FROM ksiazki WHERE isbn='$isbn';";
  58. $r=mysql_query($q);
  59.  
  60. $by_isbn=array();
  61. while ($row=mysql_fetch_array($r, MYSQL_ASSOC)) {
  62. $by_isbn[]=$row['id'];
  63. }
  64.  
  65. print_r($by_tytul);
  66. print_r($by_autor);
  67. print_r($by_hasloprzedmiotowe);
  68. print_r($by_slowakluczowe);
  69. print_r($by_rokwydania);
  70. print_r($by_wydawnictwo);
  71. print_r($by_isbn);


Na początku jak to pisałem wydawało mi się to możliwe, ale w tej chwili nie jestem do końca pewien czy jest możliwe rozwiązanie wyszukiwania w ten sposób.
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.