[PHP MySQL] - Jak stworzyć osobną stronę dla newsa?

Wita, na swojej stronie stworzyłem system newsów, lecz nie wiem jak zrobić, aby dla każdego newsa, automatycznie tworzony był link, który tworzył by stronę z danym newsem. Z dodawaniem komentarzy bym sobie poradził, ale tego nie mogę nigdzie w internetach znaleźć. I czy trzeba było by tworzyć nową bazę danych do takiego “systemu” ?

Pozdrawiam.

Jeżeli masz mechanizm pozwalający wyświetlić wiele newsów na jednej stronie, to w czym problem żeby wyświetlił tylko jeden (np. zadany po id w parametrze GET)?

$_GET najprościej

a w ilu internetach już patrzyłeś?

pobierasz id newsa z bazy danych i wyświetlając linka dołączasz do adresu dane id

$nazwa newsa

później w tym pliku news.php to id będziesz miał w zmiennej $_GET[‘id’]; i na podstawie tego możesz sobie wyciągnąć dane z bazy/wyświetlić newsa

/news.php?id=$id, w takim wypadku nie odczyta wartości zmiennej, tylko odczyta ją jako STRING :frowning:

Próbowałem tak: … href=‘news.php?id=.$id.’>, ale w tym wypadku wgl nie widzi zmiennej ;/

echo '";

Ok, działa. Ale teraz jak zrobić tą instukcję:

if(isset($_GET['news'])){'';""
.$tytul.'';'Autor: '.$autor.' Data: '.$data.'';''
.nl2br($tresc).'';''
.$id.'';'';

problemem jest to jak wybierasz newsa z bazy, a nie to jak go wyświetlasz.

Pobieram, za pomocą funkcji mysql_query. Pobieram wszystkie newsy i sortuję od największej liczby(id).

Po co? Wybierz tego, którego chcesz wyświetlić.

echo '

';
"

$id"".$tytul.’

‘;
‘Autor: ‘.$autor.’ Data: ‘.$data.’’;

.nl2br($tresc).’’;

.$id.’’;
’’; [/code]

To jest skrypt wyświetlania się newsów. Jak widzisz do atrybutu href, dopisałem id każdego newsa, a więc każdy news powinien mieć inne id.

Chcę dodać do każdego newsa link, który otworzy dany news bez innych newsów.

Zrozum, że nie wybierasz newsa przekazujesz tylko w GET id ale zawsze wykonuje się to samo

if(isset($_GET['news'])){

// Tu wstaw SELECT z WHERE po id, i to co zostanie wybrane przypisz na poniższe zmienne zmienne.

            echo '

'; echo "

".$tytul.’

‘; echo ‘Autor: ‘.$autor.’ Data: ‘.$data.’’; echo ’ ‘.nl2br($tresc).’’; echo ’ ‘.$id.’’; echo ‘
’; } else { echo ‘Nie znaleziono takiego posta !’; }[/code]

czyli to. Musisz wybrać konkretnego news-a. Przejście na nową stronę powoduje, że dane są zapominane tak w ogóle, a sam isset nie robi tego, że wybiera za ciebie coś, bo w id przekazałeś np. 7. Musisz wybrać newsa, którego chcesz wyświetlić (WHERE). Jeśli chcesz coś cache-ować pomiędzy żądaniami proponuje się przerzucić na servlety javowe, a w dłuższej perspektywie na Scale + np. framework Play (chciałbym zobaczyć jak w PHP napisać aplikację webową korzystającą z mocy obliczeniowej 20 stacji roboczych). PHP jest niepoważną technologią do tworzenia wydajnych rzeczy do stron dla medium size business może jeszcze się nada, ale enterprise na pewno nie. Ale tak czy siak pisanie w tym jest karkołomne.

Czyli w instrukcji, znów pobierać wszystkie newsy i sortować za pomocą id ?

Nie, pobrać jeden konkretny o żądanym id. Wpisz w Google -> SQL WHERE

"SELECT * FROM news WHERE id = '".$_GET['news']."'"

if(isset($_GET['news'])){

$id = $_GET['news'];

           echo 'ID ODCZYTANE Z LINKA: ' . $id;

        } else {

            echo 'Nie znaleziono takiego posta !';

        }

Uruchom sobie, może doznasz oświecenia.

Działa, tak jak wcześniej czyli pokazuje news2 pod newsem 2 a news 1 pod newsem 1.

Dodane 14.09.2013 (So) 1:26

_ Notice: Undefined index: news in C:\xampp\htdocs\geek\index.php on line 15 _ - Taki błąd wyskakuje, czyli że nie zdefinowana zmienna $_GET[‘news’]; co nie ? Ale jak już kliknę w link to już nie ma błędów.

Dodane 14.09.2013 (So) 10:36

A tak poza tym to mam problem z kodowanie polskich znaków, w tych newsach. Mam całą bazę ustawioną na kodowanie utf8_general_ci , ale i tak nie ma polskich znaków.

To nie śmieć internetu. Każdy ma z tym problem na początku i jest mnóstwo tematów na forach dotyczących dokładnie tego problemu.

notice to nie jest błąd dużego kalibru to raczej luźna notka dla programisty. PHP i tak dynamicznie uzna wartość za null jeżeli nie masz indeksu w tablicy.

Zawsze możesz wcześniej sprawdzić funkcją isset(); lub wyłączyć raportowanie Notice’ów

nigdy tego nie rób, bo po to PHP raportuje, aby programista wiedział, co poprawić. Potem zaczniesz coś zmieniać, bawić się i nagle okaże się, że aplikacja źle działa - przez ignorowanie notice’ów.

Możesz tego używać, bo po to PHP daje możliwość wyłączenia raportowania abyś nie musiał się tym martwić i tego poprawiać. Nawet jak zaczniesz się bawić i coś zmieniać to aplikacja nie przestanie działać przez ignorowanie notice’ów ponieważ nie są to błędy krytyczne.

Tak, ale bardzo przydatne przy debuggowaniu.

http://nospor.pl/notice-wyswietlac-czy-nie.html

Oczywiście na serwerze zalecane jest wyłączenie wyświetlania wszystkich błędów (albo jeszcze lepiej - nie wyświetlać, ale zapisywać w logach).