2017-02-06 34 views
0

我正在對我正在進行的迷你項目進行挑戰,並且在沒有進展的情況下搜索了幾個小時的解決方案。 我在我的數據庫表中有一列,其內容是通過爆炸先前的表單輸入(在表中用逗號分隔)生成的。現在我需要在表單中使用textarea獲取這些值的輸入(來自用戶)。這些輸入將在數組中取決於從數據庫中獲取的內容的數量,然後存儲在我的表中的另一列中。這裏的問題是,每次我提交表單時,我都會在textarea字段中得到一個未定義的索引通知,即test-col []。 請參閱下面我的代碼:如何使用php獲取動態生成的textarea輸入的值

<?php 
    $conn = mysqli_connect('localhost', 'root', '', 'myDb'); 
    $users_id = mysqli_real_escape_string($conn, $_GET['id']); 
    $res = mysqli_query($conn, "SELECT tests FROM bal WHERE users_id = '$users_id'"); 
    if ($res){ 
     while ($row = mysqli_fetch_array($res)){ 
      $tests = explode(',', $row['tests']); 
      foreach($tests as $test){ 
       if ($test ==""){ 
        continue; 
       } 
       echo '<div class="test-res" style="margin-top:10px;"> 
          <form action="" method="post" role="form" class="form-horizontal"> 
           <div class="form-group"> 
            <label for= "test-col" class="form-label col-md-2">'.$test.' test</label> 
            <div class="col-md-10"> 
             <textarea class="form-control" rows="3" name="test-col[]" placeholder="Test result"> </textarea> 
            </div> 
           </div> 
          </form> 
         </div>'; 
       '<br /> <br />'; 
      } 
     } 
    } 
    echo '<form action="" method="post"> 
       <button type="submit" class="btn btn-success col-md-offset-5" name="sub-res">Send Result</button> 
      </form>'; 
?> 

//to insert textarea values in db 
<?php 
    if(isset($_POST['sub-res'])){ 
     $conn = mysqli_connect('localhost', 'root', '', 'myDb'); 
     foreach ($_POST ['test-col'] as $values){ 
      $test_results = implode("<br>", $values); 
     } 
     $ins = mysqli_query($conn, "INSERT INTO bal (results) VALUES 
('$test_results') WHERE users_id = '$users_id'"); 
     if (!$ins){ 
      die(mysqli_error()); 
     } 
     else{ 
      echo '<div class="alert alert-success">Successfully sent</div>'; 
     } 
    } 
?> 
+0

我修改了代碼的格式,使它變得可讀。它被格式化的方式完全不可能讀取。我建議您始終正確地設置代碼格式,無論是爲讀者還是爲自己閱讀。 –

+0

謝謝@唐納德 – banky

回答

0

您有兩種形式 - 一個在你的while/foreach語句,然後下面一個。如果您要提交第二個表單,則不會包含第一個表單的值。

反而包裹在形式中;

<form action="" method="post"> 
<?php  
$conn = mysqli_connect('localhost', 'root', '', 'myDb'); 
$users_id = mysqli_real_escape_string($conn, $_GET['id']); 
$res = mysqli_query($conn, "SELECT tests FROM bal WHERE users_id = 
'$users_id'"); 
if ($res){ 
    while ($row = mysqli_fetch_array($res)){  
     $tests = explode(',', $row['tests']);  
     foreach($tests as $test){   
      if ($test =="") { 
       continue; 
      }  
      echo '<div class="test-res" style="margin-top:10px;"><div class="form-group"> 
       <label for= "test-col" class="form-label col-md-2">'.$test.' test</label><div class="col-md-10"><textarea class="form-control" rows="3" name="test-col[]" placeholder="Test result"> </textarea></div></div></div>';  
      '<br /> <br />' ;  
     } 
    } 
} 
?> 
    <button type="submit" class="btn btn-success col-md-offset-5" name="sub-res">Send Result</button> 
</form> 
+0

謝謝@thebluefox。我嘗試迭代並在提交時在屏幕上顯示輸入,這就是我得到的「test-col:Arraytest-res:」。但是,我想要的是獲取這些值並將它們分解到我的表列中。我該怎麼辦? – banky

+0

請繼續等待您的協助 – banky

相關問題