$ _POST [] и mysql_fetch_arrays вместе - PullRequest
0 голосов
/ 21 января 2012

Я работаю над выводом данных из двух разных источников в таблицу HTML. Один источник - mysql_fetch_array, другой - массив $_POST. Есть три <td> таблицы из mysql и одна из $_POST, выводимые через цикл while. Чтобы связать массивы на выходной странице, я планировал сохранить данные $_POST в таблице через идентификатор строки, а затем запросить всю строку дальше вниз по странице.

Проблема, с которой я столкнулся, заключается в том, что я не могу правильно отобразить значения массива $_POST в строке. Последнее значение в массиве $_POST - это все, что хранится во всех выбранных полях.

Массивы входной страницы захватываются с id [ ] и unit_ass[ ] и передаются на выходную страницу.

Код страницы вывода:

require_once ("../includes/db_connect.inc");

    $pid = array_filter($_POST['id']);
    $gid = implode(",", $pid);

    $sua = array_filter($_POST['unit_ass']);

    foreach($sua as $value) echo $value . "<br>"; // this outputs correct values in the correct order.

    foreach($sua as $value) mysql_query("UPDATE $tbl_name SET unit_ass='$value' WHERE id IN ( $gid )"); 

Простое удаление пустых ключей с помощью array_filter() ... Когда я отображаю значения в первом выражении foreach, они отображаются правильно и в правильном порядке.

Однако только последнее значение из массива $sua обновляет строки таблицы, как определено $ gid. Функция foreach не выполняет итерацию значений массива и не выполняет ОБНОВЛЕНИЕ, как следует. Данные через id[ ] корректно отображаются далее вниз по странице через mysql_fetch-array в цикле while.

Я смотрю на это уже несколько часов и не могу найти решение. Любая помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 21 января 2012

Ну, я думаю, $gid = implode(",", $pid); даст одно значение (рассмотрим как 1)

Теперь предположим, что $sua = array_filter($_POST['unit_ass']); даст вам ABC, PQR, LMN.

, поэтому ваш запрос будет выполненкак это

 mysql_query("UPDATE $tbl_name SET unit_ass='ABC' WHERE id='1'");
 mysql_query("UPDATE $tbl_name SET unit_ass='PQR' WHERE id='1'");
 mysql_query("UPDATE $tbl_name SET unit_ass='LMN' WHERE id='1'");

, так как ваш $gid такой же, вы видите только последнее обновление ... Надеюсь, вы ошиблись ...

Я полагаю, вы тоже хотитеизменить gid.Для этой проверки @Bao Nhan ответ, который также может помочь вам !!!

Обновление:

Используйте приведенный ниже код ... Это будет работать сейчас ...

require_once ("../includes/db_connect.inc");

$sua = array_filter($_POST['unit_ass']);

 foreach($sua as $myKey => $value) {
     $myID = $pid[$myKey];
     mysql_query("UPDATE $tbl_name SET unit_ass='$value' WHERE id='$myID'");
 }

Удачи !!!

0 голосов
/ 21 января 2012
foreach($sua as $key => $value){
    $value = mysql_escape_string($value);
    $id = mysql_escape_string ($pid[$key]);
    mysql_query("UPDATE $tbl_name SET unit_ass='$value' WHERE id='$id'");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...