[MySQL][PHP]autouzupełnienie |
[MySQL][PHP]autouzupełnienie |
30.12.2019, 01:44:22
Post
#1
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 5.12.2019 Ostrzeżenie: (0%) |
Cześć,
Znalazłem w necie taki kod
link do strony osoby tworzącej skrypt : https://mzielinski.pl/tag-system-jquery-ajax-php-mysql/ chciałbym zapytać w jaki sposób można zablokować możliwość tworzenia nowych tagów i wykorzystywać tylko te które znajdują się w bazie danych? Dokładnie chodzi mi o to że po wpisaniu np test nie było możliwości wyboru/wpisania test1 ponieważ takiego takiego taga nie ma w bazie. |
|
|
30.12.2019, 10:54:59
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Chyba nie bardzo rozumiem.... skoro nie chcesz tworzyc nowych tagow, to wywal kod z INSERT INTO i juz
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
30.12.2019, 13:03:30
Post
#3
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 5.12.2019 Ostrzeżenie: (0%) |
Wszystko fajnie ale, mam zdjęcie i chciałbym użyć tagu test jest on w bazie danych w tabeli tag id 1 i chciałbym aby ta liczba została zapisana do tabeli zdjecie tag_id 1
|
|
|
30.12.2019, 22:41:49
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
No dobrze, wczesniej chciales nei dodawac do bazy to ci napisalem jak masz nie dodawac. Teraz chcesz wpisywac istniejace ID no to masz je na swojej liscie tagow razem z tagiem. Teraz jak slesz forma to slij razem z tym ID i juz.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
1.01.2020, 01:39:05
Post
#5
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 5.12.2019 Ostrzeżenie: (0%) |
Na podstawie twojej podpowiedzi zrobiłem coś takiego:
Mam pytanie odnośnie danych, ponieważ w chwili obecnej dodaje mi ostatni nr który się zgadza np. id 26 mimo to że jeśli dodam 2 tagi o id 21 oraz 26 to dodaje tylko 26 ktoś może wyjaśnić dlaczego tak się dzieje? Jeśli wyświetlam $data to pokazują oba nr mimo to w bazie pojawia się tylko jeden. Ten post edytował Sklep102 1.01.2020, 02:58:15 |
|
|
1.01.2020, 09:31:37
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Bo nie dodajesz do filmu nowych tagów tylko aktualizujesz istniejące, a właściwie jeden istniejący, który został wcześniej dodany.
Najpierw aktualizujesz id tego istniejącego tagu na 21, a następnie na 26. Powinieneś wstawiać tagi, przy czym w tej tabeli powinien być założony klucz unikalny na id filmu i id tagu. -------------------- |
|
|
1.01.2020, 15:40:29
Post
#7
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 5.12.2019 Ostrzeżenie: (0%) |
Bo nie dodajesz do filmu nowych tagów tylko aktualizujesz istniejące, a właściwie jeden istniejący, który został wcześniej dodany. Najpierw aktualizujesz id tego istniejącego tagu na 21, a następnie na 26. Powinieneś wstawiać tagi, przy czym w tej tabeli powinien być założony klucz unikalny na id filmu i id tagu. Chyba nie bardzo rozumiem, mam 2 tabele: 1. film id name tag_id 2. tag id name I teraz chciałbym pobrać id tagu z tabeli tag na podstawie name i zapisać do tabeli film do kolumny tag_id, tylko nie wiem czemu zamiast zapisywać id 21 oraz 26 jednocześnie zapisuje tylko ostatni nr. Może ktoś mnie nakierować w jaki sposób to wykonać? Ten post edytował Sklep102 1.01.2020, 15:42:00 |
|
|
1.01.2020, 17:11:07
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Po pierwsze: ja ci nie mowilem ze na podstawie tekstu masz pobierac ID tylko to ID masz od razu przesylac razem z formem. Ok, od wielkiej biedy twoje rozwiazanie tez ujdzie. srednio ladne ale ujdzie
Po drugie: w nawiazaniu do tego co napisal trueblue i twojej odpowiedzi: Napisz mi prosze, swoimi slowami, co robi to zapytanie "UPDATE `film` SET `tag_id`='$data' WHERE 1 Ja wiem co to robi, ale jak ty napiszesz a potem przeczytasz co napisales, to moze sam zrozumiesz jaka glupote tu robisz i zrozumiez to co napisal trueblue -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
3.01.2020, 16:42:50
Post
#9
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 5.12.2019 Ostrzeżenie: (0%) |
Po pierwsze: ja ci nie mowilem ze na podstawie tekstu masz pobierac ID tylko to ID masz od razu przesylac razem z formem. Ok, od wielkiej biedy twoje rozwiazanie tez ujdzie. srednio ladne ale ujdzie Po drugie: w nawiazaniu do tego co napisal trueblue i twojej odpowiedzi: Napisz mi prosze, swoimi slowami, co robi to zapytanie "UPDATE `film` SET `tag_id`='$data' WHERE 1 Ja wiem co to robi, ale jak ty napiszesz a potem przeczytasz co napisales, to moze sam zrozumiesz jaka glupote tu robisz i zrozumiez to co napisal trueblue Wiem w czym jest problem, ponieważ chce zaktualizować rekord w pętli dlatego dodaje tylko 1 id. Poprawiłem trochę kod
Próbuje zrobić to po za pętlą tylko że wtedy zamiast pobrać wszystkie id wybiera jedno :/ Może ktoś wyjaśnić jak to poprawić? |
|
|
3.01.2020, 16:45:37
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Nie odpowiedziales na moje pytanie, co robi
"UPDATE film SET `tag_id`='$t3' WHERE 1" -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
3.01.2020, 17:41:07
Post
#11
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 5.12.2019 Ostrzeżenie: (0%) |
Nie odpowiedziales na moje pytanie, co robi "UPDATE film SET `tag_id`='$t3' WHERE 1" Edytuje rekord. Ponieważ w tej chwili chcę dodać całkiem nowe id_tag bez starych. Wybieram 3 tagi np. 1, 2, 3 i chce pobrać id tych nazw. Mam tylko problem z zapisem do bazy ponieważ zamiast 1, 2, 3 to zapisuje ostatni zamiast wszystkich 3. Rozumiem że robię to w pętli dlatego za każdym razem edytuje je i nie zostają stare. ale nie rozumiem dlaczego zapisuje id 3 zamiast 1, 2, 3 ponieważ sprawdzając $tag2 powinny być wszystkie 3. |
|
|
3.01.2020, 17:47:06
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
1) UPDATE edytuje REKORDY w tabeli. Jak nie podasz warunku jaki rekord ma edytowac, to edytuje wszystkie, co ma wlasnie teraz miejsce u ciebie 2) No i caly ten twoj kod teraz to jedna wielka sieczka, nie wiem jakim cudem wpisuje ci nawet ostatni. Przeciez teraz szukasz tagu o nazwie "1,2,3". Naprawde masz taki tag w bazie? 3) Masz zla strukture bazy, bo tabela filmy nie powinna miec w sobie pola tag, tylko powinna byc dodakotwa tabela FILM_TAG z polami film_id tag_id i poprostu do tej tabeli masz wkladac nowe tagi (INSERT) dla filmu -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
3.01.2020, 18:46:05
Post
#13
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 5.12.2019 Ostrzeżenie: (0%) |
Wyszukiwanie id działa idealnie, w bazie mam 3 tagi:
Test Test1 Test2 Pobieram id tagu: Test Test1 i wyświetla id 1, 2 wszystko super, problem pojawia sie przy próbie dodania tych wartości bezpośrednio do tabeli film przez $t3 ponieważ zapisuje ostatni rekord o id 2. W jaki sposob moge zapisac te 2 rekordy jeśli echo $t3 wyswietla 1, 2 A dodaje do bazy ostatni rekord wiem że robi to że względu na pętlę ale nie wiem jak zapisać oba... 3. Co do twojej sugestii. Rozumiem że każdy tag mam osobno przypisać do każdego filmu? Co w przypadku jeśli w bazie jest 300 filmów i każdy ma 10 tagow? Nie będzie problemu z przeszukaniem całej bazy? |
|
|
3.01.2020, 18:56:33
Post
#14
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Cytat Co w przypadku jeśli w bazie jest 300 filmów i każdy ma 10 tagow? Nie będzie problemu z przeszukaniem całej bazy? No wlasnie nie bedzie problemu. Wrecz przeciwnie. Przy twoim rozwiazaniu, gdzie tagi trzymasz w jednym polu to bedziesz mial problemy z wyszukiwaniem. Tak jak napisalem to tak sie wlasnie prawidlowo robi.Co do twojego kodu to jestem juz zagubiony mowiac szczerze. po co to $tag1 = explode(" ", $tag);{ $tag2 = implode( ", ", $tag1 ); i jednoczenie to foreach ($_POST['multiTag'] as $key=>$tag) { ? W jakij w koncu postaci wysylasz te tagi? Czy jest to tablica tagow w multiTag czy moze jest to jedno pole z wartosci tagow oddzielonych spacja? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
4.01.2020, 02:10:44
Post
#15
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 5.12.2019 Ostrzeżenie: (0%) |
Mam prawie rozwiązanie, ale mam jeszcze 2 pytania.
1. Co do tabeli o której mówisz, czy powinno się dodawać name_tag i name_film, który będzie przechowywał nazwy filmów i tagów czy tego się nie robi tylko 2 zapytanie które wybiera nazwę filmu i tagu na podstawię id? 2. Jak można rozwiązać problem z tworzeniem nowego taga? Dokładnie chodzi mi o to żeby dodać taga do konkretnego filmu muszę mieć jego id, tylko pytanie czy jest jakieś rozwiązanie aby to obejść? ponieważ zanim nie dodam filmu nie będę miał id. w tej chwili przychodzi mi tylko jedno rozwiązanie, najpierw dodać film do bazy później pobrać id na podstawię name i wtedy dopiero dodawać tagi? jest może jakieś inne rozwiązanie? Odpowiadając na twoje pytanie, już usunąłem: $tag1 = explode(" ", $tag);{ $tag2 = implode( ", ", $tag1 ); rzeczywiście niepotrzebny kod... |
|
|
4.01.2020, 09:52:00
Post
#16
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
ad1) Nie. Samo ID. Nie ma sensu duplikowac danych
ad2) Nie bardzo rozumiem problem chyba. Jesli jestes na etapie dodawania filmu, to przeciez mozesz juz na typ etapie wybrac tez tagi. Potem klikajac: ZAPISZ FILM idziesz do skryptu, ktore dodaje ten film, masz jego ID, i mozesz dodac tagi Cytat $tag1 = explode(" ", $tag);{ $tag2 = implode( ", ", $tag1 ); rzeczywiście niepotrzebny kod... A widzisz, przez dlugi czas to mnie mylilo odnosnie tego jak dodajesz tagi i temu twoj kod nie mial sensu zadnego. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
4.01.2020, 11:13:43
Post
#17
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 5.12.2019 Ostrzeżenie: (0%) |
ad2) Nie bardzo rozumiem problem chyba. Jesli jestes na etapie dodawania filmu, to przeciez mozesz juz na typ etapie wybrac tez tagi. Potem klikajac: ZAPISZ FILM idziesz do skryptu, ktore dodaje ten film, masz jego ID, i mozesz dodac tagi Właśnie skąd będę miał jego id muszę zrobić zapytanie które wybierze np. ostatnio dodany rekord dobrze rozumiem? |
|
|
4.01.2020, 11:42:42
Post
#18
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
Wersja Lo-Fi | Aktualny czas: 23.04.2024 - 17:47 |