Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как получить массив чекбосов, переданный из предыдущей формы?
 
 автор: romu4-   (15.05.2009 в 01:55)   письмо автору
 
 

Создаю динамически чекбоксы в форме, затем передаю их в другой скрипт.
Как в новой форме получить массив из элементов чекбокс?

Ниже представлен код формы, откуда идет передача чекбоксов:

<body>

<?php

include ("menu_top.php");

// Соединение с базой данных
require_once ("config.php");
   
// Делается выборка из таблиц базы данных 

$query_r "SELECT r_model FROM r_models ORDER BY r_model";
$result_r mysql_query ($query_r,$dbcon);
if(!
$result_r) exit("<br>Error in $query_r : "mysql_error()); 

$query_b "SELECT b_model FROM b_models ORDER BY b_model";
$result_b mysql_query ($query_b,$dbcon);
if(!
$result_b) exit("<br>Error in $query_b : "mysql_error()); 

$query_c "SELECT c_model FROM c_models ORDER BY c_model";
$result_c mysql_query ($query_c,$dbcon);
if(!
$result_c) exit("<br>Error in $query_c : "mysql_error());   

?>

<div align="center" class="StyleForHeader"> <p> <br> </p> <p> Совместимое оборудование </p>
  <p>&nbsp;</p>
</div>


<form action="r_b_c_insert.php" method="post" name="form">


<table width="26%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="55%" align="left" valign="baseline"><strong>Модель радиостанции</strong></td>
    <td width="45%" align="left" valign="baseline">
            <select name="r_model">
            <?php
                
// Соединение с базой даных
                
require_once ("config.php");
    
             
$sql"SELECT r_model FROM r_models ORDER BY r_model";
                
$res =  mysql_query($sql$dbcon);
             if(!
$res) exit("Error in $sql : "mysql_error());
                          
             while( 
$row mysql_fetch_assoc($res) )
                echo 
"<option value =\"$row[r_model]\">".htmlspecialchars($row['r_model'])."</option>\r\n";
                
?>
              </select>
  </td>
  </tr>
</table>

<p align="center" class="best">&nbsp;</p>
<p align="center" class="best">Совместимое оборудование</p>
<table width="36%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="6%" align="left" valign="baseline">&nbsp;</td>
    <td width="49%" align="left" valign="baseline"><strong>Аккумуляторные батареи:</strong></td>
    <td width="45%" align="left" valign="baseline"><strong>Зарядные устройства:</strong></td>
  </tr>
  <tr>
    <td align="left" valign="baseline">&nbsp;</td>
    <td align="left" valign="baseline">&nbsp;</td>
    <td align="left" valign="baseline">&nbsp;</td>
  </tr>
  <tr>
      <td align="left" valign="baseline">&nbsp;</td>
    <td align="left" valign="baseline">
    <?php 
  
     
while($myrow_b mysql_fetch_assoc($result_b))
    {
    echo 
"<input type='checkbox' name='b[]' value='".$myrow_b['b_model']."'>".$myrow_b['b_model']."<br>";
      }
    
?>
    </td>
    <td align="left" valign="baseline">
    <?php
    
    
while($myrow_c mysql_fetch_assoc($result_c))
    {
    echo 
"<input type='checkbox' name='c[]' value='".$myrow_c['c_model']."'>".$myrow_c['c_model']."<br>";
      };
    
?>
    </td>
  </tr>
</table>

<div align="center">
  <p>&nbsp;</p>
  <p>
    <input name="submit" type="submit" value="Подтвердить" />
  </p>
</div>
</form>


А так я пытаюсь получить их в новой форме, но не работает..

<?php

echo "TEST<br>";

if (isset(
$_POST['r_model'])) 
{
$r_model $_POST['r_model'];
echo 
htmlspecialchars($r_model)."<br>";
}

if (isset(
$_POST['b'])) 
{
$b[]=$_POST['b'];
echo 
"<br>Where_is_my_array? = ".$b['b_model']."<br>";
};

echo 
count($b);
for (
$a=0$a<count($b); $a++)
{
echo 
$b[$a];
}

?>

  Ответить  
 
 автор: sim5   (15.05.2009 в 04:06)   письмо автору
 
   для: romu4-   (15.05.2009 в 01:55)
 

