Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Usuwanie kilku rekordów, czyli problem z checkbox'ami
ergoline
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.12.2008

Ostrzeżenie: (0%)
-----


Witam!

Chciałbym, mieć możliwośc usuwania kilku rekordów "za jednym zamachem" przy pomocy pól checkbox. Ogónie strona składa się z dwóch części:
1. usuwanie pojedynczego rekorku
2. usuwanie kilku rekordów

Pierwsza część działa dobrze, natomiast z drugą mam problem. Najpierw użytkownik wyszukuje rekordy (wybiera kierunek i semestr -> wyszukiwany jest numer grupy -> nr grupy zapisywany jest do tablicy -> pobrany z tablicy nr grupy jest wykorzystywany do wyszukiwania rekordów), wyświetla się tableka z wynikiem szukania, gdzie przy każdym rekordzie jest checkbox. Użytkownik zaznacza wybrane, klika "Usuń wszystkie" i ... nie działa

  1. <?php
  2.  
  3. require ("check.php");
  4.  
  5. $polaczenie = mysql_connect ("localhost", "tergoline", "123456")
  6. or die ("Nie można połączyć z serwerem baz danych");
  7. $wybor_bazy = mysql_select_db ("db_ergoline")
  8. or die ("Nie można wybrać wymaganej bazy danych");
  9.  
  10. echo '1. Proszę podać imię i nazwisko studenta:
  11. </br>
  12. <form action = "usun.php" method = "post">
  13.    <table>
  14.        <tr>
  15.            <td>Imię:</td>
  16.            <td><input type = "text" name = "imie"></td>
  17.        </tr>
  18.        <tr>
  19.            <td>Nazwisko:</td>
  20.            <td><input type = "text" name = "nazwisko"></td>
  21.        </tr>
  22.    </table>
  23.    </br>
  24.    <input type = "submit" value = "Skreśl z listy studentów">
  25.    <input type = "reset" value = "Wyczyść forumlarz">
  26. </form>';
  27.  
  28. $imie = $_POST['imie'];
  29. $nazwisko = $_POST['nazwisko'];
  30.  
  31. $usun = mysql_query ("DELETE FROM osoba WHERE (imie = '$imie' and nazwisko = '$nazwisko')")
  32. or die ("Bład przy usuwaniu rekordu");
  33.  
  34.  
  35. echo ' 2. Znajdź studenta:';
  36. echo '</br>';
  37.  
  38. echo '<form action = "usun.php" method = "post">';
  39.  
  40. $sql = mysql_query ("SELECT nazwa FROM kierunek")
  41. or die ("Bład przy pobieraniu kierunków");
  42. echo 'Kierunek: <select name = "kierunek">';
  43. while ($row = mysql_fetch_assoc($sql))
  44. {
  45.    echo '<option value = " '.$row['nazwa'].' "> '.$row['nazwa'].' </option>';
  46. }
  47. echo '</select>';
  48. echo '</br>';
  49.  
  50. $sql1 = mysql_query ("SELECT ktory FROM semestr")
  51. or die ("Błąd przy pobieraniu semestrów");
  52. echo ' Semestr: <select name = "semestr">';
  53. while ($row1 = mysql_fetch_assoc($sql1))
  54. {
  55.    echo '<option value = " '.$row1['ktory'].' "> '.$row1['ktory'].' </option>';
  56. }
  57. echo '</select>';
  58. echo '</br>';
  59.  
  60. $kierunek = $_POST['kierunek'];
  61. $semestr = $_POST['semestr'];
  62.  
  63. </br>
  64. <input type = "submit" value = "Znajdź">
  65. </form>';
  66.  
  67. echo '<form action = "usun.php" method = "post">';
  68. $grupa = mysql_query ("SELECT grupa_id FROM grupa where (kierunek = '$kierunek' and semestr = '$semestr')")
  69. or die ("Nie można pobrać ID grupy");
  70. $tabela = mysql_fetch_array($grupa)
  71. or die ("Nie można zapisać wyniku w tabeli lub nie znaleziono żadnych studentów");
  72. $znajdz  = mysql_query ("SELECT * FROM osoba where (grupa_id = ".$tabela['grupa_id'].")")
  73. or die ("Nie można znaleźć studentów o podanym ID grupy");
  74. echo '<table cellpadding = \"11\" border = 3>';
  75. echo '     <tr>
  76.        <td>ID</td>
  77.        <td>Grupa ID</td>
  78.        <td>Imię</td>
  79.        <td>Nazwisko</td>
  80.        <td>Usuń</td>
  81.    </tr>';
  82.    
  83. while ($row = mysql_fetch_array($znajdz))
  84. {
  85.    echo '<tr>';    
  86.    echo '<td>'.$row[0].'</td>';
  87.    echo '<td>'.$row[1].'</td>';
  88.    echo '<td>'.$row[2].'</td>';
  89.    echo '<td>'.$row[3].'</td>';
  90.    echo '<td> <input type = "checkbox" name = "delete['.$row['0'].']" value = "on"></td>';
  91.    echo '</tr>';
  92. }
  93. echo '</table>';
  94. echo '</br>';
  95. echo '<input type = "submit" name = "usun" value = "Usuń zaznaczone">';
  96. echo '</form>';
  97.  
  98. if ($_POST['usun'] == 'Usuń zaznaczone' and isset($_POST['delete']) and is_array($_POST['delete']))
  99. {
  100.    foreach ($_POST['delete'] as $key=>$value)
  101.    {
  102.        $q = "DELETE FROM osoba WHERE id = '{$key}';";
  103.        mysql_query($q);
  104.    }
  105. }        
  106. ?>


