Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlanie pełnej treści newsa po kliknięciu na temat
Forum PHP.pl > Forum > Bazy danych
Stryku
Witam. Znowu mam problem wynikający chyba z mojej jak narazie krótkiej przygody z php i ogólnie kodowaniem.
A więc. mam na swojej stronie system newsów oparty na mysql. Mam też strone newsy.php na której chciałbym wyświetlać dodane newsy. Z wyświetlaniem sobie poradziłem, ale nie w taki sposób w jaki bym chciał. Na tej stronie wyświetla mi wszystko, temat, treść, datę dodania i przez kogo. Chciałbym, żeby na tej stronie wyświetlały się same tematy w formie linku i po kliknięciu na temat przenosiło na strone na której będzie ten news w pełnej okazałości.
I tu się zaczynają schody. W ogóle nie wiem jak się do tego zabrać. Kompletnie nic. Myślałem nad funkcją GET. Ide w dobrym kierunku? Będę wdzięczny za wszelkie wskazówki, podpowiedzi. I nie zrozumcie mnie źle, nie oczekuje gotowego kodu. Chce się przy okazji czegoś nauczyć.
Od razu przepraszam za błędy. Pisze z kom. I jeżeli wybrałem zły dział to przenieście.
mortus
Co za funkcją GET? Chyba chodziło Ci o tablicę superglobalną? Jeśli tak, to dobrze myślisz.
Algorytm jest prosty. Załóżmy, że wszystko dzieje się w pliku news.php:
1. sprawdzasz, czy w tablicy superglobalnej znajduje się zmienna news_id (patrz kod poniżej), jeżeli tak, to punkt 2, jeżeli nie to punkt 3;
  1. if(isset($_GET['news_id']) && $_GET['news_id'] != '' && is_numeric($_GET['news_id'])) {
  2. ...
  3. }

2. pobierasz z bazy danych odpowiedniego newsa używając do tego zmiennej $_GET['news_id'] i wyświetlasz, koniec;
3. pobierasz z bazy danych id i temat newsa, i na tej podstawie generujesz odnośnik:
<a href="news.php?news_id=POBRANE_ID">POBRANY_TEMAT</a>
Rezultat: po kliknięciu w ten odnośnik do tablicy superglobalnej $_GET trafia zmienna news_id o wartości POBRANE_ID (czyli $_GET['news_id'] = POBRANE_ID), następuje zatem przejście do punktu 2 i zakończenie działania algorytmu.
Można później pomyśleć o jakimś mechanizmie cache'owania, ale lepiej zacząć od podstaw. Bardziej chyba nie mogłem pomóc, a na forum trochę już takich tematów było.
Stryku
Próbowałem zrozumieć to co napisałeś i coś z tym zrobić ale nie udało się. Mam cos takiego:
  1. <?php
  2. $temat = "SELECT `temat` FROM `nius`";
  3. $idztemat = mysql_query($wybieranie);
  4.  
  5. $id = "SELECT `id` FROM `nius` WHERE `temat`='$idztemat'";
  6. $idzid = mysql_query($id);
  7.  
  8. echo '<table border=1>';
  9. while ($wiersz = mysql_fetch_row($idztemat))
  10. {
  11. echo '<tr><td><a href="temat.php?news_id=$idzid">'. $wiersz[0] .'</a></td></tr>';
  12. }
  13. echo '<table>';
  14. ?>


Nic nie wyświetla. Wcześniej miałem takie coś:

  1. <?php
  2. $wybieranie = "SELECT `temat`FROM `nius`";
  3. $idzapytania = mysql_query($wybieranie);
  4.  
  5. echo '<table border=1>';
  6. while ($wiersz = mysql_fetch_row($idzapytania))
  7. {
  8. echo '<tr><td>'. $wiersz[0] .'</td></tr>';
  9. }
  10. echo '<table>';
  11. ?>


i wyświetlało mi same tematy jeden pod drógim.
Nie wiem jak to połączyć z tym co pisałeś. Pewnie dla was jest to proste, ale ja po prostu nie mam pomysłu.
mortus
Jeśli chodzi o pobieranie danych z bazy to wiedz, że można równocześnie pobierać wartości kilku kolumn w jednym zapytaniu:
  1. $zapytanie = "SELECT id, temat FROM nius";
  2. $wyniki = mysql_query($zapytanie);
Otrzymane w ten sposób wyniki przetwarzamy w pętli while wykorzystując mysql_fetch_array, mysql_fetch_object, mysql_fetch_row lub mysql_fetch_assoc. Musisz uzupełnić podstawową wiedzę z SQL. W manualu PHP (po prostu kliknij w nazwę którejś z wyżej wymienionych funkcji) masz sporo przykładów dotyczących Twojego problemu.
Stryku
Wiem, że można pobierać wartości z kilku kolumn. Na innej stronie mialem taki kod:
  1. <?php
  2.  
  3.  
  4. $wybieranie = "SELECT `temat`,`tresc`,`data_dodania` FROM `nius`";
  5. $idzapytania = mysql_query($wybieranie);
  6.  
  7. echo '<table border=1>';
  8. while ($wiersz = mysql_fetch_row($idzapytania))
  9. {
  10. echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td></tr>';
  11. }
  12. echo '<table>';
  13. ?>


i on mi wyświetlał wszystko.

Tak w ogóle dzięki, że chociaż zainteresowałeś się moim problemem i mi pomagasz smile.gif. Będę kombinował.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.