Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Wyszukiwarka po tagach, problem z wyszukiwarką
trciap
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 12.06.2009

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


Witam,
jestem nowy więc przepraszam za wszystkie błędy jakie popełnię na forum.

chodzi o to, że mam problem z tagami.

w moim skrypcie z filmikami,
przy każdym dodaniu filmu to z tytułu i opisu tworzą się tagi i dodają do mysql.

tabele wyglądają następująco

'tags'
id name
1 jakis
2 tag
3 inny
4 tag

itd.

oraz druga tabela

tag_film
id id_filmu id_tagu
1 15 15,16,17,18,19,
itd.

teraz jak mógł


jak wyświetlić wszystkie filmy np. które zawierają taga np. 'lol' ?

myślałem coś w stylu,

wpisana fraza->szukamy takiego taga,bierzemy jego id->id tego taga szukamy w tablei 'tag_film' i porównujemy z tymi w 'id_tagu'->później bierzemy id_filmu i wyświetlamy filmy o takim tagu

Ten post edytował trciap 12.06.2009, 09:06:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ddiceman
post
Post #2





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


klucz unique na kolumne z nazwa tagu w tabeli z tagami
  1. ALTER TABLE tagi ADD UNIQUE(nazwa)

a pozniej
  1. <?php
  2. $id_tagow = array(); // tablica na idki tagow - zarowno nowych jak i wczesniej dodanych
  3. $tagi_ktore_juz_sa = array();
  4. foreach($tags as $nazwa_tagu){ // wszystkie proponowane tagi
  5.   $result = mysql_query('INSERT INTO tagi (nazwa) VALUES ("'.$nazwa_tagu.'");'); // jezeli jest zalozony klucz unique na to pole to zwrocony zostanie blad
  6.   if($result){ // udalo sie dodac - tagu jeszcze nie bylo
  7.       $id_tagow[] = mysql_insert_id(); // ostatni id -> id tagu
  8.   }
  9.   else{
  10.       $tagi_ktore_juz_sa[] = '"'.$nazwa_tagu.'"'; // lista tagow, ktorych nie udalo sie dodac, bo juz byly
  11.   }
  12. }
  13. if(count($tagi_ktore_juz_sa) > 0){ // jezeli sa jakies, ktorych nie udalo sie dodac, to trzeba pobrac ich ID
  14.    $result = mysql_query('SELECT id FROM tagi WHERE nazwa IN ('.implode(',', $tagi_ktore_juz_sa).');');
  15.    while($row = mysql_fetchrow($result)){
  16.        $id_tagow[] = $row['id']; // dodajemy do tablicy z id tagow te tagi, ktore juz byly wczesniej
  17.    }
  18. }
  19. if(count($id_tagow) > 0){
  20.    $query = 'INSERT INTO tagi_to_filmy (id_tagu, id_filmu) VALUES ';  // na koniec zapis w tabeli relacji M do N
  21.    foreach($id_tagow as &$id_tagu){
  22.       $id_tagu = '('.$id_tagu.', '.$nowe_id_filmu.')';
  23.    }
  24.    unset($id_tagu);
  25.    $query .= implode(',', $id_tagow);
  26.    mysql_query($query);
  27. }
  28. ?>

(moga byc bledy bo pisane z palca)

Ten post edytował ddiceman 12.06.2009, 18:53:46
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: 14.10.2025 - 11:42