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&amp;id='.$wiersz[0].'" target="_blank">Usun</a></td></tr>';

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 ;-)