Skocz do zawartości

Numeracja id


zawodnik-tv

Rekomendowane odpowiedzi

$sql = "SELECT * FROM article
LEFT JOIN page ON article.id = page.id
WHERE id = '$page'";

Do wyświetlania artykułów posłużyłem się powyższym zapytaniem mysql. Nie wiem tylko w jaki sposób zrobić tak aby artykuły z poszczególnych kategorii miały swoją oddzielną numerację id?.
.../testy/artid1
.../testy/artid2
....
.../rankingi/artid1
.../rankingi/artid2
....

W chwili obecnej wygląda to w ten sposób że id artykułu jest automatycznie numerowane bez względu na kategorię w bazie danych.
.../testy/artid1
.../testy/artid3
....
.../rankingi/artid2
.../rankingi/artid4
....

Odnośnik do komentarza
Udostępnij na innych stronach

Gdzieś widziałem takie rozwiązanie i wydało mi się eleganckie. Teraz jednak uważam je za zbyt problematyczne - przy usuwaniu i dodawaniu nowych rekordów mogłoby namieszać. Jestem na etapie poszukiwania dobrych rozwiązań stąd te moje pomysły.

Zastanawiam się jeszcze nad paroma kwestiami.

1.Warunki mysql (dwa,jeden)
Korzystając z powyższego zapytania mysql powstaje adres typu .../testy/artid1 (kategoria/artykul), gdzie poprawność kategorii (LEFT JOIN article.id = page.id) nie jest wymagana. Po wpisaniu np .../telele/artid1 artykul z identyfikatorem id1 zostanie wyświetlony pomimo błędnie wpisanej kategorii jak to zmienić?
where article.id = page.id and id = '$page' - zapytanie z dodatkowym 'and' rozwiązałoby ten problem ale chyba nie jest to dobry sposób?


2. Proces tworzenia przyjaznych linków.
Jeżeli chcę wyświetlić nazwę artykułu 'nazwa-artykulu' zamiast np. 'id=1', to muszę ustawić taki warunek by porównywał dwa stringi, czy warunek z identyfikatorami id, a następnie w jakiś sposób zamienić je na stringi?

Odnośnik do komentarza
Udostępnij na innych stronach

AD 1, 2:

https://php.net/manual/pl/

NP: https://www.w3schools.com/sql/

jak zaczniesz pojmować o co w programowaniu chodzi, to może sam dojdziesz do tego jak rozwiązać swój problem.

Podpowiedzi:

- jeśli chcesz utworzyć "SEO" link 'nazwa-artykulu' np z nazwy artykułu to tworzysz w tabeli kolumnę np seolink i zapisujesz w niej seolink przygotowany przed dodaniem rekordu. Kolumna seolink musi być unikalna. ITD...

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

@up

1. Pobierasz artykuł z bazy po jego ID lub linku oraz jego kategorię przez LEFT JOIN. Potem możesz porównać kategorię z url'a z kategorią z bazy, jeśli się różnią zwracasz np. 404. Zapytanie z AND trochę bardziej obciążą bazę, ale nie jest złe.

2. Po kolumnie ID szybciej znajdziesz artykuł, a co za tym idzie mniej zażynasz bazę. Stringi trochę dłużej się porównuje, ale obecnie szybkość serwerów sprawia, że wiele portali właśnie szuka po stringach.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności