Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z przesłaniem danych do formularza (checkbox)
Forum PHP.pl > Forum > PHP
kotek2185
Witam wszystkich,
otóż mam problem z przesłaniem danych do formularza przy zaznaczonym polu checkbox. Jestem świeży w php więc jakby dało rade jakąś podpowiedź bądź sprostowanie bo pewnie popełniam jakiś błąd merytoryczny. Do tej pory skleiłem:
plik users.php (ma za zadanie wczytac wszystkich userów dodatkowo przy każdym checkbox wraz z trzema buttonami, usuwanie i dodawanie userów działa bez problemu jednak przy edycji coś nie gra, sądzę że jest to problem z przesłaniem danych do pliku user_edit.php questionmark.gif
users:
  1. $sql="SELECT * FROM users order by id asc";
  2. $result=mysql_query($sql);
  3.  
  4. $count=mysql_num_rows($result);
  5. ?>
  6. <center>
  7. <table width="400" border="0" cellspacing="1" cellpadding="0">
  8. <tr>
  9. <td><form name="form1" method="post" action="">
  10. <table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
  11. <tr>
  12. <td align="center" bgcolor="#FFFFFF">#</td>
  13. <td align="center" bgcolor="#FFFFFF"><strong>Login</strong></td>
  14. <td align="center" bgcolor="#FFFFFF"><strong>Imie</strong></td>
  15. <td align="center" bgcolor="#FFFFFF"><strong>Nazwisko</strong></td>
  16. </tr>
  17. <?php
  18. while($rows=mysql_fetch_array($result)){
  19. ?>
  20. <tr>
  21. <td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo $rows['id']; ?>"></td>
  22. <td align="center" bgcolor="#FFFFFF"><?php echo $rows['nick']; ?></td>
  23. <td align="center" bgcolor="#FFFFFF"><?php echo $rows['imie']; ?></td>
  24. <td align="center" bgcolor="#FFFFFF"><?php echo $rows['nazwisko']; ?></td>
  25. </tr>
  26. <?php
  27. }
  28. ?>
  29. <tr>
  30. <td colspan="5" align="center" bgcolor="#FFFFFF">
  31. <input name="add" type="button" id="add" value="Dodaj" onClick="parent.location.href='indeks.php?page=user_add'" />
  32. <input name="delete" type="submit" id="delete" value="Usun">
  33. <input name="edit" type="button" id="edit" value="Edytuj" onClick="parent.location.href='user_edit.php'" /></td>
  34. </tr>
  35. <?php
  36. // Check if delete button active, start this
  37.  
  38. $checkbox=$_POST['checkbox'];
  39. if($_POST['delete']){
  40. for($i=0;$i<$count;$i++){
  41. $del_id = $checkbox[$i];
  42. $sql = "DELETE FROM users WHERE id='$del_id'";
  43. $result = mysql_query($sql);
  44. }
  45.  
  46. // if successful redirect to delete_multiple.php
  47. if($result){
  48. echo "<meta http-equiv=\"refresh\" content=\"0;URL=indeks.php?page=users\">";
  49. }
  50. }
  51. ?>
  52. </table>
  53. </form>
  54. </td>
  55. </tr>
  56. </table>


oraz user_edit.php:
  1. <?php include("config.php");
  2.  
  3. // Check if delete button active, start this
  4.  
  5. $checkbox=$_GET['checkbox'];
  6.  
  7. if($_POST['edit']){
  8. for($i=0;$i<$count;$i++){
  9. $edit_id = $checkbox[$i];
  10. $sql = "SELECT * FROM users WHERE id='$edit_id'";
  11. $result = mysql_query($sql);
  12. $rows=mysql_fetch_array($result);
  13. }
  14. }
  15. ?>

... i dalej tabela w którą ma wczytyc się wybrany rekord.

Proszę o pomoc i jakieś wskazówki...
rafal.t
Wysyłasz post a w user_edit.php masz $_GET["checkbox"]. Spójrz jak masz przy usuwaniu.
kotek2185
Nie bardzo to pomogło. Tak sobie myślę czy błąd nie jest spowodowany tym że chcę wykonać dwie akcje w jednym znaczniku
czy nie ma to żadnego związku?
JoShiMa
A skąd bierzesz wartość $count?
Poza tym w przypadku checkboxów lepiej zamiast for używac foreach.
kotek2185
wartosc $count istnieje tylko w pliku users.php i ma za zadanie jak wyczytałem zwracać liczbę wierszy w wyniku, ale Ty pewnie o tym wiesz;)

  1. <?php
  2. $sql="SELECT * FROM users order by id asc";
  3. $result=mysql_query($sql);
  4.  
  5. $count=mysql_num_rows($result);
  6. ?>




tak więc powinienem przesłać zmienną $count również do user_edit.php ?
mis
Cytat(kotek2185 @ 14.12.2011, 10:16:24 ) *
tak więc powinienem przesłać zmienną $count również do user_edit.php ?



tak, ta istnieje tylko w pliku, w którym jest utworzona(w Twoim wypadku), więc musisz ją także przesłać.
kotek2185
ehh dalej jest coś nie tak, może jeszcze jakieś propozycje?

teraz jest tak: user_edit.php:

  1. <?php include("config.php");
  2.  
  3. // Check if delete button active, start this
  4.  
  5. $checkbox=$_POST['checkbox'];
  6. $count=$_POST['count'];
  7.  
  8. if($_POST['edit']){
  9. for($i=0;$i<$count;$i++){
  10. $edit_id = $checkbox[$i];
  11. $sql = "SELECT * FROM users WHERE id='$edit_id'";
  12. $result = mysql_query($sql);
  13. $rows=mysql_fetch_array($result);
  14. }
  15. }
  16. ?>
  17. <form name="form1" method="post" action="user_edit_script.php">
  18. <table width="400" border="0" cellspacing="1" cellpadding="0">
  19. <tr>
  20. <td align="center"><strong>Imie</strong></td>
  21. <td align="center"><strong>Nazwisko</strong></td>
  22. <td align="center"><strong>Nick</strong></td>
  23. </tr>
  24. <tr>
  25. <td align="center"><input name="imie" type="text" id="imie" value="<? echo $rows['imie']; ?>"></td>
  26.  
  27. <td align="center"><input name="nazwisko" type="text" id="nazwisko" value="<? echo $rows['nazwisko']; ?>"></td>
  28.  
  29. <td><input name="nick" type="text" id="nick" value="<? echo $rows['nick']; ?>" size="30"></td>
  30. </tr>
  31. <tr>
  32. <td colspan="5" align="center"><input type="submit" name="Submit" value="Zapisz nowe dane"></td>
  33. </tr>
  34. </table>
  35. </td>
  36. </form>

rafal.t
hmm, wszystko fajnie ale musisz umieścić wartość count jako wartość jakiegoś pola w formularzu. Dodaj w wewnątrz formularza (pomiędzy <form></form>) takie pole:
  1. <input type="hidden" name="count" value="<?php echo $count; ?>" />


Oczywiście wcześniej w skrypcie, w tym samym pliku, musisz mieć zadeklarowaną zmienną $count z odpowiednią wartością.
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.