Получите более одной строки данных, отправленных в браузер - PullRequest
0 голосов
/ 03 июля 2011

У меня есть форма, которая переносит данные на другую страницу, используя $ _GET в PHP. В браузере на другой странице отображаются все экспортированные данные, но при их получении на странице отображается только первая строка. Я также хочу иметь возможность экспортировать только выбранные поля.

Ниже мой код,

    <?php do { ?>
  <form  action="../masspay/index.php" name="pile" method="GET" >
  <tr>
    <td><input type="checkbox" name="checkbox" value="check" /></td>
    <td><input name="id" type="text" id="id" value="<?php echo $row_pile['id']; ?>" size="10" /></td>
    <td><input name="amount" type="text" id="amount" value="<?php echo $row_pile['amount']; ?>" size="10" /></td>
    <td><input name="amtnaira" type="text" id="amtnaira" value="<?php echo $row_pile['amtnaira']; ?>" size="13" /></td>
    <td><input name="acctno1" type="text" id="acctno1" value="<?php echo $row_pile['acctno1']; ?>" size="10" />
      (<?php echo $row_pile['accountname']; ?>)</td>
    <td><input name="phone" type="text" id="phone" value="<?php echo $row_pile['phone']; ?>" size="13" /></td>
    <td><input name="staff" type="text" id="staff" value="<?php echo $row_admin['name']; ?>" size="15" /></td>
    <tr>
          <?php } while ($row_pile = mysql_fetch_assoc($pile)); ?>
         <td colspan="7"><input type="submit" name="Submit" value="Process Selected" /></td>
  </tr>
  </form>

Ответы [ 3 ]

0 голосов
/ 03 июля 2011

Почему вы отправляете такие данные? сессия может быть лучшим выбором.

В любом случае, если sql имеет более одного результата, предыдущие значения _GET будут перезаписаны.

Попробуйте это:

  <?php do { ?>
  <form  action="../masspay/index.php" name="pile" method="GET" >
  <tr>
    <td><input type="checkbox" name="checkbox[]" value="check" /></td>
    <td><input name="id[]" type="text" id="id" value="<?php echo $row_pile['id']; ?>" size="10" /></td>
    <td><input name="amount[]" type="text" id="amount" value="<?php echo $row_pile['amount']; ?>" size="10" /></td>
    <td><input name="amtnaira[]" type="text" id="amtnaira" value="<?php echo $row_pile['amtnaira']; ?>" size="13" /></td>
    <td><input name="acctno1[]" type="text" id="acctno1" value="<?php echo $row_pile['acctno1']; ?>" size="10" />
      (<?php echo $row_pile['accountname']; ?>)</td>
    <td><input name="phone[]" type="text" id="phone" value="<?php echo $row_pile['phone']; ?>" size="13" /></td>
    <td><input name="staff[]" type="text" id="staff" value="<?php echo $row_admin['name']; ?>" size="15" /></td>
    <tr>
          <?php } while ($row_pile = mysql_fetch_assoc($pile)); ?>
         <td colspan="7"><input type="submit" name="Submit" value="Process Selected" /></td>
  </tr>
  </form>

Результаты $_GET['id'], $_GET['amount'] и т. Д. Теперь будут массивом и будут содержать все результаты sql.

Поскольку я не знаю, что вы делаете на принимающей странице, я использую print_r, чтобы вы могли видеть структуру данных:

<code>echo '<pre>'; // easier to read in a browser

echo 'Dump of checkbox: <br/>';
print_r($_GET['checkbox']);

echo 'Dump of id: <br/>';
print_r($_GET['id']);

echo 'Dump of amount: <br/>';
print_r($_GET['amount']);

echo 'Dump of acctno1: <br/>';
print_r($_GET['acctno1']);

etc ...

echo '
';

Пример вывода:

Dump of checkbox:
array(
    0 => 'check', // id 1 has been checked
    1 => '',      // id 2 has not been checked
),


Dump of id:
 array(
    0 => 1, // id 1
    1 => 2, // id 2
  ),


Dump of amount:
  array(
    0 => amount for id 1,
    1 => amount for id 2,
  )


Dump of acctno1:
  array(
    0 => acctno1 for id 1
    1 => acctno1 for id 2
  )

  etc ...

Чтобы проверить, установлен ли флажок:

// will return checked
if ($_GET['checkbox'][0] == 'check') {
    echo 'checked';
} else {
    echo 'not checked';
}

//will return not checked
if ($_GET['checkbox'][3] == 'check') {
    echo 'checked';
} else {
    echo 'not checked';
}

Обновление для комментария:

$tt = ''.
foreach ($_GET['id'] as $key => $id) {
    $tt .= "$_GET['acctno1'][$key], $_GET['amount'][$key], not-private, order #$id. www.xxx.com, we hope to serve you often.<br/>";
}

echo $tt;
0 голосов
/ 04 июля 2011

Поскольку вам нужно только выбрать, какие результаты показывать на принимающей странице, это лучший и более безопасный способ сделать это:

  <form  action="../masspay/index.php" name="pile" method="GET" >
   <tr>
    <?php while ($row_pile = mysql_fetch_assoc($pile)) { ?>
     <td><input type="checkbox" name="checked[]" value="<?php echo $row_pile['id']; ?>" /></td>
     <td><?php echo $row_pile['id']; ?></td>
     <td><?php echo $row_pile['amount']; ?></td>
     <td><?php echo $row_pile['amtnaira']; ?></td>
     <td><?php echo $row_pile['acctno1']; ?>(<?php echo $row_pile['accountname']; ?>)</td>
     <td><?php echo $row_pile['phone']; ?>></td>
     <td><?php echo $row_admin['name']; ?></td>
     <?php } ?>
     <td colspan="7"><input type="submit" name="Submit" value="Process Selected" /></td>
   </tr>
  </form>

На принимающей странице:

if (empty($_GET['checked']) {
    echo 'No results';
} else {

    $ids = array();
    foreach ($_GET['checked'] as $checked) {
        settype($checked, 'integer');
        $ids[] = "id = $id";
    }

    //Modify the sql used for the form to add this WHERE:
    $sql = 'SELECT * FROM table WHERE ' . implode(' OR ', $ids);

    $pile = mysql_query($sql);

    while ($row_pile = mysql_fetch_assoc($pile)) { 
        echo "$row_pile['acctno1'] $row_pile['amount'], not-private, order #$row_pile['id'];. www.xxx.com, we hope to serve you often.<br/>";
    }

}
0 голосов
/ 03 июля 2011

kk похоже, у вас есть база данных, из которой вы выбираете значения и отображаете их в значениях текстового поля. Для отправки значений вы должны перехватить их на странице index.php, выполнив

$_GET['id']
$_GET['name'] and furthor
 now for selected field set the value on the other page check the value of checkbox that it is checked or unchecked by assinging a variable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...