Вам уже говорили, а вы опять на те же грабли наступаете. На сервере будут приняты только те элементы формы, которые имеют имя. Где у вас элемент с именем r_model? Мало того, у вас этих "безымянных" элементов масса получается? И о какой новой форме речь? На стороне сервера нет никаких форм.

  Ответить  
 
 автор: romu4-   (15.05.2009 в 06:52)   письмо автору
 
   для: sim5   (15.05.2009 в 04:06)
 

Объясняю подробнее:
Есть некоторая форма на странице.
На ней элементы:
select (name "r_model") - элементы списка формируются динамически \ количество 1 ед. \
checkbox ( name "b[]" value "...") - формируются динамически \ количество ? ед. \
checkbox ( name "c[]"value "....") - формируются динамически \ количество ? ед. \
Submit - кнопка \ количество 1 ед. \
Пользователь выбирает в списке модель и затем отмечает checkbox'ами совместимое оборудование. После этого он нажимает кнопку и информация методом POST отправляется на другую страницу, на которой происходит обработка - формируется три SQL-запроса на добавление данных в таблицы БД. Данные добавляются , пишется сообщение "ОК!"

Так вот и задача у меня такая возникла: не могу эти два массива из элементов b[] и c[] вытащить из POST'а. То зациклится, то только только первый вытаскивается, то ничего не вытаскивается.

Помогите, чем можете. Тут мелочь такая, просто сутки не спал и никак не найду решения. Парюсь!

  Ответить  
 
 автор: sim5   (15.05.2009 в 07:00)   письмо автору
 
   для: romu4-   (15.05.2009 в 06:52)
 

Извиняюсь, не заметил список (хотя просматривал несколько раз :)). Запрос будет отправлен скрипту указнному в атрибуте action формы, забудьте о выражениях "на другую страницу", "в другую форму". Вы ничего не делайте в скрипте обработчике, а просто примите форму и посмотрите принятое вот так: print_r($_POST). Что вы увидите в этом случае? Будут ли POST-данные иметь элементы с именами b[] и c[]?

  Ответить  
 
 автор: romu4-   (15.05.2009 в 16:38)   письмо автору
 
   для: sim5   (15.05.2009 в 07:00)
 

При print_r($_POST) пишется следующее :

Array ( [r_model] => Motorola GP280 [b] => Array ( [0] => FTN6574B [1] => NTN7144 [2] => NTN9009 ) [submit] => Подтвердить )

То есть массив есть в POST'е. Но как правильно оттуда получить его элементы?
Так не получается:

if (isset($_POST['b'])) 
{
$b[] = $_POST['b'];
}

echo count($b);
for ($a=0; $a<count($b); $a++)
{
echo $b[$a];
}

  Ответить  
 
 автор: sim5   (15.05.2009 в 16:46)   письмо автору
 
   для: romu4-   (15.05.2009 в 16:38)
 

Ну вы же видите теперь, что [b] => Array - это массив! А значит как нужно получать?

PS. $b[] = $_POST['b']; - выделенное жирным излишне.

  Ответить  
 
 автор: romu4-   (15.05.2009 в 16:59)   письмо автору
 
   для: sim5   (15.05.2009 в 16:46)
 

sim5, не поверите, но я три дня из-за этих [] парюсь.
Все сказывается малый опыт РНР-программирования (3недели).
Спасибо за поддержку. Удачи!

  Ответить  
 
 автор: sim5   (15.05.2009 в 17:07)   письмо автору
 
   для: romu4-   (15.05.2009 в 16:59)
 

foreach ($_POST['b'] as $value) echo $value . "<br>";

  Ответить  
 
 автор: ddhvvn   (15.05.2009 в 16:47)   письмо автору
 
   для: romu4-   (15.05.2009 в 16:38)
 

ну хотя бы так

<?php
if (isset($_POST['b']))  

  
$c count($_POST['b']);
  echo 
$c '<br>';
  for (
$a=0$a<$c$a++) 
  { 
    echo 
$b[$a]; 
  }
?>


все из-за этого
$b[] = $_POST['b']; 

непонятно чего. Вы собирались еще в 1 массив засунуть?

  Ответить  
 
 автор: romu4-   (15.05.2009 в 17:01)   письмо автору
 
   для: ddhvvn   (15.05.2009 в 16:47)
 

Такой вот я умник ;-))
Спасибо за совет.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования