Как хранить данные в MySQL для ввода массива - PullRequest
1 голос
/ 20 июня 2010

Надеюсь, мой вопрос правильный к сообщению.

  <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. Драйверы Sony Ericsson
  2. Приложения Sony Ericsson
  3. Samsung Drivers
  4. Motorola Drivers

Вопрос

  1. Как сохранить (сохранить) данные Output к структуре таблицы ниже: process.php
  2. Данные будут сохранены примерно так:

    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
}

Ответы [ 3 ]

0 голосов
/ 20 июня 2010

Создайте третье скрытое поле для заголовков, например:

 <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 голосов
/ 20 июня 2010

Вы получаете значения для mid[] и pid[] так же, как вы проверяете submit, путем доступа к переменным POST:

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

Поскольку они публикуются как массивы, они будут массивами в переменной $_POST. Вы также можете проверить структуру отдельных переменных $ _POST или всей переменной $ _POST следующим образом:

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

Это полезная функция для отладки или определения переменной, в содержимом которой вы не уверены.

0 голосов
/ 20 июня 2010

Вы можете просто сделать цикл над массивом $ _POST ['mid'] и $ _POST ['pid'], например:

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

Если вы также хотите передать имя элемента, вы можете просто передать его так же, как отправили поля 'mid' и 'pid'.

...