Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z for(); i formularzem
Forum PHP.pl > Forum > PHP
MOniToR
Już raz założyłem topic o podobnym problemie, jednak ten jest inny.
  1. if(isset($_GET[\"edit_profil\"])) {
  2. ?><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"><tbody><tr>
  3. <td colspan=\"4\" background=\"layout/spacer.gif\" height=\"3\" width=\"*\"></td>
  4. </tr><tr>
  5. <td background=\"layout/menu_l.gif\" height=\"25\" width=\"7\"></td>
  6. <td background=\"layout/menu_c.gif\" height=\"25\" nowrap=\"nowrap\" width=\"*\">
  7. <font class=\"title2\">&nbsp;<img src=\"layout/ALL.gif\" border=\"0\">&nbsp;<b>Edycja profilu użytkownika</b>
  8. </td>
  9.  
  10.  </td>
  11. <td background=\"layout/menu_r.gif\" height=\"25\" width=\"6\"></td>
  12. </tr></tbody></table>
  13. <table border=\"0\" cellpadding=\"6\" cellspacing=\"0\" width=\"100%\"><tbody><tr>
  14. <td bgcolor=\"#f9f9f7\" height=\"12\" width=\"*\" ><?
  15. $cat_sql=&#092;"SELECT * 
  16. FROM category
  17.  &#092;";
  18. $cat_result=mysql_query($cat_sql);
  19. echo&#092;"<form method =\"post\" action=\"users.php\" >\";
  20. $ile_kategorii=mysql_num_rows($cat_result);
  21.  
  22. for($i = 1; $i <= $ile_kategorii; $i++) {
  23. $cat_row=mysql_fetch_array($cat_result);
  24.  echo&#092;"<input size=\"8\" type=\"checkbox\" name=\"kat$i\" value=\"\".$cat_row[\"cat_id\"].\":\">\".$cat_row[\"cat_name\"].\"<br>\";
  25.  
  26.  }
  27.  echo&#092;"<input type=\"hidden\" name=\"ile\" value=\"$ile_kategorii\"><br>\";
  28. ?><input size=\"8\" type=\"submit\" name=\"wybierz_kategorie\" value=\"Wybierz\"></form> <br><?
  29.  
  30. } else if(isset($_POST[&#092;"wybierz_kategorie\"])) {
  31.  echo&#092;"kurwa\";
  32. echo $ochrona_klucz;
  33.  
  34.  
  35. if(isset($_COOKIE[&#092;"user_key\"])) {
  36. $klucz=$_COOKIE[&#092;"user_key\"];
  37. } else if(isset($_SESSION[&#092;"user_key\"])) {
  38. $klucz=$_SESSION[&#092;"user_key\"];
  39. }
  40.  
  41.  
  42.  
  43. for($i = 1; $i <= $_POST[&#092;"ile\"]; $i++) {
  44. $uzyt_sql=&#092;"SELECT * 
  45. FROM users
  46.  WHERE user_key='$klucz'&#092;";
  47.  $uzyt_result=mysql_query($uzyt_sql);
  48.  $uzyt_row=mysql_fetch_array($uzyt_result);
  49.  echo $_POST[$kat[$i]];
  50. $sql = &#092;"insert 
  51. into users_cat
  52.  VALUES('\".$uzyt_row[\"user_id\"].\"', '\".$_POST[$kat[$i]].\"')&#092;";
  53.  echo &#092;"$sql<br>\";
  54.  mysql_query($sql);
  55. }
  56. }

Co musze zrobic aby zmienna $_POST[$kat[$i]] zawierała cat_id ? Obecnie jest pusta. Prosze o pomoc.
SongoQ
  1. <?php
  2. echo&#092;"<input size=\"8\" type=\"checkbox\" name=\"kat[$i]\" value=\"\".$cat_row[\"cat_id\"].\":\">\".$cat_row[\"cat_name\"].\"<br>\";
  3.  
  4. ?>
MOniToR
dalej jest pusta :/
Darti
zobacz jak wyglada tablica $_POST - albo ją wylistuj za pomoca foreach albo
Kod
print_r($_POST);
MOniToR
  1. <?php
  2. Array ( [kat] => Array ( [1] => 1 ) [ile] => 2 [wybierz_kategorie] => Wybierz )
  3. ?>
hmmm ? Co mam z tym zrobić ?
Darti
może to to?:
  1. <?php
  2. echo $_POST[kat[$i]]; //zamiast $kat dałem kat
  3. ?>


EDIT

Ale ale, przecież $_POST to zwykla tablica, więc chyba raczej:
  1. <?php
  2. echo $_POST['kat'][$i];
  3. ?>
MOniToR
  1. <?php
  2. for($i = 1; $i <= count($_POST[&#092;"kat\"]); $i++) {
  3. $uzyt_sql=&#092;"SELECT * FROM users WHERE user_key='$klucz'\";
  4.  $uzyt_result=mysql_query($uzyt_sql);
  5.  $uzyt_row=mysql_fetch_array($uzyt_result);
  6.  
  7.  echo $_POST[$kat[$i]];
  8. $sql = &#092;"insert into users_cat VALUES('\".$uzyt_row[\"user_id\"].\"', '\".$_POST['kat'][$i].\"')\";
  9.  echo &#092;"$sql<br>\";
  10.  mysql_query($sql);
  11. }
  12. ?>

Moge powiedziec , że 'czasami działa'. Działa mi tylko, jeżeli w tablicy kat znajduje się 1. Tzn. w formularzu, którego kod znajduje się w pierwszym poście są pola checkbox i żeby skrypt mi sie wykonał tak jak powinien muszę wybrać pierwsze pole. Co moge z tym zrobić ? Jeżeli nie zaznacze pierwszego to reszta zmiennych w tablicy będzie pusta.
Darti
dobra, chyba wiem o co chodzi:
  1. <?php
  2.  
  3. for($i = 1; $i <= $ile_kategorii; $i++) {
  4. $cat_row=mysql_fetch_array($cat_result);
  5. echo&#092;"<input size=\"8\" type=\"checkbox\" name=\"kat[$i]\" value=\"\".$cat_row[\"cat_id\"].\"\">\".$cat_row[\"cat_name\"].\"<br>\";
  6. }
  7.  
  8. /*
  9. --
  10. */
  11. // bo nienajlepiej jest pisac SQL'em w pętlach
  12. $uzyt_result=mysql_query(&#092;"SELECT user_id FROM users WHERE user_key='$klucz'\");
  13. $uzyt_row=mysql_fetch_array($uzyt_result);
  14.  
  15. foreach($_POST[&#092;"kat\"] as $i => $wartość)
  16. {
  17. $sql = &#092;"insert into users_cat VALUES('\".$uzyt_row[\"user_id\"].\"', '\".$wartosc.\"')\";
  18. echo &#092;"$sql<br>\";
  19.  mysql_query($sql);
  20. }
  21. ?>
MOniToR
Dalej to samo sad.gif jeżeli nie zaznacze pierwszego to inne są puste, jezeli mam 3 kategorie i zaznacze 2 i 3 to pusta nie jest tylko 3.
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.