2015-01-16 1 views
0

나는 이것을 묻는 방법을 모르겠습니다. 나는 PHP와 MySQL을 사용하고있다. 나는 비슷한 정보를 가지고있는 여러 데이터 배열을 가지고 있는데, 유일한 차이점은 그들 모두가 숨겨진 입력을 통해 보내고있는 다른 categoryID를 가졌다는 것이다. 예를 들어 foreach 루프는 하나의 데이터 배열로만 작동하지만 작동합니다. 그러나 대부분의 열이 동일한 이름을 갖고 categoryID가 구분 기호 인 여러 테이블에서이 작업을 수행하는 방법을 잘 모르겠습니다. 데이터의 내가 보내려고하고 열 이름의 일부. 나는 하나의 양식을 통해이 모든 것을 할 노력하고있어. 나는이 크게 될 것이다 달성하기 위해 노력해야한다 무엇인지에하나의 mysql 테이블에 비슷한 칼럼 필드를 가진 여러 개의 데이터 배열을 업로드하려고 시도했습니다.

>Table 1 to insert 
>day1 day2 score nameID money other categoryID 
>10  10  20  1  100  yes  1 
>5  5  10  22  50  sure 1 

>Table 2 to insert 
>score nameID money other categoryID 
>44  5  100    2 
>55  89  44  no  2 

>Table 3 to insert 
>day1 day2 score nameID money other categoryID 
>100  100  200 67  1000 no  3 
>55  55  110 5  600  blah 3 

모든 단서를 작동하는 단일 배열의 코드 샘플 추가

<table width='550' id='openResults' border='1' cellpadding='0' cellspacing='0'> 

    <tr> 
      <td width="150"><input size="5" type="text" name="score[]"></td> 
      <td width="150"><input size="5" type="text" name="name[]"></td> 
      <td width="150"><input size="5" type="text" name="rsAmount[]"></td> 
      <td width="100">&nbsp;</td></tr> 

</table> 



foreach ($_POST['name'] as $key =>$name) { 
    $score=$_POST['score'][$key]; 
    $rsamount=$_POST['rsAmount'][$key]; 
    echo "<tr><td width='50'>$score</td><td width='50'>$name</td><td width='50'>$rsamount</td></tr>"; 
    $sql = "INSERT INTO testRows (score, name, rsAmount) VALUES ('$score', '$name', '$rsamount')"; 
    $result2 = mysql_query($sql) or die ("Error in query: $sql. " . mysql_error()); 
} 
+0

나는 특히, 당신은 몇 가지 더 많은 코드를 보여줄 수 있다면 도움이 될 생각 루프 당신이 성공적으로 하나의 배열에 대해 썼다. 또한 문제를 오해하지 않는 한 양식을 보는 것이 도움이 될 수 있습니다. – mopo922

+0

같은'name' 태그를 사용하는 것은 어떨까요 (예 : 모든 HTML 테이블에서 money 입력 태그가'name = money []'와 같은 이름을가집니다.) 그러면 foreach 루프는 – Be0wulf

+0

내 단일 배열 foreach 루프는 각 행에 이름이 있어야하므로 테이블이 실제로 이상하게 채워지므로 계속 살펴보고 왜 그 일을했는지 ​​파악하려고 노력해야합니다. 배열이 입력받을 수 있습니다, 그 이유는 categoryID를 기반으로하는 방법을 알아 내려고 노력하고있어. 내가 ($ _ POSt [ 'categoryID'] == 1) {for 루프를 수행하지만이 작동하지 않습니다 – CincoPistolero

답변

0

죄송합니다 모두 당신이 그것으로 바이올린 필요하지만, 조금 도움이되기를 바랍니다 수 있도록이 안된 ...

이 같은 지수의 ID를 포함하도록 입력을 포맷하십시오 :

 <td width="150"><input size="5" type="text" name="score[1][]"></td> 
     <td width="150"><input size="5" type="text" name="name[1][]"></td> 
     <td width="150"><input size="5" type="text" name="rsAmount[1][]"></td> 

그런 때를 루프 당신의 카테고리 ID를 얻기 위해 2 레벨을 추가 할 수 있습니다 [1] 위 :

foreach ($_POST['name'] as $categoyId => $data) { 
    foreach ($data as $key =>$placeholder) { 
    $name=$_POST['name'][$categoryId][$key]; 
    $score=$_POST['score'][$categoryId][$key]; 
    $rsamount=$_POST['rsAmount'][$categoryId][$key]; 
    echo "<tr><td width='50'>$score</td><td width='50'>$name</td><td width='50'>$rsamount</td></tr>"; 
    switch ($categoyId) { 
     case 1: 
      $sql = "INSERT INTO table_1 (score, name, rsAmount) VALUES ('$score', '$name', '$rsamount')"; 
      break; 
     case 2: 
      $sql = "INSERT INTO table_2 (score, name, whatver) VALUES ('$score', '$name', '$rsamount')"; 
      break; 
     case 3: 

      $sql = "INSERT INTO table_3 (score, name, somethingElse) VALUES ('$score', '$name', '$rsamount')"; 
      break; 
     defaut: 
      $sql = null; 
    } 
    if ($sql) { 
     $result2 = mysql_query($sql) or die ("Error in query: $sql. " . mysql_error()); 
    } 
    } 
} 
+0

이것은 정말 가깝고, 첫 번째 배열은 훌륭하게 작동하고, 두 번째 배열은 마지막 행을 제외하고는 모두 삽입합니다. 그래서 그것을 작동 시켜서 작동시킬 수 있는지 알아 봅니다. – CincoPistolero

관련 문제