• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odbieranie danych z checkboxa i radio

Object Storage Arubacloud
0 głosów
2,647 wizyt
pytanie zadane 11 października 2017 w HTML i CSS przez adrian588 Początkujący (470 p.)
Witam.

Mam w html checkboxy. Jak odebrać dane w php z takiego formularza?

czy to przez name czy value? Próbuję i nie wychodzi:/...

Chcę tak aby np. po zaznaczeniu checkboxa odpowiednia zmienna w PHP przyjmowała jakaś wartość np. 2

a jeżeli nie zaznaczone np. 1

3 odpowiedzi

0 głosów
odpowiedź 11 października 2017 przez Malias Początkujący (300 p.)
Nazywasz tego checkboxa.

np:

<input type="checkbox" name="check"/>

Następnie w php tworzysz zmienną:

$_POST['check'];

I w sumie masz pobrane czy checkbox jest zaznaczony, czy nie :)
komentarz 11 października 2017 przez adrian588 Początkujący (470 p.)

W html mam taki kod:

<label><input type="checkbox" id="warunkiprzyczepnosci" name="warunkiprzyczepnosci" value="warunkiprzyczepnosci" checked>Mierne warunki przyczepności prętów do betonu/></label>

 

W php odbieram zmienną:

$warunkiprzyczepnosci = $_POST['warunkiprzyczepnosci'];

Zmienna się wyświetla. Ale dla sprawdzenia stworzyłem coś takiego:

if (isset($_POST['warunkiprzyczepnosci']))
  echo "działa to gówno!<br/>";
else
echo "NIE działa to gówno!<br/>";

Za każdym jednak razem: czy to checkbox jest zaznaczony czy też nie wyświetla tylko pierwszą część:) Nie wyświetla iż nie działa.

Gdzie może być błąd?

Zmienne mają docelowo być liczbami.

 

komentarz 11 października 2017 przez Malias Początkujący (300 p.)
HTML:

<label>
    <input type="checkbox" name="warunkiprzyczepnosci" /> Tresc obok checkboxa
</label>

php(odebranie zmiennej):

$warunkiprzyczepnosci = $_POST['warunkiprzyczepnosci'];

php(if):

if (isset($warunkiprzyczepnosci))
{
  echo "działa to gówno!<br/>";
else{
echo "NIE działa to gówno!<br/>";
}
}

Ni jestem pewien co do tego ifa, ale wydaje mi się, że tak powinno być ok ;)

komentarz 11 października 2017 przez Malias Początkujący (300 p.)
A, jeszcze jedno, jeżeli te zmienne mają być przenoszone pomiędzy plikami to myślę, że trzeba by było użyć sesji aby je móc później wykorzystać w innym pliku.
komentarz 11 października 2017 przez adrian588 Początkujący (470 p.)
Nie działa..

sory pomyłka.. zmieniam wpis bo dałem zmienną w ""

Ale cały czas wyrzuca iż działa to g

... czy checkbox zaznaczony czy też nie...
komentarz 11 października 2017 przez Malias Początkujący (300 p.)

A spróbuj tak:

if (!isset($_POST['warunkiprzyczepnosci']))
{
  echo "NIE działa to gówno!<br/>";
}
else
{
echo  "działa to gówno!<br/>"; 
}
komentarz 11 października 2017 przez adrian588 Początkujący (470 p.)
Tak samo.. zawsze wyświetla się pierwszy if...

czyli, że działa:/
komentarz 11 października 2017 przez adrian588 Początkujący (470 p.)

Zmieniłem też tak:

if (!isset($_POST[$warunkiprzyczepnosci]))
{
  echo "NIE działa to gówno!<br/>";
}
else
{
echo  "działa to gówno!<br/>"; 
}

Ale również tak samo.. zawsze tylko, że działa...

komentarz 11 października 2017 przez adrian588 Początkujący (470 p.)

Sprawdzam i zauważyłem coś takiego iż nie ważne czy jest zaznaczony checkbox czy też nie to ważne co wpiszę w kodzie:

Jeżeli jest tak:

if ($warunkiprzyczepnosci == 'warunkiprzyczepnosci')
{
  echo "NIE działa to gówno!<br/>";
}
else
{
echo  "działa to gówno!<br/>"; 
}

to wyświetla dobrze iż NIE działa

a jeżeli zmienię kod na taki:

if ($warunkiprzyczepnosci == 'xxxxxxxxxxxxx
  echo "NIE działa to gówno!<br/>";
}
else
{
echo  "działa to gówno!<br/>"; 
}

to wyświetla iż działa.. nie ważne czy faktycznie jest zaznaczony checkbox czy też nie.

komentarz 11 października 2017 przez Malias Początkujący (300 p.)

