2010-06-20 6 views
1

제 질문에 대한 답변이 정확합니다.배열 입력을 위해 MySQL에 데이터를 저장하는 방법

<form action="process.php?id=<?php echo intval($order['id']);?>" method="post"> 
    <ul> 
    <?php 
    $sd = 'SELECT * FROM download WHERE pid IN ('.$order['pid'].') ORDER BY pid ASC'; // pid IN (3,4,5) 
    $qd = $db->rq($sd); 
    $no = 1; while($download = $db->fetch($qd)) { 
    ?> 
    <li> 
    <?php echo $no; ?> <?php echo $download['title']; ?> 
    <input type="hidden" name="mid[]" value="<?php echo $order['mid']; ?>" /> 
    <input type="hidden" name="pid[]" value="<?php echo $download['pid']; ?>" /> 
    </li> 
    <?php $no++; } ?> 
    </ul> 
    <input type="submit" name="submit" value="Submit" /> 
    </form> 

출력

  1. 소니 에릭슨 드라이버
  2. 소니 에릭슨 앱
  3. 삼성 드라이버
  4. 모토로라 드라이버

QUES process.php

  • 에 아래의 테이블 구조에 기

    1. 저장 방법 (저장) 데이터 Output이 데이터는 다음과 같이 저장됩니다.

      id | mid | pid | title 
      ----------------------------------------- 
      1 | 1 | 3 | Sony Erricson Drivers 
      ----------------------------------------- 
      2 | 1 | 3 | Sony Erricson Apps 
      ----------------------------------------- 
      3 | 1 | 4 | Samsung Drivers 
      ----------------------------------------- 
      4 | 1 | 5 | Motorola Drivers 
      ----------------------------------------- 
      

    process.php

    if (isset($_POST['submit']) && !empty($_POST['submit'])) { 
    // I'm blur how to get dynamic mid[] & pid[] here 
    } 
    
  • 답변

    0

    타이틀에 대한 세 번째 숨겨진 필드 만들기 예 :

    지금
    <input type="hidden" name="title[]" value="<?php echo $download['title']; ?>" /> 
    <input type="hidden" name="mid[]" value="<?php echo $order['mid']; ?>" /> 
    <input type="hidden" name="pid[]" value="<?php echo $download['pid']; ?>" /> 
    

    당신이 이런 식으로 저장 페이지가 process.php에 제출됩니다 가정 할 수 있습니다, 이것은 당신이 거기에 넣어해야합니다 것입니다 :

    if (isset($_POST['submit'])) 
    { 
        for($i = 0; $i<=count($_POST['title']); $i++) 
        { 
        $title = mysql_real_escape_string($_POST['title'][$i]); 
        $mid = intval($_POST['mid'][$i]); 
        $pid = intval($_POST['pid'][$i]); 
    
        // database code 
        $query = "insert into table set title = '$title', mid = $mid, pid = $pid"; 
        // mysql_query and/or more code.... 
        } 
    } 
    
    +0

    코드 및 설명 주셔서 감사합니다. 잘 작동합니다. db에 저장된 데이터가 자동 증분의 '마지막 ID'에 비어있는 mid pid title을 가지고있을 때 한가지 질문. – kampit

    +0

    @kampit : 코드를 점검하고, 그 배열에 얼마나 많은 것들이 있는지 알아야한다고 말할 수 없다. . – Sarfraz

    +0

    확인이 수정되었습니다. @campit : 그게 알아두면 좋은데, 나는 마지막으로 $ {++}를 넣고 마지막에'$ i ++;'를 넣는다. – kampit

    0

    이 같은 $ _POST [ '미드']를 통해 루프와 $ _POST [ 'PID'] 배열을 할 간단하게 할 수 있습니다 :

    for ($i=0; $i<count($_POST['mid']); $i++) 
    { 
        $mid = $_POST['mid'][$i]; 
        $pid = $_POST['pid'][$i]; 
    } 
    

    항목의 이름도 전달하려면 'mid'및 'pid'입력란과 동일한 방법으로 전달하면됩니다.

    0

    POST 변수에 액세스하여 submit과 동일한 방식으로 mid[]pid[]의 값을 얻을 수 있습니다.

    $mid = $_POST['mid']; 
    $pid = $_POST['pid']; 
    

    배열로 게시되기 때문에 변수 배열은 $_POST입니다. 당신은 또한에 따라 개별 $의 _POST 변수 또는 전체 $의 _POST 변수의 구조를 확인할 수 있습니다

    var_dump($_POST['mid']); 
    var_dump($_POST); 
    

    이 디버깅 또는 내용이 확실하지 않은 변수를 파악하는 데 유용한 기능입니다.

    관련 문제