【问题标题】:Tag - Save multiple input value in a single POST标记 - 在单个 POST 中保存多个输入值
【发布时间】:2014-11-12 04:57:44
【问题描述】:

我正在使用Jquery Tag it,我想将输入的标签保存到我的数据库中。

在 HTML 中

<ul id="myTags" name="myTags"></ul>  

当我输入一个新标签时,它会自动生成一个 &lt;li&gt;&lt;input hidden&gt; , 但是所有生成的 &lt;input hidden&gt; 都是相同的 name="tags" 只有 value 不同,然后当我 $_POST 并尝试 print_r 时,结果是只有我输入的最后一个值。

如何获得所有价值?或任何其他好的建议?谢谢

    public function actionSubmit(){

    $token = $_POST['YII_CSRF_TOKEN'];              
    if ($token !== Yii::app()->getRequest()->getCsrfToken()){

        Yii::app()->end();
    }
    $app_id = Yii::app()->user->getState('app_id');
    $tags = $_POST['tags'];


    $model = Games::model()->findByAttributes(array('id'=>$app_id));
    $model->keywords = $tags;
    $model->save();

    if($model->save()){
        print_r("ok");  
    }else{
        print_r("no");  
    }
}

【问题讨论】:

    标签: php jquery html yii tag-it


    【解决方案1】:

    试试

    $("#myTags").tagit({
        fieldName: "tags[]"
    });
    

    【讨论】:

    • 是的,这个print_r 正确...但它现在是数组...如何将数组保存到数据库?因为现在我从浏览器 数组到字符串转换 收到这条消息
    • 您可以通过三种方式进行操作。 Active Record yii 中不支持批量插入,所以需要一个一个循环插入。另一方面,query builderDAO 都支持批量插入。你想要哪种方式?
    • 在数据库中的数据是["qwe","ert"]
    • 只是一个注释......如果您将它们存储为 json,并且如果您需要在条目中搜索,则使用 nosql 数据库引擎。否则,命令在 mysql 等关系数据库中会很慢。 read here 进一步解释。
    【解决方案2】:

    在您的&lt;input hidden&gt; 标签中尝试name="tags[]"

    基本上在 HTML 中创建与 name="tags[]" 同名的隐藏变量数组

    所以,当您从$_POST 获取标签时,它会从$_POST['tags'] 返回标签数组

    【讨论】:

    • 正如我提到的 input hidden 是自动生成的
    • 你在print_r写什么来打印标签??
    【解决方案3】:

    只需显示一个演示,使用此代码并运行您的浏览器

    <?php
    
    if(isset($_REQUEST['submit']))
    {
    	print_r( $_POST['tags'] );
    }
    ?>
    <body>
    <form method="post">
        <ul id="myTags" name="myTags" style="list-style:none;">
            <li><input type="hidden" value="1" name="tags[]" /></li>
            <li><input type="hidden" value="2" name="tags[]" /></li>
            <li><input type="hidden" value="3" name="tags[]" /></li>
            <li><input type="hidden" value="4" name="tags[]" /></li>
            <li><input type="hidden" value="5" name="tags[]" /></li>
        </ul> 
        <input type="submit" name="submit" value="submin" />
    </form>
    </body>

    使用名称也是数组

    &lt;li&gt;&lt;input type="hidden" value="...any value ...." name="tags[]" /&gt;&lt;/li&gt;

    【讨论】:

      【解决方案4】:

      试试下面的代码:

      //jquery code, on form submit
      $('#form-id').submit(function(){
      
         var allTags = ''
         $('input:[name=tags]').each(function(){
             allTags += "," + $(this).val();
         });
      
         allTags = allTags.substr(1);
      
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-17
        • 1970-01-01
        • 2022-06-15
        • 2019-02-06
        • 1970-01-01
        • 2018-05-02
        • 1970-01-01
        • 2019-04-05
        相关资源
        最近更新 更多