0

我想将无序列表保存到数据库中的列中。我怎样才能做到这一点 ?

  • 国际象棋
  • 火腿

创建表成分(名称varchar(20),成分varchar(30);

我想把清单放在配料部分。

这是我用来创建列表的 html 和 js 中的代码。

function selectIngredient(select)
    { 
      var $ul = $(select).closest('.ui-select').prev('ul');
console.log($ul[0])
  if ($ul.find('input[value=' + $(select).val() + ']').length == 0) {
    console.log('s')
        $ul.append('<li onclick="$(this).remove();">' +
          '<input type="hidden" name="ingredients[]" value="' + 
          $(select).val() + '" /> ' +
          $(select).find('option:selected').text() + '</li>');
  }
    }




<!DOCTYPE html>
    <html>
      <head>
    <title>Ingredient</title>
      <meta charset="utf-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <link rel="stylesheet" href="themes/receta.min.css" />
       <link rel="stylesheet" href="themes/receta.css" />
     <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.css" />
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.1.1/jquery.mobile-1.1.1.min.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js"></script>
      <script src="recetas.js">  </script>  

</head>
     <body>
<form action="insert.php" method="post">
Receta: <input type="text" name="receta">
Ingredientes: <input type="text" name="ingredientes">

      <input type="submit">      

             <label>Ingredientes</label>
    <ul>

    </ul>

    <select onchange="selectIngredient(this);">
     <option value="Cheese">Cheese</option>
     <option value="Olives">Olives</option>
     <option value="Pepperoni">Pepperoni</option>
     <option value="Milk">Milk</option>
    </select> 

         </body>
      </html>



<?php
$dbhost = 'localhost';
$dbuser = 'alanis_lozano';
$dbpass = '20Anahuac12';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die                      ('Error connecting to mysql');

$dbname = 'alanis_recetas';
mysql_select_db($dbname, $conn);

$sql="INSERT INTO Recetas (receta, ingredientes)
VALUES
('$_POST[receta]',$ingredientes = join(',', $_POST['selections'])";

if (!mysql_query($sql,$conn))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($conn);
?>

在此处输入图像描述

4

2 回答 2

0

您在这里真正想要做的是以分隔方式存储成分,并将它们格式化为输出列表。

尝试这样的事情:

<form action="save.php">
    <input type="text" name="name" />
    <textarea name="ingredients"></textarea>
    <button type="submit">Save</button>
</form>

save.php - 保存前用换行符 (\n) 替换任何分隔符

<?php

$name = $_GET["name"];
$name = mysqli_real_escape_string($name);

$ingredients = $_GET["ingredients"];
$ingredients = mysqli_real_escape_string($ingredients);
$ingredients = preg_replace("/[,\.\n\t]+/", "\n", $ingredients);

display.php - 在显示之前,用换行符分割你的成分并在 UL 中呈现它们

echo "<ul>";
$ingredients = explode('\n", $ingredients);
for ($i = 0; $i < count($ingredients); $i++) {
    echo "<li>{$ingredients[$i]}</li>";
}
echo "</ul>";
于 2012-12-02T02:51:08.323 回答
0

您可以将列表转换为逗号分隔的字符串:

$ingredients = join(',', $_POST['selections']);

在 dom 中,您可以命名选择框选项。

于 2012-12-02T02:44:49.417 回答