• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP wyswietl dane po kliknieciu

Object Storage Arubacloud
0 głosów
758 wizyt
pytanie zadane 14 października 2017 w PHP przez moofi Początkujący (470 p.)
Witam,

Napisalem kod w php , ktory wyswietla po kilka wynikow z kadego rzedu bazy danych, obok kazdego wyniku mam buton. Chcialbym zeby po kliknieciu tego butona wyswietlily sie na nastepnej stronie wszystkie dane przypisane do tego id. Mozna to porownac do sklepu internetowego gdzie na jednej stronie sa tylko nazwy produktow, a po kliknieciu otwiera sie strona z opisem. Poradzcie gdzie moge znalezsc tutorial albo przykladowy kod jak to powinno wygladac. Sorki za pisownie ale na tym komputerze nie mam poskich znakow.

2 odpowiedzi

+3 głosów
odpowiedź 14 października 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
Robisz zwykły link na buttonie, a link prowadzi do nowej podstrony, gdzie w adresie przekazywane jest coś do identyfikacji każdego rekordu - pewnie po prostu id. Może to być zrobione poprzez parametry w linku, np. example.com/page.php?id=5 i wtedy w tablicy $_GET będziesz miał element z tą wartością ($_GET['id']). Można też bardziej się postarać i wkomponować to gdzieś w adres, np. example.com/page/5, tylko wtedy trzeba się jakoś do tego dostać i wyciągnąć co potrzeba. A reszta chyba wiadoma, sprawdzasz czy rekord o podanym id istnieje, wyświetlasz potrzebne dane i dajesz inne potrzebne akcje.
komentarz 16 października 2017 przez moofi Początkujący (470 p.)

Pozamykalem klamry poprawilem kod i jest lepiej, ale teraz pokazuje :

 ID: 98> Notice: Undefined variable: ID in /Applications/XAMPP/xamppfiles/htdocs/hms/view.php on line 17

Notice: Undefined variable: NAME in /Applications/XAMPP/xamppfiles/htdocs/hms/view.php on line 18

Notice: Undefined variable: SURNAME in /Applications/XAMPP/xamppfiles/htdocs/hms/view.php on line 19

Notice: Undefined variable: DOB in /Applications/XAMPP/xamppfiles/htdocs/hms/view.php on line 20

komentarz 16 października 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)

Ach, no tak. To zapewne przez ten fragment:

while($row=mysqli_fetch_array($result)){
        $ID=$row['ID'];
            $NAME=$row['NAME'];
            $PAT_SURNAME=$row['SURNAME'];
            $PAT_DOB=$row['DOB'];
    }

echo'<tr>
<td>'.$ID.'</td>
<td>'.$NAME.'</td>
<td>'.$SURNAME.'</td>
<td>'.$DOB.'</td>
</tr>';

W pętli odczytujesz te wartości z rezultatu, a więc dlaczego tych danych nie wyświetlasz także w pętli? Inna sprawa jest taka, że jak rozumiem zawsze będzie tu zwrócony rekord o konkretnym id. A więc po co tu pętla? Jak dla mnie jest zbędna.

A jeszcze zupełnie przy okazji:

$query=" select * from tbs where ID = '$numPat'";

Mam nadzieję, że jesteś świadomy tego, iż takie podstawienie zmiennej na sztywno do zapytania z bazy to proszenie się o atak sql injection. Warto byłoby bindować dane, wtedy nie ma problemu.

komentarz 16 października 2017 przez moofi Początkujący (470 p.)
Wyglada no to ze problem jest w tym zapytaniu: $query=" select * from tbs where ID = '$numPat'";  Jak usunalem  ID = '$numPat' to wyswietla dane z bazy ale z innego id.  Co jest zle z tym zapytaniem? Probowalem rowniez zmienic na ID = 'numPat' ale rowniez taki sam blad.
komentarz 16 października 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
Przeczytałeś mój komentarz wyżej? Jeśli pobierasz wiele rekordów użyj pętli. Jeśli pobierasz jeden rekord (a tak się jak rozumiem dzieje gdy pobierasz po id), nie używaj pętli. Ostatecznie użyj pętli, ale w niej też wyświetlaj dane - nie poza nią, tak jak to masz w kodzie powyżej.

Jeśli to nie pomoże to sprawdź, czy na pewno masz kolumnę "ID" (wielkość znaków też ważna) oraz czy na pewno rekord z id na którym próbujesz testować istnieje w bazie.
komentarz 16 października 2017 przez moofi Początkujący (470 p.)
Ostatecznie dziala zmienilem zapytanie na $query=" select * from tbs where ID = '{$_GET['numPat']}'";

 

Dziekuje wszystkim za pomoc i poswiecony czas.
+1 głos
odpowiedź 14 października 2017 przez mtk3d Nałogowiec (46,690 p.)
Tutaj nie trzeba tutorial, jeśli już napisałeś wyświetlanie rekordów. Zakładam, że nie używasz żadnego frameworka, ani nie piszesz obiektowo, więc prostu tworzysz sobie nowy plik, który wyświetla tylko jeden rekord z bazy. Rekordy powinny posiadać index (id), zakładam że twoja tabela to posiada, więc button powinien zawierać odnośnik do tego nowego pliku i przekazać mu parametr id, metodą GET. I na tej nowej stronie pobierasz parametr id i na jego podstawie wyświetlasz rekord.

Podobne pytania

0 głosów
1 odpowiedź 256 wizyt
0 głosów
1 odpowiedź 439 wizyt
pytanie zadane 4 grudnia 2018 w PHP przez genesis12 Nowicjusz (180 p.)
0 głosów
2 odpowiedzi 337 wizyt
pytanie zadane 5 listopada 2018 w PHP przez xxkondzioxx15 Obywatel (1,440 p.)

92,563 zapytań

141,415 odpowiedzi

319,593 komentarzy

61,948 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...