2016-11-10 37 views
0

我试图从表单中插入数据到表格团队,所有团队名称和fk到每个年龄段。 我从一个简单的SELECT函数中获取年龄组ID,然后在表单上循环使用ID。 当我运行插入功能时,我只从数据的第一个表单中获得4行。 所以,如果有3,4或5个不同的年龄组,我想插入名称和AGE_GROUP FK的全部组插入由fk链接的多行 - php

的形式和年龄组循环:

<form action="" method="post"> 
    <?php 
     $ages = get_age_groups_in_cups($db); 
     foreach($ages as $age){ 
    ?> 

    <input type="text" name="age_group[]" value="<?php echo $age['age_id'];?>"> 
    <input type="text" name="team_name[]"> 
    <input type="text" name="team_name[]"> 
    <input type="text" name="team_name[]"> 
    <input type="text" name="team_name[]"> 

    <?php 
    } 
    ?> 

    <button name="insert_rows">save</button> 
</form> 

我跑当插入按钮已经提交了插入功能,但我只得到了结果从“第一” AGE_GROUP

功能:

function insert_teams($db){ 
    $age_group = $_POST['age_group']; 
    $team_name = $_POST['team_name']; 

    foreach ($age_group as $key => $error){ 
     $sql = "INSERT INTO teams (team_name, age_group_fk) VALUES (:team_name, :age_group_fk)"; 
     $stmt = $db->prepare($sql); 
     $stmt->execute(array(
      'team_name' => $team_name, 
      'age_group_fk' => $age_group[$key] 
      )); 
     } 

    } 
+0

你怎么想,什么是这两个数组的大小? –

+0

@YourCommonSense如果只有一个年龄组,年龄数组为0并且包含年龄编号,并且team_name长度为0123。如果有更多的团队,team_name是8,12,16等,年龄只要有年龄组 –

+0

我不明白你的答案。你能直截了当地说,这两个阵列的大小是多少? –

回答

0

你SH应该在你的输入数组上添加一个级别。

您使用<input type="text" name="team_name[]">为每个年龄组。

但基本上所有年龄组都会在同一阵列中。

使用,而不是像

<?php 
    <form action="#" method="post"> 
     <?php 
    $ages = get_age_groups_in_cups($db); 
      foreach($ages as $age){ 
     ?> 

     <input type="text" name="team_name[<?= $age['age_id'] ?>][]"> 
     <input type="text" name="team_name[<?= $age['age_id'] ?>][]"> 
     <input type="text" name="team_name[<?= $age['age_id'] ?>][]"> 
     <input type="text" name="team_name[<?= $age['age_id'] ?>][]"> 

     <?php 
     } 
     ?> 

     <button name="insert_rows">save</button> 
    </form>