Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] [mysql] problem z checkbox'em
Forum PHP.pl > Forum > Przedszkole
nr1kacper
Witam wszystkich i prosze o wskazowki.
Na pierwszej stronie jest tabelka z checkbox'em ktora pobiera z bazy adm(mysql) informacje o uzytkowniku:
  1. <?php
  2. ...
  3. ...
  4. echo "<form action="adm/usun_adm_ok.php" method=get>";
  5. ...
  6. //zapetlenie wynikow wyswietlanych
  7. for( $a = 1 ; $a <= $ile_wierszy ; $a++ )
  8. {
  9. $zapytanie = "SELECT * FROM adm where id=$a";
  10. $wysyla = mysql_query($zapytanie);
  11. $wynik = mysql_fetch_array($wysyla);
  12. echo "<tr><td>$wynik[0]</td><td>$wynik[1]</td><td>$wynik[2]</td><td><INPUT TYPE="checkbox" NAME="adm[]" VALUE="1"></td></tr>";
  13. }
  14. ...
  15. ...
  16. ...
  17. ?>


Na drugiej stronie jest petelka ktora powinna usunac zaznaczona osobe ze strony pierwszej.
  1. <?php
  2. ...
  3. ...
  4. ...
  5. for( $n = 0 ; $n <= $ile_wierszy-; $n++ )
  6. {
  7. $num=$n+1;
  8. if ($adm[$n] == 1)
  9. {
  10. $zapytanie = "Delete from adm where id=$num";
  11. $wysyla = mysql_query($zapytanie, $polaczenie); 
  12. }
  13.  
  14. }
  15. ...
  16. ...
  17. ...
  18. ?>


Problem jest taki ze jesli zaznacze na pierwszej stronie np 7 i 8 uzytkownika do usuniecia to usuwa pierwszych 2 uzytkownikow z bazy. Ma ktos jakis pomysl jak to zmienic? dziekuje za jakakolwiek pomoc!
piotrekkr
tak mi sie zdaje ze powinno byc:
Kod
<INPUT TYPE=\"checkbox\" NAME=\"adm[]\" VALUE=\"tutaj_wstawiaj_id\">


ehh i rzuc calym kodem bo nie wiem co to za zmienne np $ile_wierszy ile wierszy ale czego wierszy questionmark.gif
nr1kacper
Ponizej jest caly kod:

  1. <?php
  2. //pierwsza strona
  3. $host = "localhost";
  4. $username = "costam";
  5. $password = "costam";
  6. $database = "costam";
  7.  
  8. $polaczenie = mysql_connect($host, $username, $password);
  9. mysql_select_db($database, $polaczenie);
  10.  
  11. //lewy margines
  12. echo "<p style="margin-left:1cm">";
  13.  
  14. // sprawdza ile jest wierszy w tabeli
  15. $zapytanie = "SELECT * FROM adm";
  16. $wysyla = mysql_query($zapytanie, $polaczenie); 
  17. $ile_wierszy = mysql_num_rows($wysyla); 
  18.  
  19. echo "<form action="adm/usun_adm_ok.php" method=get>";
  20.  
  21. // tablica z wynikami
  22. echo "<br/><TABLE WIDTH=300>";
  23. echo "<tr bgcolor=#cccccc><td> ID </td><td> Album </td><td> Nazwisko </td><td> Usuń </td></tr>";
  24.  
  25. //zapetlenie wynikow wyswietlanych
  26. for( $a = 1 ; $a <= $ile_wierszy ; $a++ )
  27. {
  28. $zapytanie = "SELECT * FROM adm where id=$a";
  29. $wysyla = mysql_query($zapytanie);
  30. $wynik = mysql_fetch_array($wysyla);
  31. echo "<tr><td>$wynik[0]</td><td>$wynik[1]</td><td>$wynik[2]</td><td><INPUT TYPE="checkbox" NAME="adm[]" VALUE="1"></td></tr>";
  32. }
  33. echo "<tr><td><hr/></td><td><hr/></td><td><hr/></td><td><hr/></td></tr>";
  34. echo "<tr><td></td><td></td><td><input type="submit" value="Usun"></td><td></td></tr>"; 
  35. echo "</table>";
  36.  
  37. echo "</p>";
  38. ?>


  1. <?php
  2. //druga strona
  3. $host = "costam";
  4. $username = "costam";
  5. $password = "costam";
  6. $database = "costam";
  7.  
  8. $polaczenie = mysql_connect($host, $username, $password);
  9. mysql_select_db($database, $polaczenie);
  10.  
  11. // sprawdza ile jest wierszy w tabeli
  12. $zapytanie = "SELECT * FROM adm";
  13. $wysyla = mysql_query($zapytanie, $polaczenie); 
  14. $ile_wierszy = mysql_num_rows($wysyla); 
  15.  
  16. for( $n = 0 ; $n <= $ile_wierszy-; $n++ )
  17. {
  18. $num=$n+1;
  19. if ($adm[$n] == 1)
  20. {
  21. $zapytanie = "Delete from adm where id=$num";
  22. $wysyla = mysql_query($zapytanie, $polaczenie); 
  23. }
  24.  
  25. }
  26. ?>
