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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-03-30 09:24:16

  luqis - Użytkownik

luqis
Użytkownik
Zarejestrowany: 2011-03-30

[SQL] [PHP] Usuwanie rekordów za pomocą linku

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

Kod:

<?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

 

#2  2011-03-30 09:38:57

  giegiel - Członek DUG

giegiel
Członek DUG
Skąd: Chrzypsko Wielkie/Poznań
Zarejestrowany: 2006-04-15

Re: [SQL] [PHP] Usuwanie rekordów za pomocą linku

zrób jakieś id dla każdego rekordu i wtedy:

Kod:

 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

 

#3  2011-03-30 10:03:30

  luqis - Użytkownik

luqis
Użytkownik
Zarejestrowany: 2011-03-30

Re: [SQL] [PHP] Usuwanie rekordów za pomocą linku

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

 

#4  2011-03-30 10:13:06

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: [SQL] [PHP] Usuwanie rekordów za pomocą linku

Dziwne pytanie. Pytasz jak odbierać ten parametr, jak już robisz podobnie w tabela.php.

Offline

 

#5  2011-03-30 10:19:38

  luqis - Użytkownik

luqis
Użytkownik
Zarejestrowany: 2011-03-30

Re: [SQL] [PHP] Usuwanie rekordów za pomocą linku

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

 

#6  2011-03-30 10:36:30

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: [SQL] [PHP] Usuwanie rekordów za pomocą linku

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

Offline

 

#7  2011-03-30 10:48:11

  grzegorz.85 - Członek DUG

grzegorz.85
Członek DUG
Skąd: Ostrołęka
Zarejestrowany: 2007-07-12
Serwis

Re: [SQL] [PHP] Usuwanie rekordów za pomocą linku

Tabela w SQL ma zapewne jakiś klucz, który jest jednoznaczny. Na podstawie Twojego zapytania:

Kod:

$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:

Kod:

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.:

Kod:

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

 

#8  2011-03-30 14:44:20

  luqis - Użytkownik

luqis
Użytkownik
Zarejestrowany: 2011-03-30

Re: [SQL] [PHP] Usuwanie rekordów za pomocą linku

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

Kod:

<?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

Kod:

<?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

Kod:

<?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

 

#9  2011-03-30 14:58:13

  kamikaze - Administrator

kamikaze
Administrator
Zarejestrowany: 2004-04-16

Re: [SQL] [PHP] Usuwanie rekordów za pomocą linku

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

 

#10  2011-03-30 16:19:27

  Paad - Użytkownik

Paad
Użytkownik
Skąd: Częstochowa
Zarejestrowany: 2009-02-22

Re: [SQL] [PHP] Usuwanie rekordów za pomocą linku

Kod:

 <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:

Kod:

 <td><a href="usun.php?tabela=PRACOWNICY&id='.$wiersz[0].'" target="_blank">Usun</a></td></tr>';

ewentualnie zależy od standardu jaki wybierzesz

Kod:

 <td><a href="usun.php?tabela=PRACOWNICY&id='.$wiersz[0].'" target="_blank">Usun</a></td></tr>';

[url=http://www.luckysaloon.pl/]pub Częstochowa[/url] | [url=http://nova-it.eu]strony www[/url]

Offline

 

#11  2011-03-30 17:31:16

  luqis - Użytkownik

luqis
Użytkownik
Zarejestrowany: 2011-03-30

Re: [SQL] [PHP] Usuwanie rekordów za pomocą linku

Paad dzięki :) Działa. Nie skojarzyłem że tu trzeba 'and' zrobić.

Offline

 

#12  2011-03-31 16:09:32

  blinki - Użytkownik

blinki
Użytkownik
Skąd: Wschowa/Gdańsk
Zarejestrowany: 2009-04-09
Serwis

Re: [SQL] [PHP] Usuwanie rekordów za pomocą linku

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)


Platforma Systemowa: Debian 5.0 lenny | KDE 4.3.2
PC: FS Amilo li 3710 | DualCore 2.0GHz/3GB/Intel GMA X4500
Przeglądarka: Opera (Firefox sux^^)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.010 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00015 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00137 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.226.104.30' WHERE u.id=1
0.00078 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.226.104.30', 1732744777)
0.00049 SELECT * FROM punbb_online WHERE logged<1732744477
0.00076 SELECT topic_id FROM punbb_posts WHERE id=169801
0.00148 SELECT id FROM punbb_posts WHERE topic_id=18675 ORDER BY posted
0.00059 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.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00094 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.00085 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=18675
Total query time: 0.00751 s