Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]pobieranie tagów z bazy danych
grebciu
post 30.03.2014, 22:34:27
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.05.2013

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


Witam wszystkich. Tworzę swój własny system cms, żeby się czegoś nauczyć o PHP. Nie idzie mi najgorzej, ale mam pewien problem. Tworzę teraz wyszukiwarkę przy użyciu tagów i natrafiły się problemy:

utworzyłem tabelę:
  1. CREATE TABLE images(
  2. id int AUTO_INCREMENT,
  3. PRIMARY KEY (id),
  4. hyperlink tinytext,
  5. keywords tinytext
  6. )


wyszukiwarka wygląda tak:

  1. $connection = mysqli_connect("localhost", "root", "", "php");
  2. $query = mysqli_query($connection, "SELECT * FROM images WHERE keywords = '{$_POST["keywords"]}' ORDER BY id DESC");
  3.  
  4. while($row = mysqli_fetch_array($query)) {
  5. echo $row["id"];
  6. echo "<img src='{$row["hyperlink"]}' /><br />";
  7. }


a tak wygląda dodawanie do bazy linków do obrazków i słów kluczowych:

  1. $connection = mysqli_connect("localhost", "root", "", "php");
  2. mysqli_query($connection, "INSERT INTO images(hyperlink, keywords) VALUES ('{$_POST["hyperlink"]}', '{$_POST["keywords"]}')");
  3. mysqli_close($connection);


niestety, kiedy dodaję więcej niż jeden tag jest kiepsko... oddzielam je przecinkiem np. zielony, czerwony, niebieski

chciałbym, żeby tagi z bazy (niezależnie od tego ile ich jest) były pobierane bez tych przecinków jako osobne zmienne. myślałem nad pętlą for, ale nie wiem kompletnie od czego zacząć, proszę o pomoc ;( pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
IProSoft
post 30.03.2014, 22:44:15
Post #2





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


Lepiej było by gdybyś utworzył tabele z tagami i tabelę powiązań, w której miał byś id_tag i id_images.
Znacznie ułatwi to wyszukiwanie itp


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
grebciu
post 31.03.2014, 16:22:28
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.05.2013

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


@IProSoft, mógłbyś rozwinąć swoją myśl? bo nie rozumiem jak miałbym napisać takie rozwiązanie sad.gif
Go to the top of the page
+Quote Post
nospor
post 31.03.2014, 16:27:13
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Tabela IMAGES
ID
blabla

Tabela TAGS
ID
NAME

Tabela wiąząca IMAGES_TAGS
ID_IMAGE
ID_TAG


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
grebciu
post 31.03.2014, 16:56:37
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.05.2013

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


tylko jak pobierać kilka tagów, gdy są one oddzielone przecinkiem w bazie jako osobne zmienne, żeby wyszukiwarka je znajdowała?

Kod
$query = mysqli_query($connection, "SELECT * FROM images WHERE keywords LIKE '%{$_POST["keywords"]}%' ORDER BY id DESC");


wystarczyło zrobić tak, dzięki za pomoc biggrin.gif

Ten post edytował grebciu 31.03.2014, 17:03:45
Go to the top of the page
+Quote Post
nospor
post 31.03.2014, 17:23:06
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
tylko jak pobierać kilka tagów, gdy są one oddzielone przecinkiem w bazie jako osobne zmienne, żeby wyszukiwarka je znajdowała?
Dlatego wlasnie zaproponowano ci poprawną strukture bazy. Ale widze, chyba nie skorzystasz z propozycji


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 31.07.2025 - 08:42