Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam.
Mam następujący problem:
Zrobiłem plik tabela.php wyświetlający dane z jednej z tabel w bazie, i muszę utworzyć obok każdego wiersza link do usunięcia tego wiersza, link musi się odnosić do plik usun.php. Sam link wykonałem, ale nie wiem jak przekazać za pomocą linku parametr/zmienną która powie plikowi usun.php który rekord ma usunąć. Ktoś wie jak to wykonać bo przeszukałem wszystko i kombinowałem, ale nic z tego nie wyszło.
tabela.php
<?php
include("./sql_inc.php");
$baza = new database;
$baza -> db_select('test');
if($_GET['parametr'] == 'wartosc1')
{
echo '<table border="1">';
$zapytanie1 = "SELECT ID_PRAC, NAZWISKO, ETAT, ID_SZEFA, ZATRUDNIONY, PLACA_POD, PLACA_DOD, ID_ZESP FROM `PRACOWNICY`" ;
$id1 = mysql_query($zapytanie1);
while ($wiersz = mysql_fetch_row($id1)) {
echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td>'. $wiersz[3] .'</td><td>'. $wiersz[4] .'</td><td>'. $wiersz[5] .'</td><td>'. $wiersz[6] .'</td><td>'. $wiersz[7] .'</td><td><a href="usun.php?parametr=usun_tab" target="_blank">Usun</a></td></tr>';
}
echo '<table>';
}
if($_GET['parametr'] == 'wartosc2')
{
echo '<table border="1">';
$zapytanie1 = "SELECT NAZWA, PLACA_MIN, PLACA_MAX FROM `ETATY`" ;
$id1 = mysql_query($zapytanie1);
while ($wiersz = mysql_fetch_row($id1)) {
echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td><a href="usun.php?parametr=usun_tab" target="_blank">Usun</a></td></tr>';
}
echo '<table>';
}
if($_GET['parametr'] == 'wartosc3')
{
echo '<table border="1">';
echo '<tr><td><b><center>ID</center></b></td><td><b><center>Nazwa</center></b></td><td><b><center>Adres</center></b></td></tr> ';
$zapytanie1 = "SELECT ID_ZESP, NAZWA, ADRES FROM `ZESPOLY`" ;
$id1 = mysql_query($zapytanie1);
while ($wiersz = mysql_fetch_row($id1)) {
echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td><a href="usun.php?parametr=usun_tab" target="_blank">Usun</a></td></tr>';
}
echo '<table>';
}
?>Offline



Członek DUG




zrób jakieś id dla każdego rekordu i wtedy:
echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td><a href="usun.php?id='.$id.'" target="_blank">Usun</a></td></tr>';
}Offline
A jak w takim wypadku będzie to wyglądać w pliku usun.php? Jak odebrać ten parametr i według niego warunkować co ma być usunięte?
Offline



Administrator




Dziwne pytanie. Pytasz jak odbierać ten parametr, jak już robisz podobnie w tabela.php.
Offline
Bardziej chodzi mi jak później użyć go do uwarunkowania co ma być usunięte. Czy mogę dać ten parametr w warunku WHERE sql'a?
Offline



Administrator




Możesz, czemu nie? Byłoby to chyba najlepsze wyjście. Delete from tabele where id= ...
Offline

Członek DUG


