[PHP][MYSQL]Wybieranie rekordów z bazy danych za pomocą GET


(master of disaster) #1

Witam!

A więc tak mam w bazie danych tabele z trzema kolumnami, id, tytuł i treść..

I teraz w php wywołuję jeden rekord (pierwszy) i jest wszystko ok.

Ale jak zrobić tak że za pomocą geta jest wybierany inny rekord..

np. klikam O Mnie, i jest wybierany rekord gdzie np. jego nazwa to omnie, albo jego id równa się np. 2.

Trochę to zagmatwane ale myślę że ktoś mnie zrozumie :wink:

Oto co zdołałem do tej pory zrobić:


(Krzkaczor) #2

Dodaj do zapytania WHERE page_id = $_GET['id']. Oczywiscie zastąp to swoimi polami / zmiennymi. Przefiltruj zmienna $_GET zeby zabezpieczyc sie przed atakami.


(athei) #3
if (is_numeric($_GET['id']) { 

$id= $_GET['id'];

...."SELECT * FROM `podstrony` WHERE `id`= {$id}";

} else { /*id ma byc liczba */}

(master of disaster) #4

Dzięki SyntaxError , za objaśnienie i athei , za kod :wink:

Wszystko działa jak należy ale jest jeden problem:

Zrobiłem małą stronkę (w html i css) i do tego zrobiłem mały panel administracyjny, a w nim można usuwać te podstrony, i jak usuwam i dodaje podstrony to robi się coś takiego: (dam screena po ciężko mi to jest wytłumaczyć)

lolvmx.png

(jakbym usuwał te podstrony z poziomu phpmyadmina to jest ok...)

Więc chcę zrobić coś takiego że jak się dodaje linki w menu (też z poziomu panel którego zrobiłem) to żebym miał do wyboru (najlepiej w w html, wszystkie rekordy z podstrony do wyboru i jak wybiorę jakąś podstronę to do mojej bazy menu zapiszę się rekord z linkiem właśnie do id tego rekordu...

Kurdę, no nie wiem jak to inaczej wytłumaczyć, nie wiem czy mnie rozumiecie...

Pozdrawiam i proszę o pomoc...


(Krzkaczor) #5

id to główny identyfikator w bazie, tak? Jeżeli tak to to jest normalne klucz cały czas wzrasta pomimo wywalenia poprzednie wiersza.

Ten formularz z to musisz generować na podstawie danych z bazy (kolejne zapytanie proste mysql select) i gitara.


(master of disaster) #6

Dobra już sobie sam poradziłem :smiley:

Mam teraz w linku np. nazwa=linki ale wyskakuje mi bląd nr1.

<?php 


			echo '

'; if (isset($_GET['nazwa'])) { $nazwa= $_GET['nazwa']; $rezultat = mysql_query("SELECT * FROM podstrony WHERE nazwa= {$nazwa}") or die("Błąd nr1"); } else { $nazwa= home; $rezultat = mysql_query("SELECT * FROM podstrony WHERE nazwa= {$nazwa}") or die("Błąd nr2"); } $record = mysql_fetch_array($rezultat, MYSQL_ASSOC); echo "

".$record['tytul']."

"; echo " ".$record['tresc'].""; echo '
'; ?> [/code]


(athei) #7

Jeśli $nazwa jest stringiem to popraw: WHERE nazwa= {$nazwa} na WHERE nazwa= '{$nazwa}'

Co to jest? $nazwa= home; , raczej $nazwa= 'home';

Patrz uważniej w kod :wink:


(Adwody1) #8

Spróbuj może tak:

<?php


             echo '

'; if (isset($_GET['nazwa'])) { $nazwa= $_GET['nazwa']; $query="SELECT * FROM podstrony WHERE nazwa= '$nazwa' "; $rezultat = mysql_query($query); if (!rezultat) { die ("Błąd nr 1");} } else { $nazwa="home"; $query="SELECT * FROM podstrony WHERE nazwa= '$nazwa' "; $rezultat = mysql_query($query); if (!rezultat) { die ("Błąd nr 2");} } $record = mysql_fetch_array($rezultat, MYSQL_ASSOC); echo "

".$record['tytul']."

"; echo " ".$record['tresc'].""; echo '
'; ?> [/code]


(master of disaster) #9

Dzięki Działa :smiley:


(Krzkaczor) #10

Tak trochę na marginesie: jak nie wiesz co jest źle to rób (w zapytaniach sql)

or die (mysql_error());

I wtedy wiesz co jest źle (mniej więcej) :wink: