Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]problem z odwołaniem
Forum PHP.pl > Forum > Przedszkole
xyxy
Witam,

Mam problem, bo chyba nie wiem dlaczego nie mogę się odwołać do name w checkboxie. Mam coś takiego:


  1. <?php
  2. echo"<input type=\"checkbox\" name=\"".$i."\" value=\"".$status."\"";
  3.        if ($status == 'ok') echo' checked=\"checked\"';
  4.        echo'/>';
  5. ?>


Potrzebuje sie odwołać do checkboxa, próbowałem tak: $_POST[$i], $_POST['$i'], $_POST["$i"], $_POST[".$i."] i lipa, pusto
ignas1987
że jak?? Mógłbys poprawić ten kod??
greg.paw.90
Witam, ja do checkboxów odwołuję się w następujący sposób:

  1. <?php
  2. if(isset($_POST['name_checkboxa'])){
  3.        ....
  4.        }
  5. ?>
ignas1987
A co masz w zmiennej ".$i." bo to jest właśnie ta nazwa...
xyxy
Próbowałem tak: echo $_POST[$i]; $_POST["$i"]; $_POST[".$i."]; i lipa, pusto.
Wszystko jest w pętli, gdzie za każdym razem $i jest zwiększane o 1, a $status pobierane jest z bazy. Niby działa, ale nie moge sie dostać do wartości check boxa. Znaczniki <form></form> też są:
  1. <?php
  2. echo '<form method=\"POST\" action=\"wybor.php\" target=\"_self\">';
  3. ?>

echo $i; i echo $status; działa
sowiq
W pliku wybor.php wstaw na początku:
  1. <?php
  2. print_r($_POST);
  3. ?>
i zobacz jakie masz klucze w tablicy $_POST.
xyxy
Póki co mam tyle:
  1. <?php ob_start();
  2. <!DOCTYPE html
  3.    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  4.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html>
  6. <head>
  7.    <meta http-equiv="Content-Type" content="text/html; CHARSET=utf-8" />
  8.    <link rel="stylesheet" href="style.css" type="text/css" />
  9.    <meta name="Author" content="autor strony" />
  10.    <title>Klienci</title>
  11. </head>
  12. <body>
  13.  
  14. <?php
  15.  
  16.    $mysql_server = "****";
  17.    $mysql_admin = "****";
  18.    $mysql_pass = "****";
  19.    $mysql_db = "****";
  20.    @ $db = mysql_connect($mysql_server, $mysql_admin, $mysql_pass) or die ('<br />Brak połączenia z serwerem MySQL.');
  21.    @mysql_select_db($mysql_db) or die ('<br />Błąd wyboru bazy danych.');
  22.  
  23.    $idumowy = $_GET['id'];
  24.    
  25.        $query = "SELECT * FROM `umowy` WHERE id_um = ".$idumowy."" ;
  26.        $R = mysql_query($query);
  27.  
  28.  
  29. if($row = mysql_fetch_array($R, MYSQL_ASSOC))
  30.    {
  31.    $data_ex = explode('-',$row['data_p']);
  32.    $rok = $data_ex[0];
  33.  
  34.        $query2 = "SELECT * FROM `oplaty` WHERE idumowy = ".$idumowy." ORDER BY id_op ASC" ;
  35.        $R2 = mysql_query($query2);
  36.        
  37. echo '<form method="POST" action="wybor.php" target="_self">';
  38.    for($i=0;$i<$row2 = mysql_fetch_array($R2, MYSQL_ASSOC);$i++)
  39.        {
  40.            echo'<div>';
  41.                $status = $row2['status'];
  42.                echo $status;
  43.  
  44.        echo"<input type=\"checkbox\" name=\"".$i."\" value=\"".$status."\"";
  45.        if ($status == 'zaplacony') echo' checked=\"checked\"';
  46.        echo'/>';
  47.  
  48.        if ($data_ex[1] == 1)
  49.                echo'styczeń '.$data_ex[0];
  50.                if ($data_ex[1] == 2)
  51.                echo'luty '.$data_ex[0];
  52.                if ($data_ex[1] == 3)
  53.                echo'marzec '.$data_ex[0];
  54.                if ($data_ex[1] == 4)
  55.                echo'kwiecień '.$data_ex[0];
  56.                if ($data_ex[1] == 5)
  57.                echo'maj '.$data_ex[0];
  58.                if ($data_ex[1] == 6)
  59.                echo'czerwiec '.$data_ex[0];
  60.                if ($data_ex[1] == 7)
  61.                echo'lipiec '.$data_ex[0];
  62.                if ($data_ex[1] == 8)
  63.                echo'sierpień '.$data_ex[0];
  64.                if ($data_ex[1] == 9)
  65.                echo'wrzesień '.$data_ex[0];
  66.                if ($data_ex[1] == 10)
  67.                echo'październik '.$data_ex[0];
  68.                if ($data_ex[1] == 11)
  69.                echo'listopad '.$data_ex[0];
  70.                if ($data_ex[1] == 12)
  71.                echo'grudzień '.$data_ex[0];
  72.                if($data_ex[1] == 12) {
  73.                    $data_ex[1] = 0;
  74.                    $data_ex[0]++;
  75.                    }
  76.                $data_ex[1]++;
  77.                echo'</div>';
  78.        }
  79.    }
  80. ?>
  81. </form>
  82. </body>
  83. </html>



i wyświetla mi to:



i tyle działa, a jak chce sie potem odwołać do checkboxa np. echo $_POST[$i]; to nic nie ma a widze po wpisaniu echo $i; i echo $status; mają poprawne dane.
ignas1987
z name=\"".$i."\" zmień na name=\"$i\" -> spróbuj
xyxy
nic sie nie zmienia, dalej to samo ;/
Wicepsik
Cytat(sowiq @ 12.06.2009, 12:09:48 ) *
W pliku wybor.php wstaw na początku:
  1. <?php
  2. print_r($_POST);
  3. ?>
i zobacz jakie masz klucze w tablicy $_POST.

Zrobiłeś?
mac_fly
  1. <?php
  2. echo'<input type="checkbox" name="'.$i.'" value="'.$status.'">';
  3. ?>
xyxy
wyświetla:


edit: print_r($_POST); nic nie wyświetla
mac_fly
Zobacz tak:
  1. <?php
  2. echo'<input type="checkbox" name="'.$i.'" value="'.$status.'" ';
  3.        if ($status == 'ok') echo' checked="checked"';
  4.        echo'/>';
  5. ?>


A tak na marginesie to pisałes ze tak próbowałes: $_POST[$i], $_POST['$i'], $_POST["$i"], $_POST[".$i."].
A nie lepiej $_POST['name']?
xyxy
teraz mam to samo co na początku, działa, ale POST nie. Potrzebuję zrobić coś takiego, że po zaznaczeniu lub odznaczeniu checkboxa chce uaktualnić status w bazie, a jak mam to zrobić jak nie moge pobrać wartości checkboxa ;/
sowiq
Kolego ~xyxy, Twój problem najwyraźniej polega na tym, że nie umiesz czytać albo stosować się do dobrych rad.

Napisałem Ci dużo wcześniej, żebyś zrobił: print_r($_POST) na początku pliku. Jeśli byś się zastosował do mojej rady, to zapewne zauważyłbyś, że POST'em lecą tylko te nazwy checkbox'ów, które są zaznaczone.

Dlatego jeśli chcesz uaktualniać status (czyli również wyrzucać z bazy odznaczone opcje), to najpierw musisz wyczyścić wszystkie, a dopiero później wstawiać kolejno wysłane dane. Dzięki temu w bazie będziesz miał tylko aktualnie zaznaczone dane.
xyxy
ok, wstawiam w ty miejscu echo $_POST[$i]; :
  1. <?php
  2. echo'<input type="checkbox" name="'.$i.'" value="'.$status.'" ';
  3.       if ($status == 'zaplacony') echo' checked="checked"';
  4.       echo'/>';
  5.  
  6. echo $_POST[$i]; //////////
  7.  
  8.        if ($data_ex[1] == 1)
  9. ?>

i przechodzi w pętli przez wszystkie checkboxy, z czego jeden sie sam zaznacza, jak widać na załączonym screenie, więc dlaczego go tez nie widzi
Wicepsik
Nie wyświetla Ci ponieważ nie wysyłałeś danych $_POST

  1. <?php
  2. if (isset($_POST['submit'])
  3. {
  4. // wyświetlanie z bazy
  5. }
  6. else
  7. {
  8. // wyświetlanie po wysłaniu
  9. }
  10. ?>


oraz

  1. <?php
  2. echo' checked=\"checked\"';
  3. //na
  4. echo' checked="checked"';
  5. ?>

Nie potrzebne są backslash
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.