Gdzie popełniam błąd?

Pozdrawiam...

P.S.
Dlaczego przy pierwszym wejściu na stronę dostaję błąd "Nie można zapisać wyniku w tabeli lub nie znaleziono żadnych studentów"?
Taki sam błąd otrzymuję, gdy chcę usunąć kilka rekordów...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ergoline
post
Post #2





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 26.12.2008

Ostrzeżenie: (0%)
-----


Znowu coś tam próbowałem poprawić:

  1. <?php
  2.  
  3. require ("check.php");
  4.  
  5. $polaczenie = mysql_connect ("localhost", "trautbergp", "123456")
  6. or die ("Nie można połączyć z serwerem baz danych");
  7. $wybor_bazy = mysql_select_db ("db_trautbergp")
  8. or die ("Nie można wybrać wymaganej bazy danych");
  9.  
  10. echo '1. Proszę podać imię i nazwisko studenta:
  11. </br>
  12. <form action = "usun.php" method = "post">
  13.    <table>
  14.        <tr>
  15.            <td>Imię:</td>
  16.            <td><input type = "text" name = "imie"></td>
  17.        </tr>
  18.        <tr>
  19.            <td>Nazwisko:</td>
  20.            <td><input type = "text" name = "nazwisko"></td>
  21.        </tr>
  22.    </table>
  23.    </br>
  24.    <input type = "submit" name = "skresl" value = "Skreśl z listy studentów">
  25.    <input type = "reset" value = "Wyczyść forumlarz">
  26. </form>';
  27.  
  28. $imie = $_POST['imie'];
  29. $nazwisko = $_POST['nazwisko'];
  30.  
  31. if ($POST['skresl'] == "Skreśl z listy studentów")
  32. {
  33.    $usun = mysql_query ("DELETE FROM osoba WHERE (imie = '$imie' and nazwisko = '$nazwisko')")
  34.    or die ("Bład przy usuwaniu rekordu");
  35. }
  36.  
  37.  
  38. echo ' 2. Znajdź studenta:';
  39. echo '</br>';
  40.  
  41. echo '<form action = "usun.php" method = "post">';
  42.  
  43. $sql = mysql_query ("SELECT nazwa FROM kierunek")
  44. or die ("Bład przy pobieraniu kierunków");
  45. echo 'Kierunek: <select name = "kierunek">';
  46. while ($row = mysql_fetch_assoc($sql))
  47. {
  48.    echo '<option value = " '.$row['nazwa'].' "> '.$row['nazwa'].' </option>';
  49. }
  50. echo '</select>';
  51. echo '</br>';
  52.  
  53. $sql1 = mysql_query ("SELECT ktory FROM semestr")
  54. or die ("Błąd przy pobieraniu semestrów");
  55. echo ' Semestr: <select name = "semestr">';
  56. while ($row1 = mysql_fetch_assoc($sql1))
  57. {
  58.    echo '<option value = " '.$row1['ktory'].' "> '.$row1['ktory'].' </option>';
  59. }
  60. echo '</select>';
  61. echo '</br>';
  62.  
  63. $kierunek = $_POST['kierunek'];
  64. $semestr = $_POST['semestr'];
  65.  
  66. </br>
  67. <input type = "submit" name = "znajdz" value = "Znajdź">
  68. </form>';
  69.  
  70. if ($_POST['znajdz'] == "Znajdź")
  71. {
  72.    echo '<form action = "usun.php" method = "post">';
  73.    $grupa = mysql_query ("SELECT grupa_id FROM grupa where (kierunek = '$kierunek' and semestr = '$semestr')")
  74.    or die ("Nie można pobrać ID grupy");
  75.    $tabela = mysql_fetch_array($grupa)
  76.    or die ("Nie można zapisać wyniku w tabeli lub nie znaleziono żadnych studentów");
  77.    $znajdz  = mysql_query ("SELECT * FROM osoba where (grupa_id = ".$tabela['grupa_id'].")")
  78.    or die ("Nie można znaleźć studentów o podanym ID grupy");
  79.    echo '<table cellpadding = \"11\" border = 3>';
  80.    echo '      <tr>
  81.            <td>ID</td>
  82.            <td>Grupa ID</td>
  83.            <td>Imię</td>
  84.            <td>Nazwisko</td>
  85.            <td>Usuń</td>
  86.        </tr>';
  87.    
  88.    while ($row = mysql_fetch_array($znajdz))
  89.    {
  90.        echo '<tr>';    
  91.        echo '<td>'.$row[0].'</td>';
  92.        echo '<td>'.$row[1].'</td>';
  93.        echo '<td>'.$row[2].'</td>';
  94.        echo '<td>'.$row[3].'</td>';
  95.        echo '<td> <input type = "checkbox" name = "delete[]" value = " '.$row[0].' "></td>';
  96.        echo '</tr>';
  97.    }
  98.    echo '</table>';
  99.        echo '</br>';
  100.        echo '<input type = "submit" name = "usun" value = "Usuń zaznaczone">';
  101.        echo '</form>';
  102.    
  103.    if ($_POST['usun'] == "Usuń zaznaczone")
  104.    {
  105.        if (!empty($_POST['delete'])) {print_r ($tablica);}
  106.        //or die ("Nie można utworzyć tablicy");
  107.        //$string = implode (",", $tablica)
  108.        //or die ("Nie można utworzyć $string");
  109.        //$usun = mysql_query ("DELETE FROM osoba WHERE id IN ($string)")
  110.        //or die ("Nie można usunąć rekordów");
  111.        
  112.    }
  113. }
  114.  
  115. ?>


1. Na razie chcę zobaczyć, czy w ogóle checkbox'y "zaznaczają się"... Jednak nie widzę, żadnego efektu. To samo jeśli wyciągnę
  1. <?php
  2. if (!empty($_POST['delete'])) {print_r ($tablica);}
  3. ?>
przed warunek
  1. <?php
  2. if ($_POST['usun'] == "Usuń zaznaczone")
  3. ?>


2. Ciągle nie umiem zrozumieć o co dokładnie chodzi z testowaniem zapytania. Mógłbyś jeszcze raz, powoli, spokojnie i dużymi literami to powiedzieć?

3. Co do raportowania błędów, to nie pcham się do tego - nie mój serwer...

Pozdrawiam...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 04:57