动态创建的表单元素中的预期分号

时间:2011-08-03 19:33:43

标签: php forms

我正在制作一个php脚本,它将: 1.连接数据库
2.在数据库中查询用户输入的字符串
3.将查询返回的每一行显示为动态创建的表单。每个表单都有两个“隐藏”输入字段,用于填充带有一些图像和文本的单独页面。表单是通过链接提交的,该链接使用onclick属性和javascript'document.form.submit()'来处理提交表单。

我遇到的问题是每个创建的表单都会导致页面抛出一​​个'分号预期'错误,说明我的代码中的单词中间应该有一个分号!我99.99%确定导致此错误的是在下面的代码中的某个地方,但我现在已经盯着它看了很长一段时间而且我很难过。

// Run a query against each field to search for input
foreach($columns as $field){
$searchquery = 'SELECT * FROM mytable WHERE '.$field.' LIKE \'%'.$input.'%\'';
$results = $db->Execute($searchquery);

// We introduce HTML formatting for each result in $results
foreach($results as $resultset) {
    echo '<div style="border: 2px solid black;">';

    // Each result in $results is an array, where the keys and values correspond to the field names and values of the table
    foreach($resultset as $key=>$value) {
        if($key == 'ID'){ // Query the database by ID for the rows returned by the previous query
            $resultquery = 'SELECT field1, field2, field3 FROM mytable WHERE '.$key.' = \''.$value.'\'';
            $row = $db->Execute($resultquery);
            $row = explode(",", $row);
            $id = $row[2];
            $company = $row[3];
            $prodname = $row[4];
            echo "<form name='rowForm.$i' action='page.php' method='POST'>";
            echo "<input type='hidden' name='Company' value='$company'>";
            echo "<input type='hidden' name='ProductName' value='$prodname'>";
            echo "<a href='path/to/my/page' onclick='javascript:document.rowForm.$i.submit(); return false;'> $company - $prodname ($id) </a>";
            echo "</form>";
            $i++;
        }
    }
    echo '</div>';
}
}

Fyi,$ columns是一个数组,它包含我表中所有列的名称。所有表单都能正确显示,一切看起来都应该如此;由于这个分号错误,唯一的问题是链接无法正常工作。我相信我已经发布了所有相关代码,但如果看起来有些东西丢失,请随时告诉我。如果有人能指出我正确的方向,我真的很感激!

编辑:这是由上面的php生成的html代码,添加了一些额外的空格,并且为了可读性,某些变量的实际值被替换为{$ varname的value}。请注意,此代码是为sql查询返回的每一行生成的。

<div style="border: 2px solid black;">
    <form name='rowForm.0' action='page.php' method='POST'>
        <input type='hidden' name='Company' value='{$company's value}'>
        <input type='hidden' name='ProductName' value='{$prodname's value}'>
        <a href='http://link/to/my/site' onclick='javascript:document.forms[\'rowForm.0\'].submit(); return false;'> {This is the link text} </a>
    </form>  
</div>

2 个答案:

答案 0 :(得分:0)

不太确定,但我猜你试图在单引号中逃脱的角色没有被转义。你应该这样写:

$searchquery = "SELECT * FROM mytable WHERE " .$field. " LIKE '% ". $input . "%'";

$resultquery = "SELECT field1, field2, field3 FROM mytable WHERE " .$key. " = '" . $value . "'";

//编辑:

我的坏,我得到了逃避的东西不太正确:

Note: Unlike the double-quoted and heredoc syntaxes, variables and escape sequences for special characters will not be expanded when they occur in single quoted strings. 

http://php.net/manual/en/language.types.string.php


并且,正如已经提到的,上面的代码在底部缺少}来关闭第一个foreach;)

答案 1 :(得分:0)

这是:

document.rowForm.$i.submit()

HTML源代码中的数量?

document.rowForm..submit()

...因为那时我可以看到一个问题...

如果没有,我仍然会选择:

document.forms['rowForm.$i'].submit()