Нужна помощь с увеличением 2 переменных в форме сообщения - PullRequest
1 голос
/ 02 апреля 2011

Я пытаюсь разрешить пользователю редактировать строку своих данных с помощью POST из отображаемой формы. Запрос работает, и таблица правильно отображает все, кроме значения имени в поле ввода формы. Я перепробовал множество вариантов, но значение имени все время остается пустым. Проблема может быть с этой строкой:

       echo $field_name;

Вот код:

<form action="process.php" method="POST">

<?

$qry = "SELECT activity, site, date, FROM home WHERE user_id='$session->user_id' ORDER BY date";
$res = mysql_query($qry);
$field_name = mysql_field_name($res, 0);

function mysql_fetch_all($res) {

    while($row=mysql_fetch_array($res)) {
        $return[] = $row;
    }

   return $return;
}

function create_table($dataArr) {
    echo "<form action=\"process.php\" method=\"POST\"><table><tr>";
    for($j = 0; $j < 3; $j++) {
        echo "<td><input type=\"text\" name=\"";
        echo $field_name;
        echo "\" maxlength=\"30\" value=" .$dataArr[$j]. "></td>";
    }
    echo "<td><input type=\"hidden\" name=\"subedit\" value=\"1\"><input type=\"submit\" value=\"Update\"></td></tr></table></form>";
}

$all = mysql_fetch_all($res);

echo "<table class='data_table'>";
echo "<tr><td colspan=\"3\"><h2>Current Profile</h2></td></tr>";
echo "<tr><small><td>Activity&nbsp;</td><td>Site&nbsp;</td><td>Date&nbsp;</td></small></tr>";

for($i = 0; $i < count($all); $i++) {
    create_table($all[$i]);
}

echo "</table></form>";

Ответы [ 2 ]

0 голосов
/ 04 апреля 2011

Попробуйте этот код:

<form action="process.php" method="POST">

<?

$qry = "SELECT activity, site, date, FROM home WHERE user_id='$session->user_id' ORDER BY date";
$res = mysql_query($qry);
$field_name = mysql_field_name($res, 0);

function mysql_fetch_all($res) {

    while($row=mysql_fetch_array($res)) {
        $return[] = $row;
    }

   return $return;
}

function create_table($dataArr, $field_name) {
    echo "<form action=\"process.php\" method=\"POST\"><table><tr>";
    for($j = 0; $j < 3; $j++) {
        echo "<td><input type=\"text\" name=\"";
        echo $field_name;
        echo "\" maxlength=\"30\" value=" .$dataArr[$j]. "></td>";
    }
    echo "<td><input type=\"hidden\" name=\"subedit\" value=\"1\"><input type=\"submit\" value=\"Update\"></td></tr></table></form>";
}

$all = mysql_fetch_all($res);

echo "<table class='data_table'>";
echo "<tr><td colspan=\"3\"><h2>Current Profile</h2></td></tr>";
echo "<tr><small><td>Activity&nbsp;</td><td>Site&nbsp;</td><td>Date&nbsp;</td></small></tr>";

for($i = 0; $i < count($all); $i++) {
    create_table($all[$i], $field_name);
}

echo "</table></form>";

Однако я рекомендую вам попытаться создать класс Table. Это было бы намного эффективнее и аккуратнее.

0 голосов
/ 02 апреля 2011

$field_name выходит за рамки (см. переменная область PHP страница).Попробуйте изменить create_table функцию, чтобы она принимала $field_name переменную следующим образом:

function create_table($dataArr, $field_name) {
...
}
...
for($i = 0; $i < count($all); $i++) {
    create_table($all[$i], $field_name);
}

или с использованием глобального (не так, как рекомендуется)

function create_table($dataArr) {
    global $field_name;
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...