В этом коде, когда я выбрал несколько значений из раскрывающегося списка, он стоит в одной строке, но мне нравится применять значение в каждой строке, поэтому, пожалуйста, помогите мне. Фактический результат:
id game 1. cricket,football,tennis
Ожидаемый результат:
id game 1 cricket 2 football
код –
<html> <body> <?php if(isset($_POST['submit'])) { $query=mysql_connect('localhost','root',''); mysql_select_db("freeze",$query); $choice=$_POST['game']; $choice1=implode(',',$choice); mysql_query("insert into tb values('','$choice1')"); } ?> <form method="post" action="multipleselect.php"> Select your favourite game:<br/> <select name="game[]" multiple="multiple"> <option>Football</option> <option>Volleyball</option> <option>Badminton</option> <option>Cricket</option> <option>Cricket1</option> <option>Cricket2</option> <option>Cricket3</option> <option>Cricket34</option> </select> <input type="submit" name="submit"> </form> </body> </html>
Он вставляет их все в 1 строку, потому что вы вставляете свои $_POST['game']
$choice=$_POST['game']; $choice1=implode(',',$choice); mysql_query("insert into tb values('','$choice1')");
Вам нужно зациклиться на каждом значении $_POST['game']
foreach($_POST['game'] as $choice){ mysql_query("insert into tb values('','$choice')"); }
обратите внимание: ваш запрос открыт для SQL-инъекции, убедитесь, что вы дезактивируете свои данные перед вставкой в свой db. Кроме того, mysql_*
устарели, поэтому вы должны обновить до mysqli
или PDO
– http://php.net/manual/en/mysqlinfo.api.choosing.php
Прежде всего, не используйте mysql_*
поскольку он устарел, вместо этого используйте mysqli_
или PDO
.
теперь, если вам просто нужны значения параметров, сделайте это так
<select name="game[]" multiple="multiple"> <option value="1">Football</option> <option value="2">Volleyball</option> ... </select>
таким образом это даст вам 1,2,....
Надеюсь, это то, что вы ищете.
и если вы ищете такой запрос
INSERT INTO tb (`game`) VALUES ('Football'),('Volleyball')
предполагая, что поле id
автоматически увеличивается, а затем измените код следующим образом:
html-код
<select name="game[]" multiple="multiple"> <option>Football</option> <option>Volleyball</option> ... </select>
PHP-код
$choice=$_POST['game']; $sql = "INSERT INTO tb (`game`) VALUES "; $sqlValues= null; foreach($choice as $ch) { $sqlValues .= "('$ch')," ; } $sql.=rtrim($sqlValues, ","); echo $sql;
таким образом, вы могли бы получить
id game 1 cricket 2 football
Появляются ли какие-либо сообщения об ошибках? Вставьте следующий код непосредственно перед оператором mysql_query:
echo "insert into tb values('','$choice1')";
что отображается?
<?php if(isset($_POST['submit'])) { $query=mysql_connect('localhost','root',''); mysql_select_db("freeze",$query); $choice=$_POST['game']; $choice1=implode(',',$choice); foreach($choice1 as $choice) { mysql_query("insert into tb values('','$choice')"); } } ?>
Вы просто пробуйте этот код, я надеюсь, что он сработает для вас. Если нет, то, пожалуйста, ответьте мне.