从Foreach循环中选择数据并将其发送到WordPress数据库

时间:2017-12-07 作者:Mithun Nath

我正在处理的项目有一个用户登录部分。用户登录后,应该能够看到存储在数据库中的过去的订单列表。列表视图由foreach函数完成。在这种情况下,用户必须能够通过一次单击重新确定任何过去的订单,并且应该将相同的数据作为新行发送回数据库,或者使用新id复制相同的行。我的代码如下所示:

<form method="post" action="">           
 foreach ( $row as $row ){ ?>
    <div> Previous Trip from:
    <?php echo $row-> your_departing .\' to : \'.$row-> your_destination; ?>
    <?php $depart = $row-> your_departing;
          $dest = $row-> your_destination;
          ?>
      <button type="submit" name="rebook" class="signupbtn">REBOOK</button>
    </div>

<?php  }    ?>
</form>

 if ( isset( $_POST["rebook"] ) != "" ) {
      $table = $wpdb->prefix."Savedata";
      $wpdb->insert(
          $table,
          array(
              \'your_destination\' => $dest,
              \'your_departing\' => $depart
          )
      );
  }
 ?>
我编写这段代码是为了将数据作为新行插入。我是否遗漏了代码中的某些内容?有人能提出一个简单的方法来完成这项工作吗?任何帮助都会很好。谢谢

1 个回复
SO网友:kierzniak

若要将某些内容插入数据库,您应该在post请求中发送数据,从请求中获取此数据并保存它。您创建的代码将在post请求时插入循环的最后一行。

您应该为之前的每次旅行创建表单,并添加隐藏的输入字段,以便有机会在post请求时获取它们。

<?php
    // Handling request and saving to database should not be in template,
    // but for the simplicity of the example I will leave it here.
    if( isset( $_POST[\'rebook\'] ) ) {

        // Get value from $_POST array secure way after sanitization
        $destination = filter_input( INPUT_POST, \'destination\', FILTER_SANITIZE_STRING );
        $departing   = filter_input( INPUT_POST, \'departing\', FILTER_SANITIZE_STRING );

        $table = $wpdb->prefix . "table_name";
        $wpdb->insert(
            $table,
            array(
              \'your_destination\' => $destination,
              \'your_departing\' => $departing
            )
        );
    }
?>
 <?php $rows = array(); // Get data from database ?>
 <?php foreach ( $rows as $row ): // Iterate over data ?>
    <?php
        // Create form for each previous trip to that
        // there would be an opportunity to save each
    ?>
    <form method="post" action="">
        <div> Previous Trip from:

          <?php echo $row->your_departing .\' to : \'.$row->your_destination; ?>
          <?php // Create hidden fields to send \'departing\' and \'destination\' with $_POST data  ?>
          <input type="hidden" name="departing" value="<?php esc_attr( $row->your_departing ); ?>">
          <input type="hidden" name="destination" value="<?php esc_attr( $row->your_destination ); ?>">

          <button type="submit" name="rebook" class="signupbtn">REBOOK</button>

        </div>
    </form>
<?php endforeach; ?>

结束

相关推荐

Split posts between databases

我的客户要求为基于WP的wordpress(单站点,而不是多站点)提供一个非常具体的解决方案。基本上,他想要的是,假设在1000篇文章之后,应该创建新的数据库(只有5个表,posts,posmeta和3个与分类相关的表),新的文章应该和所有的post meta一起存储在这个数据库中,直到它达到1000篇文章,然后处理重复。具有挑战性的部分是,所有这些数据库必须同时处于活动状态,因此WP应该能够同时访问来自主数据库和所有这些新创建的数据库(有5个表)的帖子。这可能需要hyperdb. 问题包括:如何告诉wp