Обработчик циклической формы =)

Freakmeister

Новичок
Обработчик циклической формы =)

Есть форма для обновления статистики, которая выводится циклом из бд: http://red-squadron.ru/index.php?ind=stats&op=update
Идея тут в том, чтобы вставлять в бд новые записи сразу по всем доступным в бд никам.
Код такой:

PHP:
//статичная часть таблицы
$output ="
<tr>
<td>
<form id='form1' name='form1' method='post' action='$mlink&op=reg_data'>
  <table width='100%' border='1' cellspacing='0'>
    <tr>
      <td align='center' bgcolor='#DDDDDD'><b>Имя</b></td>
      <td align='center' bgcolor='#DDDDDD'><b>R</b></td>
      <td align='center' bgcolor='#DDDDDD'><b>Время игры</b></td>
      <td align='center' bgcolor='#DDDDDD'><b>Побед и арестов:</b></td>
    </tr>";

//содержимое, выводящееся циклом
$DB->query( "SELECT name, ide FROM mkp_stats GROUP BY name ORDER BY name");
        while( $row = $DB->fetch_row($query) ) {
        $name=$row['name'];
        $ide=$row['ide'];
$output .="
    <tr>
      <td>$name<input name='name$ide' type='hidden' id='name$ide' value='$name'/>
      <input name='ide$ide' type='hidden' id='ide$ide' value='$ide'/></td>
      <td align='center'><input name='r$ide' type='text' id='r$ide' size='4' maxlength='4' /></td>
      <td align='center'><input name='days$ide' type='text' id='days$ide' size='3' maxlength='3' />
        д,
        <input name='hours$ide' type='text' id='hours$ide' size='3' maxlength='3' />
        ч,
        <input name='min$ide' type='text' id='min$ide' size='3' maxlength='3' />
        м</td>
      <td align='center'>
        <input name='kills$ide' type='text' id='kills$ide' maxlength='255' />
      </td>
    </tr>";
}

//статичная часть таблицы
$output .="
  </table>
    <tr>
      <td colspan='4' align='center'>
        <input type='submit' name='submit' id='submit' value='Отправить' />
      </td>
    </tr>
</form>
</td>
</tr>
";
К именам всех инпутов в форме цепляется $ide - уникальный для каждого ника номер, поэтому name инпутов пронумерованы отдельно для каждого ника, и не совпадают. Нужен обработчик для всей этой прелести.) В нормальном виде он выглядит так (некоторые поля опущу для простоты):

PHP:
if ($mkportals->input['op'] == "reg_data") {
$ide = $mkportals->input['ide'];
$name = $mkportals->input['name'];
$r = $mkportals->input['r'];
$kills = $mkportals->input['kills'];

$DB->query( "INSERT INTO mkp_stats (ide, name, r, kills) VALUES ('$ide', '$name', '$r', '$kills')");
}
Но, вместо input['name'] например, теперь здесь должно быть что-то вроде input['name&number'] и этот обработчик нужно как-то зациклить по количеству уникальных ide в бд. В общем, то что это реализуемо, я понял, но из за нехватки фантазии не получается реализовать самому.) Надеюсь на вашу помощь.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Открой для семя массивы.
name=r[$ide] и т.д.
 

Freakmeister

Новичок
Эм... кажется у меня вот-вот случится озарение, но пока ещё не совсем.)) Значит, если я запихну все значения в массивы, то смогу посчитать количество символов в массиве ide и по этому числу зациклить обработчик? Поправьте что не так:

PHP:
if ($mkportals->input['op'] == "reg_data") {

   $ide = $mkportals->input['ide'][];
   $n = count($ide);
   until ($n=0) {
      $ide = $mkportals->input['ide'][$n];
      $name = $mkportals->input['name'][$n];
      $r = $mkportals->input['r'][$n];
      $kills = $mkportals->input['kills'][$n];
      $DB->query( "INSERT INTO mkp_stats (ide, name, r, kills) VALUES ('$ide', '$name', '$r', '$kills')");
      $n=$n-1;
   }
}
Хотя, кажется, я ещё больше запутался...
 

prolis

Новичок
1. <input name='ide[]' type='hidden' id='$ide' value='$ide'/> - обрати внимание на атрибут name
2.
PHP:
var_dump("$_POST");
- смотри на размерность пришедших массивов
 

Freakmeister

Новичок
Всё, проблема решена.) Сделал так: инпутам дал имена name[], тоесть они автоматически пронумеровались с нуля. А обработчик такой:

PHP:
if ($mkportals->input['op'] == "reg_data") {        
$ide = $mkportals->input['ide'];
$name = $mkportals->input['name'];
$r = $mkportals->input['r'];
$kills = $mkportals->input['kills'];

$n = count($ide);
while( $n > 0 ) {
$n=$n-1;
$DB->query( "INSERT INTO mkp_stats (ide, name, r, kills) VALUES ('$ide[$n]', '$name[$n]', '$r[$n]', '$kills[$n]')");
}
Вот что значит взяться на свежую голову.)
 
Сверху