Javascript 从“选择选项”下拉列表中计算多个值

Javascript 从“选择选项”下拉列表中计算多个值,javascript,php,jquery,html,pdo,Javascript,Php,Jquery,Html,Pdo,我想问一下如何从下拉列表中的值计算多个选项 我将在这里添加来自PDO函数的简单html代码和函数。我想要的是计算中的值,这些值通过javascript按钮从移动到那里,然后在使用$value=explode('|',$\u GET['service'])分解这些值后,通过计算来计算它们的值$vysledek[“服务价格”]。从函数Typ()中获取此值,并通过此$calculation=(2*$height*($lenght+$width)+($lenght+$width))*$value[1]计

我想问一下如何从下拉列表中的值计算多个选项

我将在这里添加来自PDO函数的简单html代码和函数。我想要的是计算
中的值,这些值通过javascript按钮从
移动到那里,然后在使用
$value=explode('|',$\u GET['service'])
分解这些值后,通过计算来计算它们的值$vysledek[“服务价格”]。从函数Typ()中获取此值,并通过此
$calculation=(2*$height*($lenght+$width)+($lenght+$width))*$value[1]计算所有这些值模式。我只为一个选定的(最后一个)工作,但我想让它为所有人工作,这样
$calculation
模式将用于每种类型的服务,然后所有的计算将被编号,然后响应最终价格。我真的不知道怎么做也许你能帮我。多谢各位

HTML:

<div id="Calkulator">
  <form>
    <h2>Calculator</h2>
    <table cellspacing="5" cellpadding="5">
      <tbody>
        <tr>
          <td><label for="lenght">Lenght of room in m2: </label></td>
          <td><input type="number" class="text_field small" id="lenght_of_room" min="1" name="lenght"></td>
        </tr>
        <tr>
          <td><label for="width">Width of room in m2: </label></td>
          <td><input type="number" class="text_field small" id="width_of_room" min="1" name="width"></td>
        </tr>
        <tr>
          <td><label for="height">Height of room in m2: </label></td>
          <td><input type="number" class="text_field small" id="height_of_room" min="1" name="height"></td>
        </tr>
        <tr>
          <td><label for="typ">Service type: </label></td>
            <td>            
              <div id="LeftBox">
                <select id="leftValues" size="8" multiple>
                <?php
                  require_once 'funkce.php';
                  $database = new Database();
                  $database->Typ();  
               ?>
               </select>
             </div>
             <div id="Buttons">
               <input type="button" id="btnLeft" value="&lt;&lt;" />
               <input type="button" id="btnRight" value="&gt;&gt;" />
             </div>
             <div id="RightBox">
               <select id="rightValues" name="service" size="8" multiple>
               </select>
             </div>
           </td>
        </tr>
        <tr>
          <td colspan="2">
            <input type="submit" class="submit" value="Count">
            <div class="clear"></div>
          </td>
        </tr>
        <tr>
            <td colspan="2"></td>
        </tr>
      </tbody>
    </table>

    <?php
      $height = $_GET[height];
      $lenght = $_GET[lenght];
      $width = $_GET[width];
      $value = explode('|', $_GET['service']);
      var_dump($value);
      $calculation = (2 * $height * ($lenght + $width) + ($lenght+ $width)) * $value[1];  
      echo "<p>Price: $calculation Kč</p>";
    ?>       

    </form>
  </div>      
</div> 

计算器
房间长度(m2):
房间宽度(m2):
房间高度(m2):
服务类型:

PDO PHP:函数类型

public function Typ() {
  try {      
    $stmt = $this->conn->prepare("SELECT Service_name , Service_price FROM Service_type");
    $stmt->execute();
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach ($result as $vysledek ){
      echo '<option value="'  . $vysledek["Service_name"] . "|"  . $vysledek["Service_price"] . '">' . $vysledek["Service_name"] . '</option>';
    }  
  } catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
  }
  $this->conn = null; 
}
公共函数类型(){
试试{
$stmt=$this->conn->prepare(“从服务类型中选择服务名称、服务价格”);
$stmt->execute();
$result=$stmt->fetchAll(PDO::FETCH_ASSOC);
foreach(结果为$vysledek){
echo'.$vysledek[“服务名称”].';
}  
}捕获(PDO$e){
echo“连接失败:”..e->getMessage();
}
$this->conn=null;
}

我认为您在此处命名select元素时出错了

更改为

name=“service”
name=“service[]”

您可以使用
array\u sum()
service
选择框下对所选值求和

$servicePriceSum = array_sum($_GET["service"]);
了解有关
数组\u sum()
的更多信息:

注意:无论您有多个选项可供选择,只要将它们相加即可。
[]
在名称属性中

更新:仅从
serviceName.'|'获取价格。servicePrice

$getSelectServices  = $_GET["service"];
$servChargeArr      = array();
foreach($getSelectServices as $serviceDet) {
    $expServiceDet  = explode("|", $serviceDet);
    $servChargeArr[]= &$expServiceDet[1];
}
$servTotal          = array_sum($servChargeArr);
echo $servTotal;

使用上面的代码获得所需的结果。

我认为您在此处命名select元素时出错了

更改为

name=“service”
name=“service[]”

您可以使用
array\u sum()
service
选择框下对所选值求和

$servicePriceSum = array_sum($_GET["service"]);
了解有关
数组\u sum()
的更多信息:

注意:无论您有多个选项可供选择,只要将它们相加即可。
[]
在名称属性中

更新:仅从
serviceName.'|'获取价格。servicePrice

$getSelectServices  = $_GET["service"];
$servChargeArr      = array();
foreach($getSelectServices as $serviceDet) {
    $expServiceDet  = explode("|", $serviceDet);
    $servChargeArr[]= &$expServiceDet[1];
}
$servTotal          = array_sum($servChargeArr);
echo $servTotal;

使用上面的代码获得所需的结果。

您的意思是,要对选择框下选择的值求和吗?我要对添加到RightBox中的值求和,以便将所有值都添加到RightBox中。这些类型的服务被添加到右框中,当用户选择它们时,它们有一些不同的价格。它位于函数Typ()中,由
$vysledek[“服务价格”]表示来自数据库。然后对每种服务类型使用计算模式,然后将所有价格计算成一个最终价格。是的,然后检查我下面的答案,非常重要的是,您需要使用
JS
来选择每个右侧选项,这意味着选择了属性
,你想对选择框下选择的值求和吗?我想对添加到右框中的值求和,这样右框中的所有值都可以。这些类型的服务被添加到右框中,当用户选择它们时,它们有一些不同的价格。它位于函数Typ()中,由
$vysledek[“服务价格”]表示来自数据库。然后对每种服务类型使用计算模式,然后将所有价格计算成一个最终价格。是的,然后检查下面的答案,非常重要的是,您需要使用
JS
来选择每个右侧选项,意思是选择了属性
,我试过这个,但当我的选项收集服务名称和服务价格时,仍然是如何使用这个数组的总和。这就是为什么我使用explode。你可以检查这个[link]@Lukas.K你没有在名称属性中添加
[]
,这就是我的答案。添加它,它肯定会工作。添加了它,但它仍然只返回int(0)。。我认为你不能那样使用它,因为
echo''$vysledek[“服务名称]”我想你可能不明白我的意思,因为我想用for语句进行计算,我在rightbox中检查了所有选定的服务,然后用计算模式对每个服务进行计算,然后对每个服务的所有计算价格进行编号。首先告诉我,你在你的PHP文件中得到所有选中的记录了吗?我试过这个,但当我的选项收集服务名称和服务价格时,仍然是如何使用这个数组的总和。这就是为什么我使用这个数组。你可以检查这个[link]@Lukas.K你没有在Name属性中添加
[]
,这就是我的答案。添加它,它肯定会工作。添加了它,但它仍然只返回int(0)。。我认为你不能那样使用它,因为
echo''$vysledek[“服务名称]”我想你可能就是不理解我,因为我