PHP oop传输动态数组结果从页面到类页面

时间:2014-05-12 05:38:22

标签: php mysql arrays

我正在办理登记表。这是注册的第二阶段。

在第一阶段,用户输入他们的个人数据。

第二阶段表单包含一个select输入,用于从db中的表中检索值。

我用JS编写了一个脚本,这样用户就可以根据自己的意愿选择尽可能多的值。我以这样的方式编写PHP代码,即表单的结果将形成一个数组。

我的问题是:

  1. 我想将数据插入MySQL数据库。表结构是这样的:
  2.   

    id | userid |专案编号

    1      1         54
    2      1         39
    3      1         92
    
    1. 如何将数组结果传输到课程? 如果我print_r['project']选择了3个选择输入,其名称为1,14和49,我会收到下一个输出Array ( [0] => 1 [1] => 14 [2] => 49 ) 1,这很棒!虽然我不明白最后的1来自哪里
    2. 任何帮助都会很棒。

      我写了即将到来的代码:

      <?php
      
      if(isset($_POST['regproj'])){
          $sid = $_SESSION['id'];
          echo $sid;
      
          $_POST['project'];
      
          $projects = $_POST['project'];
          foreach ($projects as $project) {
              echo $project['name'].'<br />'; 
          }   
      
          $regprog = new User();
          echo $regprog->Projects($sid);
      
          echo var_dump($sql);
      
          //foreach ( $test as $key=>$value ) {
              //$query = "INSERT INTO users-project (userid, project) VALUES ('$value')" ;
              //echo $query;
      
      ?>
      
      <html>
        <head>
           <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
          <script type="text/javascript">
          jQuery(function($){
              var $project = $('#project1'), count = 1;
              $('#addproject').click(function(e){
                  e.preventDefault();
                  var idname = 'project' + (++count);
                  var aname = 'project[]'
                  var classname ='form-control';
                  $project.parent().append($project.clone().attr({id: idname, name: aname, class: classname}));
              });
      
          });
          </script>
          <style type="text/css">
              #projects input {
                  display: block;
              }
          </style>
      
          </head>
      
          <body>
          <form role="form" name="regproj" action="" method="POST" onsubmit="return(validate());">
                <fieldset>
                    <?php echo $_SESSION['id']; ?>                                
                <div id="projects">
                     <select type="text" id="project1" name="project[]" class="form-control">
                   <?php 
                      $Project = new User();
                      echo $Project->projectname();
                        ?>
                     </select>
                </div>
          </div>
              <input type='button' value='add another research' class="btn btn-info" id='addproject'>
              <input type="submit" name="regproj" value="finished" class="btn btn-lg btn-success btn-block" />  
      
                </fieldset>
          </form>
        </body>
      </html>
      

      这是我写的课程:

      public function Projects ($sid){
          foreach ( $_POST['projectid'] as $key=>$value ) {
              $query = "INSERT INTO users-project (userid, projectid) VALUES ('$sid', '$value')" ;
          }
          echo var_dump($query);
          try {
              $query = $this->dbh->prepare($query);
      
              return $query->execute();
          } catch(PDOException $e) {
              return $e;
          }
      }
      

1 个答案:

答案 0 :(得分:0)

o.k,我的问题是如何将$ _POST [&#39; project&#39;]的数组输出添加到用户类的方法中。

我不知道的是,您可以在调用方法时向方法发送$ _POST值

正如您将在下一个例子中看到的那样

$projects = $_POST['project'];
foreach ($projects as $project){
     echo $project['name'].'<br />';    
}   
$data_count = count($_POST['project']);

for ($i=0; $i<$data_count; $i++) {
$projectid = $_POST['project'][$i]; 

}
$regprog = new User();
echo $regprog-> InsertProjects($sid, $_POST["project"]);    

`

 public function InsertProjects ($sid, $projectid){
foreach ($projectid as $value) {
$sql = "INSERT INTO usersproject (userid, projectid) VALUES ($sid, $value)" ;           
            try {
    $query = $this->dbh->prepare($sql);
     $query->execute();
    } catch(PDOException $e) {
    return $e;
    }
 }
 }

正如您可以看到顶部框代码最后一行的$ _POST [&#39; projects&#39;]在Table方法中结合$ projectid并将其值发送给它。