piotrekkr
jeszcze tylko strukture tabeli podaj
nr1kacper
hmm jesli dobrze zrozumialem to chodzi tobie o baze adm z mysql'a, jesli tak to sa tam takie pola:
id | nr_albumu | nazwisko | haslo | data

a wracajac do tematu to chcialem to zrobic tak zeby sprawdzil wszystki checkbox'y jesli jakis = 1 (if ($adm[$n] == 1)) to usuwa ale cos mi nie wychodzi to :/
piotrekkr
no bo nie o to chodzi chyba :
  1. <?php
  2. $zapytanie = "SELECT * FROM adm";
  3.  
  4. $wysyla = mysql_query($zapytanie, $polaczenie); 
  5.  
  6. $ile_wierszy = mysql_num_rows($wysyla); 
  7.  
  8.  
  9. for( $n = 0 ; $n <= $ile_wierszy-; $n++ )
  10.  
  11. {
  12.  
  13. $num=$n+1;
  14.  
  15. if ($adm[$n] == 1)
  16.  
  17. {
  18.  
  19. $zapytanie = "Delete from adm where id=$num";
  20.  
  21. $wysyla = mysql_query($zapytanie, $polaczenie); 
  22.  
  23. }
  24.  
  25.  
  26. };
  27. ?>

przeciez id sa niekoniecznie po koleiw bazie moga byc id np 1 3 5 7 8 9 a ty jesli zaznaczyles np 1 i 2 checkbox to skrypt beedzie chcial ci usunac id 1 i 2 a id 2 np nie ma bo juz je kiedys np usunoles

dobra ja wroce wieczorkiem dopiero to pokombinujemy ale jalepiej sproboj w value checkboxow wstawiac id z bazy a nie 1 i sprawdzac cz checkbox jest rozny od 0 wtedy znaczy ze zaznaczonyi pozniej pobierzesz id i zaznaczonego checkboxa i usuniesz z bazy

EDIT: heh okazalo sie ze jednak zostane tongue.gif

