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
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
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
Możesz, czemu nie? Byłoby to chyba najlepsze wyjście. Delete from tabele where id= ...
Offline
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
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
<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
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
Time (s) | Query |
---|---|
0.00013 | SET CHARSET latin2 |
0.00005 | SET NAMES latin2 |
0.00092 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.217.237.169' WHERE u.id=1 |
0.00105 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.217.237.169', 1732423352) |
0.00051 | SELECT * FROM punbb_online WHERE logged<1732423052 |
0.00087 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=18675 AND t.moved_to IS NULL |
0.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00186 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=18675 ORDER BY p.id LIMIT 0,25 |
0.00083 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=18675 |
Total query time: 0.00628 s |