Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]usun zaznaczone
neo1986kk
post
Post #1





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


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


Ten post edytował neo1986kk 26.12.2009, 19:02:55
Go to the top of the page
+Quote Post
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


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.
Go to the top of the page
+Quote Post
neo1986kk
post
Post #3





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


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

Ten post edytował neo1986kk 26.12.2009, 19:12:00
Go to the top of the page
+Quote Post
skowron-line
post
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


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. (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
neo1986kk
post
Post #5





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


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.


Ten post edytował neo1986kk 26.12.2009, 20:03:14
Go to the top of the page
+Quote Post
skowron-line
post
Post #6





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


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 (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
neo1986kk
post
Post #7





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


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?

Ten post edytował neo1986kk 26.12.2009, 20:21:34
Go to the top of the page
+Quote Post
skowron-line
post
Post #8





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


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 (IMG:style_emoticons/default/questionmark.gif)
  1. $zapytanie= 'DELETE * FROM wiadomoscia WHERE id IN ( '. join( ',', $_POST['usunz'] ) .' )';
  2.  
Go to the top of the page
+Quote Post
neo1986kk
post
Post #9





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


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

Ten post edytował neo1986kk 26.12.2009, 20:26:43
Go to the top of the page
+Quote Post
skowron-line
post
Post #10





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


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.
Go to the top of the page
+Quote Post
neo1986kk
post
Post #11





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


<?

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...
Go to the top of the page
+Quote Post
skowron-line
post
Post #12





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


mysql_affeted_rows
Go to the top of the page
+Quote Post
neo1986kk
post
Post #13





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


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


Ten post edytował neo1986kk 26.12.2009, 20:54:47
Go to the top of the page
+Quote Post

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: 24.08.2025 - 14:21