Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]usun zaznaczone
Forum PHP.pl > Forum > Przedszkole
neo1986kk
Witam, przeczytałem kilkanaście tematów na forum i trochę zrozumiałem zasadę działania, ale nie wiem jak to przełożyć na mój kod. Proszę o sprawdzenie moich wypocin:P
plik wiadomości.php
  1. <?
  2. include('zbaza.php');
  3. $query = "SELECT * FROM wiadomoscia";
  4. $result = mysql_query ($query);
  5. echo '<center><table border="1">';
  6. echo '<tr><td align="center">ZAZNACZ</td><td align="center">DATA</td><td
  7.  
  8. align="center">WIADOMOŚĆ</td></tr>';
  9. echo '<form action="usunz.php" method="post">';
  10. $i=1;
  11. while ($wiersz1 = mysql_fetch_array($result))
  12. {
  13.  
  14. echo '<tr><td align="center">'.$i.'<input type="checkbox" name="usunz[]" value="'. $wiersz1[0].'"></td><td
  15.  
  16. align="center">'. $wiersz1[1].'</td><td align="center">'. $wiersz1[2].'</td></tr>';
  17. $i=$i+1;
  18. }
  19. echo '</table >';
  20. echo '<input type="submit" value="usun zaznaczone">';
  21.  
  22.  
  23. ?>


usunz.php
  1. <?
  2.  
  3. if (!empty($_POST['usunz'])){
  4. foreach ($_POST['usunz'] as $value) echo $value.'<br />';
  5. }
  6.  
  7. ?>


i tu wyswietla tylko jeden rekord ten najwyższy:(
skowron-line
Szkoda że nie napisałeś co chcesz osiągnąć.
Ale proponuje zacząć od wyświetlenia sobie tego co jest tam przesyłane.
  1. echo'<pre>';
  2. print_r( $_POST );

i zobacz sobie co pokazuje tablica usunz.
neo1986kk
Chcę osiągnąć listę wiadomości, przy których będą checkboxy i użytkownik może zaznaczyć kilka po czym kliknie "usun zaznaczone" i z bazy danych się one usuną. Narazie kombinuje co tu zrobić żeby wyświetlał wszystkie ID a poźniej wrzucę usuwanie rekordów z bazy po ID:)

po wpisaniu tego kodu wyświetla:
Array
(
[usunz] => Array
(
[$i] => 28
)

)
28
skowron-line
Musisz osiągnąć coś takiego.
Kod
Array
(
    [usunz] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 4
            [3] => 5
            [4] => 6
        )

)

Później dasz sobie zapytanie.
  1. DELETE FROM tabela WHERE id IN ( '. join( ',', $_POST['usunz'] ) .' )

I tyle. smile.gif
neo1986kk
ehh no mam już wszystko w porządku, ale nie wiem jak skonstruować zapytanie do bazy, gdyż to co podałeś niestety nie działa. Piszę w php coś takiego:
$zapytanie= "DELETE * FROM wiadomoscia WHERE id IN ( '. join( ',', $_POST['usunz'] ) .' )";
i pokazuje się błąd.
skowron-line
Cytat(neo1986kk @ 26.12.2009, 19:47:28 ) *
i pokazuje się błąd.

załamujesz mnie. Chociaż w święta miej litość. JAKI BŁĄD questionmark.gif
neo1986kk
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

Teraz tak pomyślalem ze może zamiast join można by zrobić coś takiego:
1.obliczyc ile jest elementów tablicy
2.zrobić pętle zeby usuwał dla wszystkich elementów ID które jest zapisane w tablicy czyli
for($i=1, $i<$ilosc elementow, $i++)
{
$zapytanie="delete from table where id=$_POST['usunz'][$i]";
}

jak myślisz?
skowron-line
Cytat(neo1986kk @ 26.12.2009, 20:10:57 ) *
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

A czy nie masz kolorowania składni w swoim edytorze questionmark.gif
  1. $zapytanie= 'DELETE * FROM wiadomoscia WHERE id IN ( '. join( ',', $_POST['usunz'] ) .' )';
  2.  
neo1986kk
wiesz co? ja to pisze w notatniku:P
no tak już teraz jest wszystko w porządku ale jest jak zwykle jedno ale... nie usuwa rekordów...
if($zapytanie){echo 'udalo sie';};

wyświetla: udało się ale nie usuwa z bazy
skowron-line
Cytat(neo1986kk @ 26.12.2009, 20:22:31 ) *
wiesz co? ja to pisze w notatniku:P


o majn got. Jest temat o edytorze poczytaj i wybierz sobie coś bo na notatniku daleko nie pociągniesz.
Ja na tym kompie mam notpad2.
neo1986kk
<?

include('zbaza.php');
$query= 'DELETE * FROM wiadomoscia WHERE id IN ( '. join( ',', $_POST['usunz'] ) .' )';
$result = mysql_query ($query);
if($result){echo 'udalo sie';};

?>

No teraz nie wyswietla ze sie udalo...
skowron-line
mysql_affeted_rows
neo1986kk
nie no tego to nie kumam juz w ogole, zapisałem mu coś takiego:
[PHP] pobierz, plaintext
  1. if (!$link) {
  2. die('Could not connect: ' . mysql_error());
  3. }
  4. mysql_select_db('mydb');
  5. /* this should return the correct numbers of deleted records */
  6. mysql_query('DELETE * FROM wiadomoscia WHERE id IN ( '. join( ',', $_POST['usunz'] ) .' )');
  7. printf("Records deleted: %d\n", mysql_affected_rows());
[PHP] pobierz, plaintext




ale pokazuje Records deleted: -1

acha zanim pomyśle to pisze:P czyli że zapytanie sie nie powiodło...
Ale dlaczego?

Może się to komuś przyda. Pewnie można to zrobić prościej ale ja to zrobiłem tak i działa:
  1. <?php
  2.  
  3.  
  4. include('zbaza.php');
  5. $query= 'DELETE FROM wiadomoscia WHERE `id` = '. join( ' OR `id`=', $_POST['usunz'] ) .' ';
  6. $result = mysql_query ($query);
  7. if($result){echo 'udalo sie';};
  8. echo $query;
  9.  
  10. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.