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

question-closed [ PHP ] Usuwanie pojedynczego rekordu

VPS Starter Arubacloud
0 głosów
1,435 wizyt
pytanie zadane 23 listopada 2017 w PHP przez Zelek Użytkownik (960 p.)
zamknięte 25 listopada 2017 przez Zelek

Witam,

potrzebuję skrypt, który umożliwi mi usuwanie pojedynczego rekordu. Każdy rekord wyświetlany jest w osobnym <tr> i również każdy posiada swój button, który po kliknięciu powinien usuwać dany rekord. Proszę o pomoc, bo nie mam pojęcia jak sie za to zabrać indecision

 

			<?php

				require_once "../connect.php";
				
				$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
				$polaczenie -> query ('SET NAMES utf8');
				$polaczenie -> query ('SET CHARACTER_SET utf8_unicode_ci');
				
				if($polaczenie->connect_errno!=0)
				{
					echo "Error: ".$polaczenie->connect_errno;
				}
				else
				{

				$zapytanie = "SELECT * FROM information ORDER BY id";
				$result = $polaczenie->query($zapytanie); 
				
				
				while ( $article = mysqli_fetch_array($result) ) {
					echo '<tr>
							<td>'.$article['Treść'].'</td>
							<td width="2%"><button class="green">Edytuj</button></td>
							<td width="2%"><button class="red">Usuń</button></td>
						  </tr>';
					
				}

					$polaczenie->close();
				}
			?>
			

 

komentarz zamknięcia: Problem rozwiązany.

1 odpowiedź

+3 głosów
odpowiedź 23 listopada 2017 przez event15 Szeryf (93,790 p.)
  • Przede wszystkim - wywal tę małpę z kodu.
  • W php nie mamy silnego typowania, więc powinniśmy stosować === oraz !==
  • Zamiast tylko robić echo dla errora, warto tu rzucić wyjątek - przynajmniej na tak wczesnym etapie nauki. Reszta skryptu się wtedy nie wykona, a więc wszystkie dane będą bezpieczne ;) Wtedy zniknie też potrzeba pisania "else" 
  • Nie przypisuj wartości w instrukcjach sterujących w kodzie - czyli w switch, while, if, itp. Zasada jest taka, że przypisujemy zmienne nad taką instrukcją. 

Funkcję usuwania rekordu osiądniesz przez stworzenie metody obsługującej DELETE w bazie. Najprościej zrobić formularz, w którym jest osadzona ta cała tabelka, a przycisk usunięcia wysyła dane do usunięcia do pliku - chociażby delete.php - w którym będziesz miał obsługę usuwania rekordu z bazy.

komentarz 23 listopada 2017 przez Zelek Użytkownik (960 p.)
Szczerze? Za bardzo mi nie pomogłeś bo tyle to wiedziałem, a odnośnie kodu to spokojnie wiem co piszę :)
1
komentarz 23 listopada 2017 przez efiku Szeryf (75,160 p.)

"a odnośnie kodu to spokojnie wiem co piszę :)"

PS: No właśnie nie wiesz stąd jego odpowiedź.

Ale oczywiście, nikt nie będzie Cię zmuszać, są inni użytkownicy czytający którzy chcą się czegoś nauczyć, a nie klepać kod :) 

Odpowiedź na Twoje pytanie: 

"Funkcję usuwania rekordu osiągniesz przez stworzenie metody obsługującej DELETE w bazie. Najprościej zrobić formularz, w którym jest osadzona ta cała tabelka, a przycisk usunięcia wysyła dane do usunięcia do pliku (za pomocą choćby $_GET) - chociażby delete.php - w którym będziesz miał obsługę usuwania rekordu z bazy"

komentarz 23 listopada 2017 przez event15 Szeryf (93,790 p.)
Nie wiesz. Nie potrafisz nawet zajrzeć na stronę dokumentacji mysql, żeby sprawdzić jak zrobić DELETE. Nawet nie wpadłeś na pomysł, że skoro robisz SELECT, który coś ZAZNACZA to jeśli chcesz USUNĄĆ coś z bazy to wystarczy wykonać DELETE.

Skoro nawet tyle wiedziałeś ile Ci napisałem, to znaczy że znasz doskonale język i nie jest Ci potrzebna pomoc, ot co.
komentarz 24 listopada 2017 przez Zelek Użytkownik (960 p.)
Ludzie.. prosiłem o pomoc z usuwaniem rekordu, a nie o dopracowanie kodu. Póki co tworzę submita z linkiem "?action=delete?id='.$article['Id'].'" i teraz próbuję ogarnąć wykonywanie danego skryptu po kliknięciu tego przycisku..
komentarz 24 listopada 2017 przez Zelek Użytkownik (960 p.)
edycja 25 listopada 2017 przez Zelek

Kod ogarnięty tylko problem teraz taki, że nie ważne co mam w adresie (http://strona.pl/index.php?action=delete&id=2) to tak czy siak usuwa mi rekordy od ostatniego do pierwszego. indecision

				while ( $article = mysqli_fetch_array($result)) {
					$id = $article['Id'];
					
					echo '<tr>
							<td>'.$article['Treść'].'</td>
							<td width="2%"><a href="?action=edit&id='.$article['Id'].'"><button class="green">Edytuj</button></a></td>
							<td width="2%"><a href="?action=delete&id='.$id.'"><button class="red">Usuń</button></td>
						  </tr>';				
				}	
					
				if ($_GET['action']=='delete' && isset($_GET['id'])) {
					$zapytanie = "DELETE FROM `information` WHERE `Id`='$id'";
					$polaczenie->query($zapytanie);
				}

 

 

komentarz 26 listopada 2017 przez event15 Szeryf (93,790 p.)

Wydaje się być w miarę poprawne a jedyne co nasuwa się jako przyczyna błędów to to:

$zapytanie = "DELETE FROM `information` WHERE `Id`='$id'";

Ja bym już prędzej spróbował tak:

$id = (int) $_GET['id'];

$zapytanie = "DELETE FROM information WHERE Id = {$id}";

 

komentarz 26 listopada 2017 przez Zelek Użytkownik (960 p.)
Dokładnie tak samo zrobiłem i wszystko działa tylko zapomniałem zamknąć temat. Dzięki za pomoc. Odnośnie tego kodu jeszcze chciałem dodać, że tylko sobie ćwiczyłem i jeżeli chodzi o klienta to nie zastosowałbym tak niestabilnego kodu także jak za bardzo naskoczyłem to przepraszam :)

Podobne pytania

0 głosów
1 odpowiedź 461 wizyt
pytanie zadane 17 października 2016 w PHP przez niezalogowany
0 głosów
2 odpowiedzi 498 wizyt
pytanie zadane 22 czerwca 2016 w PHP przez niezalogowany
0 głosów
2 odpowiedzi 11,303 wizyt
pytanie zadane 13 stycznia 2017 w SQL, bazy danych przez Paweł123 Nałogowiec (33,500 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...