Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Przeszukiwanie wielu tablic.
Genek
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 8.11.2008

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


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 )


Ten post edytował Genek 4.03.2013, 22:05:26
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Posio
post
Post #2





Grupa: Zarejestrowani
Postów: 417
Pomógł: 44
Dołączył: 23.06.2011

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


Nie wiem dokładnie co chcesz zrobić ale tutaj masz wszystko :
http://www.php.net/manual/en/ref.array.php
Go to the top of the page
+Quote Post
Genek
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 8.11.2008

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


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.

Ten post edytował Genek 5.03.2013, 18:06:19
Go to the top of the page
+Quote Post

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: 23.12.2025 - 18:06