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

System wyświetlania i modyfikacji danych - PHP,SQL

Object Storage Arubacloud
0 głosów
346 wizyt
pytanie zadane 6 stycznia 2021 w PHP przez dequk Użytkownik (810 p.)

Witam, tworzę panel wyświetlania danych (SELECT) oraz ich modyfikacji (wpisywanie danych z formularza(input) i zastąpienie poleceniem UPDATE.

Obecne moje wysiłki wygląda w taki sposób:

Kod źródłowy: https://pastebin.com/hiNauQHv

Widok strony:


Idea działania strony polega na wpisaniu w pole ID klienta, następnie skrypt ma wyszukiwać użytkownika i podawać jego dane, czyli id klienta, imie, naziwsko itd

Po prawej stronie chciałbym wprowadzić opcje modyfikacji danych tego klienta, czyli nadal wartość, która została wpisana utrzymuje się i wtedy te dane tego wybranego klienta są przez nas modyfikowane. 
Jednak nie wiem jak rozwinąć obecny kod, aby taką funkcjonalność uzyskać. 

Na pierwszy problem jaki natknąłem się tworząc wyświetlanie to skrypt nie widzi super zmiennych POST, nie wiem co na to wpływa. Możliwe, że czegoś przeoczyłem. Następnym problemem jest podmiana tych danych. W jaki sposób mogę to uzyskać od strony PHP'a?

Kod PHP'a:

 

<?php

			require('db_data.php');

			$id_klient = $_POST['id_klient'];
			$login = $_POST['login'];
			$imie = $_POST['imie'];
			$nazwisko = $_POST['nazwisko'];
			$numer_telefonu = $_POST['numer_telefonu'];
			$email = $_POST['email'];


		   $zapytanie_obecne_dane_klient =
			"SELECT klient.id_klient,klient.login, klient.imie, klient.nazwisko, klient.numer_telefonu, klient.email from dane_klient AS klient
			where id_klient = '".$id_klient."'";
			
		   $zapytanie_update_dane_klient = 
			"UPDATE dane_klient SET login='', imie='',klient='', klient='', klient='' where id_klient= '".$id_klient."'";

			$wynik = $connect->query($zapytanie_obecne_dane_klient);

			if($wynik->num_rows > 0) {
				while ($row = $wynik->fetch_assoc()) {
		echo '<h4>Obecne dane klienta:</h4><br>';
		echo "<h6>ID klienta:".$row["id_klient"]."</h6>
				Login:".$row["login"]."
				<br>
				Imie:".$row["imie"]."
				<br>
				Nazwisko:".$row["nazwisko"]."
				<br>
				Numer telefonu:".$row["numer_telefonu"]."
				<br>
				E-mail:".$row["email"]."
				<br>";
				}
			}
			?>

Bardzo proszę o pomoc

1 odpowiedź

+2 głosów
odpowiedź 6 stycznia 2021 przez SzkolnyAdmin Szeryf (86,360 p.)
wybrane 6 stycznia 2021 przez dequk
 
Najlepsza

Po kolei. Najpierw ogarnij wyszukiwanie klienta i prezentację jego danych w panelu lewym dolnym ( <div class="obecne-dane-klient border border-dark rounded m-4 p-3"> ). W tej chwili cały panel jest usiany komunikatami o nieistniejących  zmiennych. Całkiem słusznie, ponieważ nie wysławszy formularza odwołujesz się do nich. Przerób blok PHP na stronie na następujący (skopiuj poprzedni, bo część się przyda).

<?php
    if(isset($_POST["id_klient_szukaj"])) {
        $id_klient = $_POST["id_klient_szukaj"];
        
        require('db_data.php');
        
        $zapytanie_obecne_dane_klient =
            "SELECT klient.id_klient,klient.login, klient.imie, klient.nazwisko, klient.numer_telefonu, klient.email
            from dane_klient AS klient
            where id_klient = '".$id_klient."'";
            
            $wynik = $connect->query($zapytanie_obecne_dane_klient);
            
            if($wynik->num_rows > 0) {
                while ($row = $wynik->fetch_assoc()) {
                $login = $row["login"];
                $imie = $row['imie'];
                $nazwisko = $row['nazwisko'];
                $numer_telefonu = $row['numer_telefonu'];
                $email = $row['email'];
        echo '<h4>Obecne dane klienta:</h4><br>';
        echo "<h6>ID klienta:".$id_klient."</h6>
                Login:".$login."
                <br>
                Imie:".$imie."
                <br>
                Nazwisko:".$nazwisko."
                <br>
                Numer telefonu:".$numer_telefonu."
                <br>
                E-mail:".$email."
                <br>";
                }
            }
            else echo "<h6>Brak klienta o podanym ID</h6>";
    }
?>                       		

Funkcja isset sprawdza, czy dana zmienna istnieje (u ciebie, czy wysłałeś formularz) i zabezpieczy cię przed wyświetlonymi błędami. Zmienne, które tworzysz w pętli while przydadzą ci się w dalszej części. Popraw kod, przetestuj i daj znać, czy działa. Potem część dalsza.

komentarz 6 stycznia 2021 przez SzkolnyAdmin Szeryf (86,360 p.)

W $zapytanie_update_dane_klient nazwy pól bez new_.

Po kolei.

1. Po wpisaniu identyfikatora klienta i wysłaniu formularza dane w bloku lewym dolnym wyświetlają się prawidłowo?

2. Pola w formularzu po prawej (aktualizującym) są uzupełniane prawidłowo?

3. Nie jest ci potrzebna zmienna $wynik_update, zamiast niej daj

$connect->query($zapytanie_update_dane_klient);

 

komentarz 6 stycznia 2021 przez dequk Użytkownik (810 p.)

Wybór działa prawidłowo, ładują się odpowiednie dane z bazy. Prawidłowo zostają także przekierowane do okna modyfikacji jednak po zmianie danych na inne pojawiają się następujące komunikaty:

Kod po modyfikacji: https://pastebin.com/nBvy6rZm

1
komentarz 6 stycznia 2021 przez SzkolnyAdmin Szeryf (86,360 p.)

Zrób tak. W pierwszym skrypcie po linii 97 (else echo "<h6>Brak klienta o podanym ID</h6>";), ale przed klamrą,  dodaj zamknięcie połączenia z bazą ($connect->close();)

W drugim formularzu dodaj ukryte pole z identyfikatorem:

<input type="hidden" name="id_klient" value="<?php if(isset($id_klient)) echo $id_klient;?>">

W drugim skrypcie dodatkowo odbierz identyfikator

 $id_klient = $_POST['id_klient'];

W if-ie załaduj znowu połączenie z bazą

require('db_data.php');

 

komentarz 6 stycznia 2021 przez dequk Użytkownik (810 p.)
Teraz działa, dziękuje bardzo za pomoc!

Czy za każdym razem mogę w taki sposób sobie pomagać ukrytym polem, gdy chce z jednego formularza przeskakuje na drugi, a w nim nie jest wykorzystywana taka zmienna?
1
komentarz 6 stycznia 2021 przez SzkolnyAdmin Szeryf (86,360 p.)
Powiem ci tak, u mnie działa (oczywiście na innych danych z mojej bazy), gdzieś po drodze od pierwszego do drugiego bloku PHP "zginęła" zmienna id_klient i połączenie z bazą. Nie mam pomysłu. Przekazywanie zmiennych przez pole ukryte to częsta praktyka przy wysyłaniu formularzy, możesz tak robić.

Podobne pytania

0 głosów
2 odpowiedzi 520 wizyt
0 głosów
1 odpowiedź 1,363 wizyt
0 głosów
1 odpowiedź 283 wizyt
pytanie zadane 18 listopada 2018 w PHP przez marek90552 Początkujący (430 p.)

92,555 zapytań

141,403 odpowiedzi

319,555 komentarzy

61,940 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!

...