Piszę stronę internetową i mam problem z pewnym zagadnieniem.
Mam bazę danych SQL, a w niej są zamieszczone newsy/artykuły i inne.
Na stronie głównej wyświetliłem najnowsze artykuły
W jaki sposób można automatycznie zrobić linka (przekierowanie) do całego artykułu, wiedząc że jest on w bazie sql? Mam pola: id (primarykey), tytul, text, data, autor.
Niestety nie znalazłem tutoriali dotyczących linkowania. Z tego co zauważyłem, to często strony na końcu adresu mają, np. index.php?id=1…, lecz nie wiem jak to ugryźć
Chyba znasz PHP skoro operujesz na bazie danych? A z linkiem to sprawa banalna…
W tabeli stwórz pole z opcją “AUTO_INCREMENT” - poszukaj gdzieś na ten temat… Jak pobierasz przez php nagłówki z najnowszymi tytułami to pobieraj też ich numer ze wspomnianego pola i w linku dajesz tą końcówkę index.php?id=TU MA BYC NUMER. W pliku index.php dajesz warunek if(isset($_GET[‘id’])) jeżeli spełnia to pobierasz treść art. i wrzucasz w HTML.
Pole id ma auto_increment, zapomniałem o tym napisać
Czy możesz mi pokazać na przykładzie, w jaki sposób zaimplementować taką funkcję? PHP dopiero próbuję się uczyć od niedawna na gotowych skryptach, które później modyfikuje
Kod dla newsów (dla artów jest identyczny)
core.php - zawiera dane do logowania na stronie.
w pliku index.php jest funkcja <?php include (‘scripts/news.php’) ?>
<?php include ('core.php') ?>
<?
$link=mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT 0,20");
while($wiersz=mysql_fetch_array($link))
{
echo '
O teraz zauważyłem że nie było “while($wiersz=mysql_fetch_array($link))” przy spełnieniu warunku. Co do PK to nie jestem pewien czy masz racje, ta opcja określa tylko co będzie głównym polem do identyfikacji i chyba nie musi mieć opcji AUTO_INCREMENT ani niepowtarzalnej wartości. A to czy będzie w tym czy oddzielnym pliku to już sprawa autora.
Ok super Linkowanie już działa, jeszcze posiedzę nad wyświetlaniem newsa, bo wyświetla mi się tylko tytuł, a tekst i inne elementy już nie. Po przelinkowaniu wyświetlają się odpowiednie tabelki, ale nie ma treści Troszkę posiedzę i może coś wyjdzie
<?
require 'core.php';
$id = $_GET['id'];
if (isset($_GET['id'])) {
$link = mysql_query("SELECT * FROM news WHERE $id ");
echo '
'; echo ’ '; } else { $link = mysql_query(“SELECT title, id FROM news ORDER BY id DESC LIMIT 0,20”); while ($wiersz = mysql_fetch_array($link)) { echo ’
'; } } else { $link = mysql_query(“SELECT user, date, text, source, title, id FROM news ORDER BY id DESC LIMIT 0,20”); while ($wiersz = mysql_fetch_array($link)) { echo ’
Cóż, polecam więc lekturę manuala. Pole będące kluczem głównym z natury rzeczy jest jednocześnie UNIQUE i NOT NULL - ale jak nie wierzysz, to zrób sobie prostą testową tabelę z jednym polem będącym PRIMARY KEY i spróbuj dodać jakąś dublującą się wartość albo null i zobacz co się stanie
A może coś Ci się pomieszało z FOREIGN KEY ? Tak czy owak, coś Ci się pomieszało.
Co do AUTO_INCREMENT to zgadza się, że nie musi być (ale gdzie musi?). AI nie ma tu w zasadzie nic do rzeczy - autonumerowanie jest tylko dla wygody. Jak wiesz, ustawiony AI w niczym nie przeszkadza w nadaniu własnej wartości (poza numeracją) …a sam licznik AI też można modyfikować. Samo więc AI nie jest gwarantem unikalności.