• 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

Fiszki IT
Fiszki IT
0 głosów
107 wizyt
pytanie zadane 6 stycznia w PHP przez Konrad Siwczyk Użytkownik (790 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 przez SzkolnyAdmin Maniak (57,360 p.)
wybrane 6 stycznia przez Konrad Siwczyk
 
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 przez SzkolnyAdmin Maniak (57,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 przez Konrad Siwczyk Użytkownik (790 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 przez SzkolnyAdmin Maniak (57,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 przez Konrad Siwczyk Użytkownik (790 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 przez SzkolnyAdmin Maniak (57,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 53 wizyt
0 głosów
1 odpowiedź 564 wizyt
0 głosów
1 odpowiedź 124 wizyt
pytanie zadane 18 listopada 2018 w PHP przez marek90552 Początkujący (430 p.)
Porady nie od parady
Forum posiada swój własny serwer Discord, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

84,762 zapytań

133,562 odpowiedzi

295,998 komentarzy

56,017 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...