PDA

View Full Version : چک باکس های انتخاب شده در PHP



mr_ayma
دوشنبه 22 شهریور 1395, 09:13 صبح
<!DOCTYPE html>
<html>
<body>

<form action="demo_form.php" method="get">
<input type="checkbox" name="vehicle" value="Bike"> I have a bike<br>
<input type="checkbox" name="vehicle" value="Car" checked> I have a car<br>
<input type="submit" value="Submit">
</form>

</body>
</html>



برای فرم HTML بالا میشه کد php نوشت که اگر هر دو چک باکس تیک خوردن با پیامی نشون بده که هر دو چک باکس انتخاب شدن ؟
می دونم اگر خاصیت name هر دو چک باکس فرق می کرد ، یا با روش های دیگه به راحتی میشه اون چک باکس های انتخاب شده رو
تشخیص داد اما اون چیزی که من دوست دارم یاد بگیرم اینکه اگه قرار باشه این کد به هیچ وجه دستکاری نشه ، با چه کدی این کارو انجام
می دیم ؟ مثل خروجی این لینک (http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_input_checked)

Unique
سه شنبه 23 شهریور 1395, 00:42 صبح
این لینکی که دادی مربوط به ASP هست اما PHP روشش اینه که شما بیای توی Name Attribute به جای vehicle بنویسی []vehicle و انتخاب ها را به صورت آرایه سمت php بگیری و نشون بدی :


<form action="demo_form.php" method="get">
<input type="checkbox" name="vehicle" value="Bike"> I have a bike
<input type="checkbox" name="vehicle" value="Car" checked> I have a car
<input type="submit" value="Submit">
</form>

<?php
if (isset($_GET['vehicle']) && is_array($_GET['vehicle'])){
echo "Selected vehicles: ".implode(", ",$_GET['vehicle']);
}
?>

اما اگه نمیخوای این کار را انجام بدی ، باید تابع parse را خودت بنویسی :

function alt_parse_str($str) {
# result array
$arr = array();

# split on outer delimiter
$pairs = explode('&', $str);

# loop through each pair
foreach ($pairs as $i) {
# split into name and value
list($name,$value) = explode('=', $i, 2);

# if name already exists
if( isset($arr[$name]) ) {
# stick multiple values into an array
if( is_array($arr[$name]) ) {
$arr[$name][] = $value;
}
else {
$arr[$name] = array($arr[$name], $value);
}
}
# otherwise, simply stick it in a scalar
else {
$arr[$name] = $value;
}
}

# return result array
return $arr;
}


$query_string = $_SERVER['QUERY_STRING'];
if ($query_string != ""){
$GET = alt_parse_str($query_string);
echo "Selected vehicles: ".(is_array($GET['vehicle']) ? implode(", ",$GET['vehicle']) : $GET['vehicle']);
}

این کار ها لازم نیست و بهتره به روش خود php عمل کنی یا اگه ajax ی کد میزنی با jquery یا javascript کل انتخاب ها را بفرستی سمت سرور.

موفق باشی