Pobieranie tekstu z bazy za pomocą GET


(hatezit) #1

Witam,

Mam pytanie, jak można pobrać tekst za pomocą funkcji GET? Obecnie zrobilem bez tej funkcji ale dane z bazy mam w pasku url a chciałbym na stronie, czyli kliknę na artykuł xxx i otwiera mi sie w nowej stronie tekst z bazy a nie w pasku url.

Tu podaje link do zrzutu jak mam aktualnie. Gdzie widać, że tekst mam w pasku url.

zrzutf.png

Podam kod:

$query = "SELECT id_art, Tytul, Artykul, Autor FROM articles";


if ($result = $mysqli-query($query)) {



    while ($row = $result-fetch_assoc()) {


         $id_art = $row['id_art'];

     $Tytul = $row['Tytul'];

     $Artykul = $row['Artykul'];         

     $Autor = $row['Autor'];



         print "
$Tytul";

         print "
 $Autor";


    }

}

[/code]




Też zmieniałem zapytanie na takie:

[code] $query = "SELECT id_art, Tytul, Artykul, Autor FROM articles where id_art = '".$_GET['id_art']."' ";
i zmieniłem w pętli na:

if ($result = $mysqli-query($query)) { 

    while ($row = $result-fetch_assoc()) {


   $id_art = $_GET['id_art'];

     $Tytul = $row['Tytul'];

     $Artykul = $row['Artykul'];   

     $Autor = $row['Autor'];


    echo $_GET['id_art'];


    }

}

I pobierało id_art. ale gdy zmienię w zapytaniu na tytul i echo na tytul to mam błąd.

Co robię źle?


(mozilla007) #2

A pokaż kod po zmianie gdzie są błędy. Popatrz też na litery czy są duże, czy małe.


(hatezit) #3

Kod po zmianie to:

$query = "SELECT id_art, Tytul, Artykul, Autor FROM articles

          where Tytul = '".$_GET['Tytul']."' ";

w pętli

if ($result = $mysqli->query($query)) {



    while ($row = $result->fetch_assoc()) {


	 //$id_art = $_GET['id_art'];

	 //$id_art = $row['id_art'];

     $Tytul = $_GET['Tytul'];

     $Artykul = $row['Artykul'];	 

     $Autor = $row['Autor'];


	 echo $_GET['Tytul']; 



    }



}

I gdy wywołuje to błąd jest następujący:

Undefined index: Tytul in C:\Program Files\VertrigoServ\www\testweb\article.php on line 109

gdzie linia 109 , to zapytanie po where. Kolumny w bazie po za id_art mam duże.


(mozilla007) #4

Zamiast

echo $_GET['Tytul'];

Daj

echo $Tytul;

Sprawdź też po drodze czy pobierane dane przez GET są poprawne. Ja bym raczej stosował w pętli odpowiednik z bazy, czyli w tym wypadku $row['Tytul'], by uniknąć zbędnego zamieszania.


(hatezit) #5

Niestety nie działa, wskazuje mi komunikat na linie 109

czyli jak wyżej pisałem, na linię po where.

A jak można połączyć GET z row?


(etam) #6

Czy tobie się coś nie miesza? Bo mi się miesza jak to czytam.

W tablicy $_GET jest to, co jest podane w pasku adresu po znaku zapytania. Jeżeli masz "article.php?Tytul=Ala+ma+kota", co w $_GET['Tytul'] będziesz miał "Ala ma kota", ale jeżeli w adresie zamiast 'Tytul' będzie 'id_art', to program nie domyśli się, że tobie chodziło o co innego.

Pytanie konkursowe: co się stanie, jeżeli wpiszesz w adresie "article.php?id_art=0%3B%20drop%20table%20articles%3B--"


(ra-v) #7

$row to wyniki z bazy. $_GET to już wyżej napisano.

$query = "SELECT id_art, Tytul, Artykul, Autor FROM articles.$_GET['id_art']."' ";

(hatezit) #8

Zrobiłem tak :

$query = "SELECT id_art, Tytul, Artykul, Autor FROM articles

         where id_art = '".$_GET['id_art']."' ";


if ($result = $mysqli->query($query)) {



    while ($row = $result->fetch_assoc()) {


	 $id_art = $_GET['id_art'];

	 $Tytul = $_GET['Tytul'];

	 //$id_art = $row['id_art'];

     $Tytul = $row['Tytul'];

     $Artykul = $row['Artykul'];	 

     $Autor = $row['Autor'];


	echo '

'.print_r($Tytul, true).'

'; echo '

'.print_r($Artykul, true).'

'; [/code]

Pobiera mi za pomocą GET ale nie ma żadnej różnicy. Gdy chcę najechać na tytuł, to po poprowadzić do opisu tytułu.