Pobieranie wartości pola wyboru przy wysyłaniu
Mam 6 opcji, chcę uzyskać zaznaczone wartości, aby zapisać je w zmiennej na drugiej stronie. Jak mam to dalej robić?
<form action="third.php" method="get">
<!-- Choices -->
Red <input type="checkbox" name="color[]" id="color" value="Red">
Green <input type="checkbox" name="color[]" id="color" value="Green">
Blue <input type="checkbox" name="color[]" id="color" value="Blue">
Cyan <input type="checkbox" name="color[]" id="color" value="Cyan">
Magenta <input type="checkbox" name="color[]" id="color" value="Magenta">
Yellow <input type="checkbox" name="color[]" id="color" value="Yellow">
Black <input type="checkbox" name="color[]" id="color" value="Black">
<!-- Submit -->
<input type="submit" value="submit">
</form>
I third.php
Strona:
$color = $_GET['color'];
echo 'The color is '.$color;
Jeśli usunę []
, dostaję kolor jest włączony, kiedy robię to tak jak color[]
dostaję powiadomienie :
Konwersja tablicy na łańcuch
Chcę mieć wartość checkboxes checkboxes, więc mogę ją zapisać w zmiennej.
9 answers
Dobrą metodą, która jest moją ulubioną i dla wielu jestem pewien, jest użycie foreach
, które wyświetli każdy wybrany kolor i pojawią się na ekranie jeden pod drugim.
Jeśli chodzi o użycie checkboxów, nie masz wyboru, jak tylko użyć foreach
, i dlatego otrzymujesz tylko jedną wartość zwracaną z tablicy.
Oto przykład użycia $_GET
. Można jednak użyć $_POST
i trzeba by obie dyrektywy dopasować w obu plikach, aby działały jak należy.
FORMULARZ HTML
<form action="third.php" method="get">
Red<input type="checkbox" name="color[]" id="color" value="red">
Green<input type="checkbox" name="color[]" id="color" value="green">
Blue<input type="checkbox" name="color[]" id="color" value="blue">
Cyan<input type="checkbox" name="color[]" id="color" value="cyan">
Magenta<input type="checkbox" name="color[]" id="color" value="Magenta">
Yellow<input type="checkbox" name="color[]" id="color" value="yellow">
Black<input type="checkbox" name="color[]" id="color" value="black">
<input type="submit" value="submit">
</form>
PHP (using $_GET) using third.php
as your handler
<?php
$name = $_GET['color'];
// optional
// echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}
?>
Po wybraniu koloru czerwonego, zielonego, niebieskiego i cyjanowego pojawią się w następujący sposób:]}
Czerwony
zielony
Niebieski
cyan
Opcja # 2
Możesz również sprawdzić, czy wybrany został Kolor. Jeśli nie zostanie wybrana żadna, pojawi się oddzielna wiadomość.
<?php
$name = $_GET['color'];
if (isset($_GET['color'])) {
echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}
} else {
echo "You did not choose a color.";
}
?>
Opcje dodatkowe:
Pojawiać się jako lista: (<ul></ul>
może być zastąpiony przez <ol></ol>
)
<?php
$name = $_GET['color'];
if (isset($_GET['color'])) {
echo "You chose the following color(s): <br>";
echo "<ul>";
foreach ($name as $color){
echo "<li>" .$color."</li>";
}
echo "</ul>";
} else {
echo "You did not choose a color.";
}
?>
Flaga: (5 sierpnia 2016)
otrzymałem dziś rano 2 downvoty i Moje komentarze są usuwane; dlaczego? Ktokolwiek to robi, robi to ze złością. Odpowiedź nie otrzymała nic poza pozytywnymi głosami, a teraz to. Poważnie; wtf? - Fred-ii-1 godzina temu Nie widzę na to żadnych dowodów. Wasze komentarze o głosowaniach zostały oznaczone jako takie i usunięte.
Odpowiedź na to: właśnie o to chodzi; jestem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-13 21:19:09
(to nie action="get"
lub action="post"
to method="get"
lub method="post"
Spróbuj to zrobić metodą post:
<form action="third.php" method="POST">
Red<input type="checkbox" name="color[]" id="color" value="red">
Green<input type="checkbox" name="color[]" id="color" value="green">
Blue<input type="checkbox" name="color[]" id="color" value="blue">
Cyan<input type="checkbox" name="color[]" id="color" value="cyan">
Magenta<input type="checkbox" name="color[]" id="color" value="Magenta">
Yellow<input type="checkbox" name="color[]" id="color" value="yellow">
Black<input type="checkbox" name="color[]" id="color" value="black">
<input type="submit" value="submit">
</form>
I w trzecim.php
Lub dla pola peryk otrzymujemy wartość w:
$_POST['color'][0] //for RED
$_POST['color'][1] // for GREEN
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-24 23:13:40
Sugeruję, że lepiej używać posta niż get. oto niektóre różnice między post VS get
Kilka uwag na temat żądań GET:
- żądania GET mogą być buforowane
- pobieranie żądań pozostaje w historii przeglądarki
- żądania GET można dodawać do zakładek
- żądania GET nigdy nie powinny być używane do przetwarzania wrażliwych danych
- GET requests have length restrictions
- żądania GET powinny być używane tylko do pobierania danych
Kilka uwag o Post requests:
- żądania POST nigdy nie są buforowane
- żądania POST nie pozostają w historii przeglądarki
- nie można dodawać postów do zakładek
- żądania POST nie mają ograniczeń co do długości danych
Kod HTML
<html>
<head></head>
<body>
<form action="output.php" method="post">
Red<input type="checkbox" name="color[]" id="color" value="red">
Green<input type="checkbox" name="color[]" id="color" value="green">
Blue<input type="checkbox" name="color[]" id="color" value="blue">
Cyan<input type="checkbox" name="color[]" id="color" value="cyan">
Magenta<input type="checkbox" name="color[]" id="color" value="Magenta">
Yellow<input type="checkbox" name="color[]" id="color" value="yellow">
Black<input type="checkbox" name="color[]" id="color" value="black">
<input type="submit" value="submit">
</form>
<body>
</html>
Kod PHP
<?php
if(isset($_POST['color'])) {
$name = $_POST['color'];
echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}} // end brace for if(isset
else {
echo "You did not choose a color.";
}
?>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-24 18:25:02
Tylko do drukowania możesz użyć jak poniżej:
print_r($_GET['color']);
Lub
var_dump($_GET['color']);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-06 17:10:21
Myślę, że wartość $_POST['color']
powinna być odczytana dopiero po sprawdzeniu, czy jest ustawiona.
<?php
if(isset($_POST['color'])) {
$name = $_POST['color'];
echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}} // end brace for if(isset
else {
echo "You did not choose a color.";
}
?>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-24 17:39:05
Być może lepszym sposobem jest użycie funkcji php in_array () w następujący sposób:
$style='V';//can be 'V'ertical or 'H'orizontal
$lineBreak=($style=='V')?'<br>':'';
$name='colors';//the name of your options
$Legent="Select your $name";//dress it up in a nice fieldset with a ledgent
$options=array('red','green','blue','orange','yellow','white','black');
$boxes='';//innitiate the list of tickboxes to be generated
if(isset($_REQUEST["$name"])){
//we shall use $_REQUEST but $_POST would be better
$Checked=$_REQUEST["$name"];
}else{
$Checked=array();
}
foreach($options as $option){
$checkmark=(in_array($option,$Checked))?'checked':'';
$nameAsArray=$name.'[]';//we would like the returned data to be in an array so we end with []
$boxes.=($style=='V')?"<span class='label2' align='right'><b>$option : </b></span>":"<b>$option </b>";
$boxes.="<input style='width:2em;' type='checkbox' name='$nameAsArray' id='$option' value='$option' $checkmark >$lineBreak";
}
echo<<<EOF
<html>
<head></head>
<body>
<form name="Update" method="GET" action="{$_SERVER['PHP_SELF']}">\n
<fieldset id="tickboxes" style="width:25em;">
<legend>{$Legent}</legend>
{$boxes}
</fieldset>
<button type="submit" >Submit Form</button>
</form>
<body>
</html>
EOF
;
Na początek stworzyliśmy zmienną $style
do Ustawienia, jeśli chcemy, aby Opcje były poziome lub pionowe. W ten sposób nieczęsto będziemy wyświetlać nasze pola wyboru. Następnie ustawiamy $name
dla naszych opcji, jest to potrzebne jako nazwa tablicy, w której chcemy zachować nasze opcje.
Utworzyłem tutaj pętlę do konstruowania każdej opcji jak podano w tablicy $options
, następnie sprawdzamy każdy element czy powinien sprawdź w naszym formularzu zwrotu. Uważam, że powinno to uprościć sposób, w jaki możemy odtworzyć formularz za pomocą pól wyboru.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-25 10:43:06
Jeśli chcesz zamienić określone wartości na nowe zmienne, jeśli zostały wybrane:
// Retrieve array color[] and set as variable
$colors = $_GET['color'];
// Use array_search to find the key for "red"
$key_red = array_search('red', $colors);
// If "red" exists, the key will be an integer (or FALSE)
if (is_int($key_red)) {
$red_color = 'Red was selected';
}
Foreach jest najlepszym sposobem na uzyskanie tablicy wartości.
Tutaj przykładowy kod: kod html:
<form action="send.php" method="post">
Red<input type="checkbox" name="color[]" id="color" value="red">
Green<input type="checkbox" name="color[]" id="color" value="green">
Blue<input type="checkbox" name="color[]" id="color" value="blue">
Cyan<input type="checkbox" name="color[]" id="color" value="cyan">
Magenta<input type="checkbox" name="color[]" id="color" value="Magenta">
Yellow<input type="checkbox" name="color[]" id="color" value="yellow">
Black<input type="checkbox" name="color[]" id="color" value="black">
<input type="submit" value="submit">
</form>
Phpcode:
<?php
$name = $POST['color'];
foreach ($name as $color){
echo $color."<br />";
}
?>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-23 03:40:26
//retrive check box and gender value
$gender=$row['gender'];
$chkhobby=$row['chkhobby'];
<tr>
<th>GENDER</th>
<td>
Male<input type="radio" name="gender" value="1" <?php echo ($gender== '1') ? "checked" : "" ; ?>/>
Female<input type="radio" name="gender" value="0" <?php echo ($gender== '0') ? "checked" : "" ; ?>/>
</td>
</tr>
<tr>
<th>Hobbies</th>
<td>
<pre><?php //print_r($row);
$hby = @explode(",",$row['chkhobby']);
//print_r($hby);
?></pre>
read<input id="check_1" type="checkbox" name="chkhobby[]" value="read" <?php if(in_array("read",$hby)){?> checked="checked"<?php }?>>
write<input id="check_2" type="checkbox" name="chkhobby[]" value="write" <?php if(in_array("write",$hby)){?> checked="checked"<?php }?>>
play<input id="check_4" type="checkbox" name="chkhobby[]" value="play" <?php if(in_array("play",$hby)){?> checked="checked"<?php }?>>
</td>
</tr>
//update
$gender=$_POST['gender'];
$chkhobby = implode(',', $_POST['chkhobby']);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-11 09:44:44