ФорумПрограммированиеPHP для идиотов → Обработчик циклической формы =)

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

  • Freakmeister

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 26 июля 2010 г. 23:22

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

    //статичная часть таблицы
    $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 инпутов пронумерованы отдельно для каждого ника, и не совпадают. Нужен обработчик для всей этой прелести.) В нормальном виде он выглядит так (некоторые поля опущу для простоты):

    $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 в бд. В общем, то что это реализуемо, я понял, но из за нехватки фантазии не получается реализовать самому.) Надеюсь на вашу помощь.
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 26 июля 2010 г. 23:28, спустя 5 минут 49 секунд

    много букф. доступнее можно
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 26 июля 2010 г. 23:45, спустя 16 минут 41 секунду

    я делал проще… каждая строка есть форма, в которой имена всех инпутов одинаковые и первый стоит инпут хидден, содержащий в себе ид юзера… обработчик обыкновенный… на него приходят ид, имя, и тд и тп… по иду уже лезешь в бд))
    Спустя 117 сек.
    <form method="post" action="include/edituser.php">
    <input type="hidden" value="$id" name="id" />
    <td><input type"text" value="$name" name="user_name" /></td>

    </form>
    Высокоуровневое абстрактное говно
  • Freakmeister

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 26 июля 2010 г. 23:53, спустя 7 минут 58 секунд

    Хм… интересная идея… завтра на свежую голову обдумаю.)
  • Freakmeister

    Сообщения: 9 Репутация: N Группа: Кто попало

    Spritz 27 июля 2010 г. 17:55, спустя 18 часов 2 минуты 10 секунд

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

    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]')");
    }


    Вот что значит взяться на свежую голову.)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!