Tabela w SQL ma zapewne jakiś klucz, który jest jednoznaczny. Na podstawie Twojego zapytania:
$zapytanie1 = "SELECT ID_PRAC, NAZWISKO, ETAT, ID_SZEFA, ZATRUDNIONY, PLACA_POD, PLACA_DOD, ID_ZESP FROM `PRACOWNICY`" ;
wnioskuję, że dla tabeli `PRACOWNICY` takim kluczem będzie `ID_PRAC`. Wówczas wygeneruj np. link:
echo '<a href="usun.php?tabela=PRACOWNICY&id='.$wiersz[0].'">Usun</a>';
Następnie w pliku usun.php odczytujesz parametry tabela oraz id, i na ich podstawie budujesz zapytanie usuwajace, np.:
if($_GET['tabela'] == "PRACOWNICY")
$zapytanie1 = "DELETE FROM `PRACOWNICY` WHERE ID_PRAC = '".$_GET['id']."';";Dodam tylko, że rozwiązanie to tylko pokazuje sposób, i nie zalecam jego stosowania ze względu na podatność tak budowanego zapytania na SQL Injection - należy sprawdzać parametry użytkownika ($_GET, $_POST, $_COOKIE)
Offline
Niestety grzegorz.85 nie dziala to rozwiazanie :(
Zawartosci moich plikow tabele.php i usun.php oraz index2.php do której podpiety jest tabele.php
usun.php
<?php
include("./sql_inc.php");
$baza = new database;
$baza -> db_select('test');
if($_GET['parametr'] == 'usun1')
{
echo 'USUNIETO ASYSTENTA ZATRUDNIONEGO NAJWCZESNIEJ<table border="1">';
$zapytanie2 = "DELETE FROM PRACOWNICY ORDER BY TIMESTAMP LIMIT 1";
$id0 = mysql_query($zapytanie2);
echo 'done';
}
if($_GET['parametr'] == 'usun2')
{
echo 'USUNIETO ETAT "STARZYSTA" I WSZYTSKICH JEGO PRACOWNIKOW<table border="1">';
$zapytanie0 = "DELETE FROM ETATY WHERE NAZWA='STAZYSTA'";
$id0 = mysql_query($zapytanie0);
$zapytanie0 = "DELETE FROM PRACOWNICY WHERE ETAT='STAZYSTA'";
$id0 = mysql_query($zapytanie0);
}
if($_GET['parametr'] == 'usun3')
{
echo 'USUNIETO ZESPOL "BADANIA OPERACYJNE" I WSZYTSKICH JEGO PRACOWNIKOW<table border="1">';
$zapytanie1 = "DELETE FROM ZESPOLY WHERE NAZWA='BADANIA OPERACYJNE'";
$id0 = mysql_query($zapytanie1);
$zapytanie1 = "DELETE FROM PRACOWNICY WHERE ID_ZESP=( SELECT ID_ZESP FROM ZESPOLY WHERE NAZWA = 'BADANIA OPERACYJNE' )";
$id0 = mysql_query($zapytanie1);
}
/------->
if($_GET['tabela'] == "PRACOWNICY")
{
$zapytanie3 = "DELETE FROM `PRACOWNICY` WHERE ID_PRAC='".$_GET[id]."';";
$id3 = mysql_query($zapytanie3);
}
/------->
?>tabele.php
<?php
include("./sql_inc.php");
$baza = new database;
$baza -> db_select('test');
if($_GET['parametr'] == 'wartosc1')
{
echo '<table border="1">';
$zapytanie1 = "SELECT ID_PRAC, NAZWISKO, ETAT, ID_SZEFA, ZATRUDNIONY, PLACA_POD, PLACA_DOD, ID_ZESP FROM `PRACOWNICY`" ;
$id1 = mysql_query($zapytanie1);
while ($wiersz = mysql_fetch_row($id1)) {
echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td>'. $wiersz[3] .'</td><td>'. $wiersz[4] .'</td>
<td>'. $wiersz[5] .'</td><td>'. $wiersz[6] .'</td><td>'. $wiersz[7] .'</td>
<td><a href="usun.php?tabela=PRACOWNICY?id='.$wiersz[0].'" target="_blank">Usun</a></td></tr>';
}
echo '<table>';
}
if($_GET['parametr'] == 'wartosc2')
{
echo '<table border="1">';
$zapytanie1 = "SELECT NAZWA, PLACA_MIN, PLACA_MAX FROM `ETATY`" ;
$id1 = mysql_query($zapytanie1);
while ($wiersz = mysql_fetch_row($id1)) {
echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td><a href="usun.php?tabela=PRACOWNICY" target="_blank">Usun</a></td></tr>';
}
echo '<table>';
}
if($_GET['parametr'] == 'wartosc3')
{
echo '<table border="1">';
echo '<tr><td><b><center>ID</center></b></td><td><b><center>Nazwa</center></b></td><td><b><center>Adres</center></b></td></tr> ';
$zapytanie1 = "SELECT ID_ZESP, NAZWA, ADRES FROM `ZESPOLY`" ;
$id1 = mysql_query($zapytanie1);
while ($wiersz = mysql_fetch_row($id1)) {
echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td><a href="usun.php?parametr=usun_tab" target="_blank">Usun</a></td></tr>';
}
echo '<table>';
}
?>index2.php
<?php
$sql_conn = mysql_connect('localhost', 'root', 'haslowinnoukrytymbyc')
or die('Nie mogłem połaczyć się z bazą danych');
$baza = mysql_select_db('test')
or die('Blad');
$id1 = mysql_query($zapytanie1);
$zapytanie1 = "SELECT COUNT(*) NAZWISKO FROM `PRACOWNICY`" ;
$id1 = mysql_query($zapytanie1);
echo '<table border="1">';
while ($wiersz = mysql_fetch_row($id1)) {
echo '<tr><td><b><center>Nazwa tabeli</center></b></td><td><b>Liczba wierszy</b></td><td><b>Zawartosc</b></td><td><b>Aktualizuj</b></td><td><b>Usun</b></td></tr>
<tr><td>PRACOWNICY</td><td>'. $wiersz[0] .'</td><td><a href="tabele.php?parametr=wartosc1" target="_blank">Pokaz</a></td>
<td><a href="aktualizuj.php?parametr=aktualizuj1" target="_blank">1</a> /
<a href="aktualizuj.php?parametr=aktualizuj2" target="_blank">2</a></td>
<td><a href="usun.php?parametr=usun1" target="_blank">1</a></td></tr>';
}
$id1 = mysql_query($zapytanie1);
$zapytanie1 = "SELECT COUNT(*) NAZWA FROM `ETATY`" ;
$id1 = mysql_query($zapytanie1);
while ($wiersz = mysql_fetch_row($id1)) {
echo '<tr><td>ETATY</td><td>'. $wiersz[0] .'</td><td><a href="tabele.php?parametr=wartosc2" target="_blank">Pokaz</a></td>
<td><a href="aktualizuj.php?parametr=aktualizuj3" target="_blank">1</a></td>
<td><a href="usun.php?parametr=usun2" target="_blank">1</a></td></tr></tr>';
}
$id1 = mysql_query($zapytanie1);
$zapytanie1 = "SELECT COUNT(*) ADRES FROM `ZESPOLY`" ;
$id1 = mysql_query($zapytanie1);
while ($wiersz = mysql_fetch_row($id1)) {
echo '<tr><td>ZESPOLY</td><td>'. $wiersz[0] .'</td><td><a href="tabele.php?parametr=wartosc3" target="_blank">Pokaz</a></td>
<td><a href="aktualizuj.php?parametr=aktualizuj4" target="_blank">1</a></td>
<td><a href="usun.php?parametr=usun3" target="_blank">1</a></td></tr></tr>';
}
echo '</table>';
mysql_close($sql_conn);
?>Moze ktos wywnioskuje co jest źle? Bo ja już nie mam pomysłu.
Offline



Administrator




Najpierw napisz co nie działa. Skrypt się nie wykonuje, dostajesz jakiś błąd, nie usuwa danych z tabeli? Jaki url uruchamiałeś? Jeśli masz raportowanie błędów w PHP, włącz. Możesz zerknąć do logów serwera bazy danych czy nie ma jakichś błędów. Jeśli nie loguje błędów z zapytań, skonfiguruj logowanie.
Offline

Użytkownik


<td><a href="usun.php?tabela=PRACOWNICY?id='.$wiersz[0].'" target="_blank">Usun</a></td></tr>';
Czy jeżeli przekazujesz więcej niż jeden parametr, to nie powinieneś użyć & zamiast kolejnego "?"
czyli:
<td><a href="usun.php?tabela=PRACOWNICY&id='.$wiersz[0].'" target="_blank">Usun</a></td></tr>';
ewentualnie zależy od standardu jaki wybierzesz
<td><a href="usun.php?tabela=PRACOWNICY&id='.$wiersz[0].'" target="_blank">Usun</a></td></tr>';
Offline
Paad dzięki :) Działa. Nie skojarzyłem że tu trzeba 'and' zrobić.
Offline

Użytkownik
z letsza się wtrącę jak już wklejasz kod to:
1. Chowaj dane łączenia do bazy bo już azhag pewnie ci grzebał w bazie ^^
2. Formatuj kod, ty go pisałeś i widzisz co w nim jest, ale jak ktoś inny patrz widzi jakąś tabelę na połowę kodu.
Ostatnio edytowany przez blinki (2011-03-31 16:10:01)
Offline
Strony: 1