Почему моя сгенерированная PHP форма внутри ячейки таблицы производит такой странный HTML - PullRequest
0 голосов
/ 02 марта 2012

Мне нужна помощь!

Почему следующий код:

function buildDeleteForm($deleteUrl,$searchArray) {
print ("<form target=\"_self\" method=\"post\">\n");
print ("<input type=\"hidden\" name=\"delUrl\" value=\"" . $deleteUrl . "\" />\n");
print ("<input type=\"hidden\" name=\"url\" value=\"" . $searchArray . "\" />\n");
print ("<input type=\"submit\" name=\"delete\" value=\"delete\" />\n</form>\n");
}


foreach ($urls as $url) {
    $url = preg_replace('/\s+/', '', $url);
    print("<tr><td>" . $url . "</td>");
    $response = sendRestRequest($url,$type);
    $status = $response['http_code'];
    if ($status == 200) {
        // build the form
        print("<td class=\"result\"><img src=\"200.png\"></td><td class=\"right\">" . buildDeleteForm($url,$urllist) . "</td></tr>");
    } elseif ($status == 404) {
        print("<td class=\"result\"><img src=\"404.png\"></td><td class=\"right\">&nbsp</td></tr>");
    } else {
        print("<td class=\"result\"><img src=\"error.png\"></td><td class=\"right\">" . $status . "</td></tr>");
    }
}

Создайте этот сумасшедший HTML:

<tr>
    <td>
        http://someserver4017.site.com/resources/datacaches/xi50cache/xi50cache_RetailItemCommunication_se.LUT/sv_art_40101790
    </td>
    <form target="_self" method="post">
        <input type="hidden" name="delUrl" value="http://someserver4017.site.com/resources/datacaches/xi50cache/xi50cache_RetailItemCommunication_se.LUT/sv_art_40101790" />
        <input type="hidden" name="url" value="http://someserver4017.site.com/resources/datacaches/xi50cache/xi50cache_RetailItemCommunication_se.LUT/sv_art_40101790,http://someserver4018.site.com/resources/datacaches/xi50cache/xi50cache_RetailItemCommunication_se.LUT/sv_art_40101790,http://someserver4020.site.com/resources/datacaches/xi50cache/xi50cache_RetailItemCommunication_se.LUT/sv_art_40101790" />
        <input type="submit" name="delete" value="delete" />
    </form>
    <td class="result">
        <img src="200.png">
    </td>
    <td class="right">
    </td>
</tr>

Он взял форму полностью из ячейки таблицы ... Я мог бы понять, была ли это просто вещь CSS, но это действительно сгенерированный исходный код, который был совершенно странным. Я знаю, что это что-то простое, что я просто не могу видеть и будет выглядеть глупо - но эй, я просто хочу, чтобы это сработало :)

Ответы [ 3 ]

2 голосов
/ 02 марта 2012

Вы выполняете print вместо return, что означает, что он печатает форму перед объединением компонентов ячейки таблицы и нечего объединять, потому что функция ничего не возвращает. Сделайте это следующим образом:

function buildDeleteForm($deleteUrl,$searchArray) {
    $html = '';
    $html .= '<form target="_self" method="post">'."\n";
    $html .= '<input type="hidden" name="delUrl" value="' . $deleteUrl . '" />'."\n";
    $html .= '<input type="hidden" name="url" value="' . $searchArray . '" />'."\n";
    $html .= '<input type="submit" name="delete" value="delete" />'."\n";
    $html .= '</form>'."\n";
    return $html;
}

Я также изменил строки, чтобы убрать все обратные слеши, сделав их немного более читабельными.

2 голосов
/ 02 марта 2012

Поскольку вы оцениваете функцию buildDeleteForm(), которая выводит строку для пользователя, а не просто возвращает , чтобы она была объединена в выражение. Замените несколько вызовов на print в buildDeleteForm() одним оператором return.

1 голос
/ 02 марта 2012

Ваша buildDeleteForm функция генерирует выходные данные, а не возвращает строку для конкатенации.

function buildDeleteForm($deleteUrl, $searchArray)
{
    return '
        <form target="_self" method="post">
        <input type="hidden" name="delUrl" value="' . $deleteUrl . '" />
        <input type="hidden" name="url" value="' . $searchArray . '" />
        <input type="submit" name="delete" value="delete" />
        </form>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...