wydaje mi sie ze powinno byc tak:
  1. <?php
  2. //pierwsza strona
  3.  
  4. $host = "localhost";
  5.  
  6. $username = "costam";
  7.  
  8. $password = "costam";
  9.  
  10. $database = "costam";
  11.  
  12.  
  13. $polaczenie = mysql_connect($host, $username, $password);
  14.  
  15. mysql_select_db($database, $polaczenie);
  16.  
  17. $zapytanie = "SELECT * FROM adm";
  18.  
  19. $wysyla = mysql_query($zapytanie, $polaczenie); 
  20.  
  21. $ile_wierszy = mysql_num_rows($wysyla);
  22.  
  23. //lewy margines
  24.  
  25. echo "<p style="margin-left:1cm">";
  26. echo "<form action="adm/usun_adm_ok.php" method="post">";
  27.  
  28.  
  29.  
  30. // tablica z wynikami
  31.  
  32. echo "<br/><TABLE WIDTH=300>";
  33.  
  34. echo "<tr bgcolor=#cccccc><td> ID </td><td> Album </td><td> Nazwisko </td><td> Usuń </td></tr>";
  35.  
  36.  
  37. //zapetlenie wynikow wyswietlanych
  38. while($wiersz=mysql_fetch_row($wysyla))
  39. {
  40. echo "<tr><td>$wiersz[0]</td><td>$wiersz[1]</td><td>$wiersz[2]</td><td><INPUT TYPE="checkbox" NAME="adm[]" VALUE="$wiersz[0]"></td></tr>";
  41.  
  42. }
  43. echo "<tr><td><hr/></td><td><hr/></td><td><hr/></td><td><hr/></td></tr>";
  44.  
  45. echo "<tr><td></td><td></td><td><input type="submit" value="Usun"></td><td></td></tr>"; 
  46.  
  47. echo "</table>";
  48.  
  49.  
  50.  
  51. echo "</p>";
  52. ?>


  1. <?php
  2. //druga strona
  3.  
  4. $host = "costam";
  5.  
  6. $username = "costam";
  7.  
  8. $password = "costam";
  9.  
  10. $database = "costam";
  11.  
  12.  
  13. $polaczenie = mysql_connect($host, $username, $password);
  14.  
  15. mysql_select_db($database, $polaczenie);
  16.  
  17.  
  18.  
  19. // sprawdza ile jest wierszy w tabeli
  20.  
  21. for( $n = 0 ; $n <count($_POST['adm']) ; $n++ )
  22.  
  23. {
  24.  if(!empty($_POST['adm']){
  25. $num=$_POST['adm'][$n];
  26.  
  27. if ($_POST['adm'][$n] != 0)
  28.  
  29. {
  30.  
  31. $zapytanie = "Delete from adm where id=$num";
  32.  
  33. $wysyla = mysql_query($zapytanie, $polaczenie); 
  34.  
  35. }
  36.   }else{ echo 'nie wybrales nic do skasowania'};
  37.  
  38. }
  39. ?>


aha i jeszcze musisz uwzglednic to ze mozna nie zaznaczyc zadnego checkboxa

EDIT: Juz uwzglednilem biggrin.gif ze mozna nie wybrac nic aha i zminilem metode wysylania formularza na POST
nr1kacper
wielkie dzieki za pomoc kluczowym slowem dla mnie bylo to abym VALUE zmienil na np ID jak to zmienilem to poszlo bez problemu :-)

co do zabezpieczenia przed pustym "krokiem" to zrobilem takie cos:
  1. <?php
  2. if ($adm == null)
  3. {
  4. //komunikat o pustych polach
  5. echo '<font color=red><h2><center>Nie wybrales Administratora do usuniecia!</center></h2><br/></font>';
  6. // przycisk wstecz
  7. echo '<center><a href="java script:history.back()"><img src="../grafika/wstecz_30.gif" border=0></a></center>'; 
  8. }
  9. else
  10. {
  11. for( $n = 0 ; $n <= $ile_wierszy-; $n++ )
  12. {
  13. $zapytanie = "Delete from adm where id='$adm[$n]'";
  14. $wysyla = mysql_query($zapytanie, $polaczenie); 
  15. }
  16. //komunikat o usunieciu adm
  17. echo '<font color=red><h2><center>Usunięto Administratorów.</center></h2><br/></font>';
  18. // przycisk dalej
  19. echo '<center><a href="../adm.php"><img src="../grafika/dalej_30.gif" border=0></a></center>';  
  20. }
  21. ?>
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.