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

Форум PHP

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

 

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

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

тема: цикл
 
 автор: Oligarx   (27.03.2006 в 11:24)   письмо автору
 
 

Помогите разобраться ...

Это код формы

  for($i=0; $i<$mass; $i++)  // До сюда всё Запипиристо :))
  {

  echo ($arrava[$i]."<br>");
  echo "<input type=hidden name=\"id_update\" value=\"$arrava[$i]\">
           <TEXTAREA NAME=\"correct[]\" WRAP=\"virtual\" COLS=\"40\" ROWS=\"3\">
           ".mysql_result($ath,0)."
           </TEXTAREA><br>";  
  }


а это код обработчика


    $boxlist  = $_POST['correct'];
    $hidden  = $_POST['id_update'];
    if(!is_array($boxlist))               // если передан один элемент,
             $boxlist = array($boxlist); //делаем из него массив :)
    if(!is_array($hidden))               // если передан один элемент,
             $hidden = array($hidden); //делаем из него массив :)
 
 foreach($boxlist as $box[])
 foreach($hidden as $hid[])
  $mass = count($boxlist);
////////////////////////////////////////
for($i=0; $i<$mass; $i++)
{
$arrava[$i]=$box[$i];
$id_hid[$i]=$hid[$i];
}

  for($i=0; $i<$mass; $i++)  // До сюда всё Запипиристо :))
  {
  echo ($id_hid[$i]."<br>"); 
  echo ($arrava[$i]."<br>");  
  }


Должны вывлдиться $id_hid и $arrava циклом ... $arrava[$i] выводится циклом, а $id_hid только одно значение (выводитя циклом но одно и тоже ...)
$mass у них одинаковое.

Если что то непонятно то эти два файла в аттаче ...

   
 
 автор: Trianon   (27.03.2006 в 11:35)   письмо автору
 
   для: Oligarx   (27.03.2006 в 11:24)
 

Долго чесал репу. Вот эти строки не понял вообще.

foreach($boxlist as $box[]) 
foreach($hidden as $hid[]) 
  $mass = count($boxlist); 

   
 
 автор: Oligarx   (27.03.2006 в 11:47)   письмо автору
 
   для: Trianon   (27.03.2006 в 11:35)
 

foreach обходит массив ... и можно обращаться к элементам массива как $box[]
а $mass число элементов в массиве ... для цикла
правда наверно нужно написать $mass = count($box[]);
хотя и так работало ....

   
 
 автор: Trianon   (27.03.2006 в 12:05)   письмо автору
 
   для: Oligarx   (27.03.2006 в 11:47)
 

Вот так эта конструкция интерпретируется движком.

foreach($boxlist as $box[]) 
    foreach($hidden as $hid[]) 
        $mass = count($boxlist); 


1. Чем не устраивало обращаться к элементам массива boxlist как к boxlist[]? Зачем нужно было создавать точную копию массива boxlist с именем box?
2. Чем не устраивало обращаться к элементам массива hidden как к hidden[]? Зачем нужно было создавать точную копию массива hidden с именем hid?
3. Зачем действия по копированию массива hidden повторять 20 раз (точнее - для каждого элемента boxlist)?
4. Зачем действия по подсчету числа элементов массива boxlist повторять 400 раз (точнее - для каждого сочетания элементов boxlist и hidden)?

Если Вам не нравятся имена boxlist и hidden - измените их на те, которые нравятся:
$box  = $_POST['correct'];      
$hid  = $_POST['id_update'];  


Но не усложняйте код. Вам же самому в нем будет не разобраться, даже если забыть о других людях.

   
 
 автор: Oligarx   (27.03.2006 в 12:56)   письмо автору
959 байт
 
   для: Trianon   (27.03.2006 в 12:05)
 


<?
 
require("../../../req/mysql.class");
 
$my=new class_mysql;
 
$my->sql_connect();

    
$boxlist  $_POST['correct'];
    
$hidden  $_POST['id_update'];
    if(!
is_array($boxlist))               // если передан один элемент,
             
$boxlist = array($boxlist); //делаем из него массив :)
    
if(!is_array($hidden))               // если передан один элемент,
             
$hidden = array($hidden); //делаем из него массив :)
 
// foreach($boxlist as $box[])
// foreach($hidden as $hid[])
  
$mass count($boxlist);
////////////////////////////////////////
for($i=0$i<$mass$i++)
{
$arrava[$i]=$boxlist[$i];
$id_hid[$i]=$hidden[$i];
}

  for(
$i=0$i<$mass$i++)  // До сюда всё Запипиристо :))
  
{

///////////////////$query="SELECT msg FROM tb_gvest WHERE id_msg=$arrava[$i];";
///////////////////$ath = mysql_query($query);
  
echo ($id_hid[$i]."<br>"); 
  echo (
$arrava[$i]."<br>");  
  }

echo(
mysql_error());
?>


теперь почему то ругается на $id_hid[$i]=$hidden[$i];

Notice: Undefined offset: 1 in z:\home\localhost\www\gvest\www\admin\func\func_update.php on line 20
Notice: Undefined offset: 2 in z:\home\localhost\www\gvest\www\admin\func\func_update.php on line 20

и теперь $id_msg[$i] выводится выще только один раз

   
 
 автор: Trianon   (27.03.2006 в 13:30)   письмо автору
 
   для: Oligarx   (27.03.2006 в 12:56)
 

Эти строки тоже уберите:
    if(!is_array($boxlist))               // если передан один элемент, 
             $boxlist = array($boxlist); //делаем из него массив :) 
    if(!is_array($hidden))               // если передан один элемент, 
             $hidden = array($hidden); //делаем из него массив :) 


Почему Вы полагаете , что передаете целый массив id_update?
Поле <input type=hidden name=id_update value= ...> позволит передать только одно значение, сколько б вы его не повторяли.
Вот и получается, что один массив у Вас - массив. А другой - искусственный массив из одного элемента.
Смотрите собственную [url=?id_forum=1&id_theme=14730 ]тему form, там[/url] подробно все расписано (20.03.2006 в 13:34).

   
 
 автор: Oligarx   (27.03.2006 в 18:39)   письмо автору
 
   для: Trianon   (27.03.2006 в 13:30)
 

Ё моЁ ... так бы и сказали ... я просто забыл (опечатолся или ещё чего) поставить скобки [] в этой строчке

<input type=hidden name=\"id_update[]\" value=\"$arrava[$i]\">


теперь всё работает ... теперь действительно передаётся массив $id_update[];

Всем спасибо ...

   
Rambler's Top100
вверх

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