Z ciekawości aż sprawdziłem u siebie.

Ten kod jest poprawny:

if(isset($_POST['warunkiprzyczepnosci']))
	{
		echo "Zaznaczono";
	}else{
		echo "Nie zaznaczono!";
	}	

 

Popatrz coś wcześniej w kodzie, może jakąś literówkę zrobiłeś, może jakiś średnik :)

komentarz 11 października 2017 przez adrian588 Początkujący (470 p.)
A jaki kod masz wcześnie?

U mnie ciągle zawsze wyświetla się iż zaznaczono... po skopiowaniu Twojego kodu..
komentarz 11 października 2017 przez Malias Początkujący (300 p.)
edycja 12 października 2017 przez Malias

Zrobiłem to w ten sposób:

<?php

	if(isset($_POST['warunkiprzyczepnosci']))
	{
		echo "Zaznaczono";
	}else{
		echo "Nie zaznaczono!";
	}	
?>	
<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="UTF-8"/>
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
	<title>Checkbox</title>
</head>
<body>
	<form method="post">	
<label>
	<input type="checkbox" name="warunkiprzyczepnosci" /> Jakiś tekst</a>
</label>
	<input type="submit" value="Pokaż"/>
</form>
</body>
</html>

 

Jeżeli coś źle zrozumiałem i nie o to Ci chodziło, to mów.

komentarz 12 października 2017 przez adrian588 Początkujący (470 p.)

No niby wszystko ok a u mnie nie działa:/...

W html mam tak:

<input type="checkbox" id="warunkiprzyczepnosci" name="warunkiprzyczepnosci"  checked>Mierne warunki przyczepności prętów do betonu/></label>

A w PHP

$warunkiprzyczepnosci = $_POST['warunkiprzyczepnosci'];
if(isset($_POST['warunkiprzyczepnosci']))
    {
        echo "Zaznaczono";
    }else{
        echo "Nie zaznaczono!";
    }  

I ciągle pokazuje iż zaznaczono.. w każdym wypadku..

komentarz 12 października 2017 przez Malias Początkujący (300 p.)

Zmień swojego inputa tak:

<label>

   <input type="checkbox" id="warunkiprzyczepnosci" name="warunkiprzyczepnosci"/ >Mierne warunki przyczepności prętów do betonu

</label>

 

komentarz 12 października 2017 przez adrian588 Początkujący (470 p.)
Zmieniłem tak ale cały czas wyświetla

Zaznaczono

Dodatkowo gdy nie ma wartości value a zrobię echo$warunkiprzyczepności to pokazuje wartość on - również bez znaczenia czy zaznaczony czy też nie:/
komentarz 12 października 2017 przez adrian588 Początkujący (470 p.)
A może problem jest z tym iż korzystam z ajax?

i Dane podane z checkboxa są przesyłane na tą samą stronę za pomocą skryptu:

<script>
function runAjax()
{
    var numer =  document.getElementById("rodzajobliczen").value;
    var numer =  document.getElementById("rodzajpretow").value;
    var numer =  document.getElementById("zakonczeniepreta").value;
    var numer =  document.getElementById("srednicaglowne").value;
    var numer =  document.getElementById("klasastalipretyglowne").value;
    var numer =  document.getElementById("warunkiprzyczepnosci").value;
 

 // pobieramy wartość inputa
  var xmlhttp = new XMLHttpRequest(); // tworzymy obiekt XMLHttpRequest

  // definiujemy funkcję callback dla zdarzenia onreadystatechange
  xmlhttp.onreadystatechange = function()
  {
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
      // jeśli otrzymamy odpowiedź, to wpisujemy ją do DIV-a o id=response
      document.getElementById("response").innerHTML = xmlhttp.responseText;
    }
  };

  // tworzymy żądanie i wysyłamy
      xmlhttp.open("POST", "wynikzbrojenieminimalne.php", true);
      xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    
// tutaj należy wpisać wszelkie zdefiniowane zmienne !
    xmlhttp.send("rodzajobliczen="+ document.getElementById("rodzajobliczen").value +"&rodzajpretow="+ document.getElementById("rodzajpretow").value +"&zakonczeniepreta="+ document.getElementById("zakonczeniepreta").value +"&srednicaglowne="+ document.getElementById("srednicaglowne").value  +"&klasastalipretyglowne="+ document.getElementById("klasastalipretyglowne").value +"&warunkiprzyczepnosci="+ document.getElementById("warunkiprzyczepnosci").value);
}
</script>
komentarz 12 października 2017 przez Malias Początkujący (300 p.)

To może spróbuj bez deklaracji zmiennej przed ifem.

czyli tylko tak:

if(isset($_POST['warunkiprzyczepnosci']))
    {
        echo "Zaznaczono";
    }else{
        echo "Nie zaznaczono!";
    } 

 

komentarz 12 października 2017 przez adrian588 Początkujący (470 p.)

Powyższe działa tak :

jeżeli kod jest zgodny czyli:

if(isset($_POST['warunkiprzyczepnosci']))
    {
        echo "Zaznaczono";
    }else{
        echo "Nie zaznaczono!";
    }

a jeżeli zmienię go na :

if(isset($_POST['XXXXXX]))
    {
        echo "Zaznaczono";
    }else{
        echo "Nie zaznaczono!";
    }

wyświetla iż nie działa.

Ale nie ważne czy checkbox jest zaznaczony czy też nie..

kurcze niby taka prosta rzecz jak odebranie danych a tu taki problem:/

 

komentarz 12 października 2017 przez Malias Początkujący (300 p.)
Możliwe, że AJAX coś tam psuje, ale niestety z tym już nie pomogę.
komentarz 12 października 2017 przez adrian588 Początkujący (470 p.)
Wyłączyłem ajax i dalej to samo:/

Ale dzięki wielkie za pomoc.. jak znajdę rozwiązanie wrzucę na forum:)
0 głosów
odpowiedź 11 października 2017 przez marcin99b Szeryf (81,660 p.)

Jeśli nie wiesz jakiego typu są dane w zmiennej, sprawdź je print_r() lub var_dump()

Dowiesz sie w ten sposób dokładnie jak wygląda wnętrze zmiennej w różnych sytuacjach

0 głosów
odpowiedź 12 października 2017 przez sc4rface Dyskutant (7,710 p.)

Jeśli dobrze rozumiem to co chcesz osiągnąć, to kombinujesz jak koń pod górkę.

Jak mniemam, chcesz wyświetlić jakiś tekst jeżeli checkbox jest zaznaczony, oraz jeżeli nie zaznaczony to inny. W założeniu checkbox oraz radio jest booleanem, stąd przyjmuje wartości true/false.

Na podstawie tego co zamieściłeś


<input type="checkbox" id="warunkiprzyczepnosci" name="warunkiprzyczepnosci" value="warunkiprzyczepnosci" checked>

W PHP odbierzesz to w sposób taki

$_POST['warunkiprzyczepnosci'];

A porównanie będzie wyglądać w ten sposób

if ($_POST['warunkiprzyczepnosci'] == true) {
	echo "Checkbox zaznaczony";
} else {
	echo "Checkbox odznaczony";
}

 

 

komentarz 12 października 2017 przez adrian588 Początkujący (470 p.)
Po wklejeniu Twojego kodu zawsze wyświetla iż zaznaczony.

Właśnie w tym mam problem stąd tyle kombinacji:/
komentarz 12 października 2017 przez sc4rface Dyskutant (7,710 p.)
Spróbuj usunąć atrybut checked w HTML'u ;)
komentarz 12 października 2017 przez adrian588 Początkujący (470 p.)
Ciągle to samo.

Może przez to że dane przesyłam przez skrypt ajax i wyniki do tego samego pliku?
komentarz 12 października 2017 przez Malias Początkujący (300 p.)

Gdzieś coś musisz mieć co Ci koliduje z tym kodem cheeky

komentarz 12 października 2017 przez adrian588 Początkujący (470 p.)
Jeszcze takie pytanie aby nie zakłądać kolejnego wątku:

Czy w IFie można zadeklarować sprawdzenie dwóch wartości?

Tzn If ( a>2 i b>4 )

{}

? Czy jakoś inaczej trzeba to sprawdzać?
komentarz 12 października 2017 przez Malias Początkujący (300 p.)

Tak:

if(a > 2 && b>4)
{

}

 

komentarz 12 października 2017 przez adrian588 Początkujący (470 p.)
Super :) Dzięki:)
komentarz 19 października 2017 przez adrian588 Początkujący (470 p.)
Witam.

Nie zakładam kolejnego wątku tylko próbuję rozwiązać dalej sytuację z checkboxem.

Mianowicie zawsze wyświetla mi jako zaznaczony czyli zwraca wartość ON.

Nie ważne czy jest zaznaczony czy też nie.

Czy ktoś miał taki problem?

Może coś doradzić o co chodzi?

Podobne pytania

0 głosów
1 odpowiedź 422 wizyt
0 głosów
1 odpowiedź 339 wizyt
pytanie zadane 16 października 2016 w SQL, bazy danych przez Rafik Obywatel (1,870 p.)
0 głosów
1 odpowiedź 329 wizyt
pytanie zadane 1 października 2019 w PHP przez michal_php Stary wyjadacz (13,700 p.)

92,536 zapytań

141,377 odpowiedzi

319,452 komentarzy

61,920 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...