разместить множественное значение как переменную в функции - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь отправить несколько значений из select в форме регистра в функцию в качестве переменной для вставки. Я пытаюсь использовать foreach() для отправки значений как переменных, но он отправляет только последнее значение, а не все выбранные значения в форме выбора.

function addnew()
{
  $values = false;
  if (!empty($_POST['values'])) {
   $value = $_POST['values'];
   foreach($_POST['values'] as $value){
    echo "Value is:".$value."</br>";
   }
  }
}

Является ли мой код ошибкой или есть другой способ отправить несколько значений через функцию?

EDIT: Вот моя полная HTML-страница (с учетом этого случая)

index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta http-equiv="Content-Style-Type" content="text/css">
  <title></title>
  <meta name="Generator" content="Cocoa HTML Writer">
  <meta name="CocoaVersion" content="1561.4">

</head>
<body>
<form method="post" action="submit.php?addvalue"> <!-- my action url is custom for calling function -->
<select name="values[]" multiple="multiple">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
</select>
<input type="submit" value="Submit">
</form>

</body>
</html>

submit.php

<?php 
function addvalue()
{
    $values = false;
    if (!empty($_POST['values'])) {
        $values = $_POST['values'];
        foreach($_POST['values'] as $value){                
            echo "Value is:".$value."</br>";
           }
    }

    $data['value'] = $value;

    $model = new otherfucntion(); //class that contain other function
    $result = $model->addValue($data); //other function that do the query
    if ($result)
        {
            echo "<script>alert('".$value."</br>');</script>";//alert show value
        }
}

class otherfunction //on my case, this in otherfunction.php
{
    function conn()
    {
        //connection to db here
    }
    function addValue(($data=array()) 
    {
        extract($data);
        $sql = "INSERT INTO tablename (value) VALUES ('$value')";
            $result = mysqli_query($this->conn(), $sql);
            if (!empty($result))
            {
                return $result;
            }           
    }
}
?>

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Попробуйте следующий код

В вашем HTML-файле

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta http-equiv="Content-Style-Type" content="text/css">
  <title></title>
  <meta name="Generator" content="Cocoa HTML Writer">
  <meta name="CocoaVersion" content="1561.4">

</head>
<body>
<form method="post" action="submit.php">  
<select name="values[]">
  <option value="1"></option>
  <option value="1"></option>
  <option value="1"></option>
  <option value="1"></option>
</select>
<input type="submit" value="Submit">
</form>

</body>
</html>

В файле submit.php

<?php 
foreach($_POST['values'] as $value){
 echo "Value is:".$value."</br>";
}
?>

Надеюсь, это поможет.

Спасибо

0 голосов
/ 02 сентября 2018

Попробуйте использовать $_POST['values[]']

и используйте то же самое в своем HTML:

<... name="values[]">

...