PHP-简单表单无法正确显示的问题

PHP-简单表单无法正确显示的问题,php,html,forms,Php,Html,Forms,好的,我有这个代码 $formBlock = "<form method=\"post\" action=\"$_SERVER[PHP_SELF]\"> <p>First Name: <input name=\"first\" type=\"text\" size=13 maxlength=25 /></p> <p>Last name: <input name=\"last\" type=\"text\"

好的,我有这个代码

    $formBlock = "<form method=\"post\" action=\"$_SERVER[PHP_SELF]\">
    <p>First Name: <input name=\"first\" type=\"text\"  size=13 maxlength=25 /></p>
   <p>Last name: <input name=\"last\" type=\"text\" size=13 maxlength=25 /></p>
    <p>City:<input name=\"city\" type=\"text\" size=25 maxlength=50 /></p>
    <p>State: '.state_selection().' </p>
    <p>Email:<input name=\"email\" type=\"text\" size=50 maxlength=75 /></p>
    <p>Birthday:<input name=\"bday\" type=\"text\" size=10 maxlength=10 />(ex 1982-06-26)</p>
    <p><input type=\"hidden\" name=\"op\" value=\"ds\" /></p>
    <p><input type=\"submit\" name=\"submit\" value=\"Add Contact\" /></p>
    </form>";
$formBlock=”
名字:

姓氏:

城市:

状态:'.State_selection()。'

电邮:

生日:(ex 1982-06-26)

";
但是,“.state\u selection().”部分只显示文本“.state\u selection().” 如果我将字符串更改为单引号,然后删除内部双引号之前的\。。。
所有内容都显示正确-但是当我尝试提交表单时,它告诉我它找不到$\u服务器[PHP\u SELF]url

在函数中不使用
echo
返回值

function state_selection()
{
    $str = '<select name="state">';
    $states = array(
            'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'District of Columbia', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'
        );
    foreach ($states as $state_name)
    {
        $str .= '<option value="'.$state_name.'">'.$state_name.'</option>';
    }
    $str .= '</select>';

    return $str;
}
功能状态_选择()
{
$str='';
$states=数组(
“阿拉巴马州”、“阿拉斯加”、“亚利桑那州”、“阿肯色州”、“加利福尼亚州”、“科罗拉多州”、“康涅狄格州”、“特拉华州”、“哥伦比亚特区”、“佛罗里达州”、“乔治亚州”、“夏威夷州”、“爱达荷州”、“伊利诺伊州”、“印第安纳州”、“爱荷华州”、“堪萨斯州”、“肯塔基州”、“路易斯安那州”、“缅因州”、“马里兰州”、“马萨诸塞州”、“密歇根州”、“明尼苏达州”、“密西西比州”、“密苏里州”、“蒙大拿州”、“内布拉斯加州”、“内华达州”“新罕布什尔州”、“新泽西州”、“新墨西哥州”、“纽约州”、“北卡罗来纳州”、“北达科他州”、“俄亥俄州”、“俄克拉何马州”、“俄勒冈州”、“宾夕法尼亚州”、“罗德岛州”、“南卡罗来纳州”、“南达科他州”、“田纳西州”、“德克萨斯州”、“犹他州”、“佛蒙特州”、“弗吉尼亚州”、“华盛顿州”、“西弗吉尼亚州”、“威斯康星州”、“怀俄明州”
);
foreach($state作为$state\u名称)
{
$str.=''.$state_name.';
}
$str.='';
返回$str;
}

在函数中不使用
echo
返回值

function state_selection()
{
    $str = '<select name="state">';
    $states = array(
            'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'District of Columbia', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'
        );
    foreach ($states as $state_name)
    {
        $str .= '<option value="'.$state_name.'">'.$state_name.'</option>';
    }
    $str .= '</select>';

    return $str;
}
功能状态_选择()
{
$str='';
$states=数组(
“阿拉巴马州”、“阿拉斯加”、“亚利桑那州”、“阿肯色州”、“加利福尼亚州”、“科罗拉多州”、“康涅狄格州”、“特拉华州”、“哥伦比亚特区”、“佛罗里达州”、“乔治亚州”、“夏威夷州”、“爱达荷州”、“伊利诺伊州”、“印第安纳州”、“爱荷华州”、“堪萨斯州”、“肯塔基州”、“路易斯安那州”、“缅因州”、“马里兰州”、“马萨诸塞州”、“密歇根州”、“明尼苏达州”、“密西西比州”、“密苏里州”、“蒙大拿州”、“内布拉斯加州”、“内华达州”“新罕布什尔州”、“新泽西州”、“新墨西哥州”、“纽约州”、“北卡罗来纳州”、“北达科他州”、“俄亥俄州”、“俄克拉何马州”、“俄勒冈州”、“宾夕法尼亚州”、“罗德岛州”、“南卡罗来纳州”、“南达科他州”、“田纳西州”、“德克萨斯州”、“犹他州”、“佛蒙特州”、“弗吉尼亚州”、“华盛顿州”、“西弗吉尼亚州”、“威斯康星州”、“怀俄明州”
);
foreach($state作为$state\u名称)
{
$str.=''.$state_name.';
}
$str.='';
返回$str;
}
  • 一旦遇到它,就立即输出,这意味着在您的情况下,即使您将调用函数作为构建字符串的一部分,由它生成的输出
    echo
    也将被输出。相反,您应该在函数中构建一个字符串并返回它

  • 您不应该在单引号字符串中转义双引号(
    \”
    ),因为它将显示为文本斜杠和双引号。当前,浏览器遇到
    \“text”
    \“hidden”“
    作为类型属性,不知道如何解释,因此会恢复为默认类型,即文本。

  • <p><input type=\"hidden\" name=\"op\" value=\"ds\" /></p>
  • 一旦遇到它,就立即输出,这意味着在您的情况下,即使您将调用函数作为构建字符串的一部分,由它生成的输出
    echo
    也将被输出。相反,您应该在函数中构建一个字符串并返回它

  • 您不应该在单引号字符串中转义双引号(
    \”
    ),因为它将显示为文本斜杠和双引号。当前,浏览器遇到
    \“text”
    \“hidden”“
    作为类型属性,不知道如何解释,因此会恢复为默认类型,即文本。

  • <p><input type=\"hidden\" name=\"op\" value=\"ds\" /></p>

    在php脚本顶部(在php标记之后)使用“error_reporting(E_ALL)”将帮助您调试错误。

    在php脚本顶部(在php标记之后)使用“error_reporting(E_ALL)”将帮助您调试错误。

    尝试将
    '.state_selection().
    更改为
    .state_selection()

    尝试将
    '.state_selection().
    更改为
    '.state_selection()。“

    关于2:总是让我惊讶的是,即使在发生了这么多格式错误的事情之后,HTML也能很好地显示内容。好的-如果我删除整个字符串中的所有,那么所有内容都会完美地显示出来。但是,当我收到提交表单时,它告诉我找不到$\u服务器[PHP\u SELF]url。如果我将字符串更改为“and escape all of the”,就像我原来那样。。。表单提交很好,但状态没有显示,它只显示“.state_selection()。@Jason我更新了我的答案…”。。。。你完全改变了你的问题,以至于我的答案不再适用。如果你有新问题,你真的应该创建第二个问题。关于#2:总是让我惊讶的是,即使在发生了这么多格式错误的事情之后,HTML也能很好地显示内容。好吧-如果我删除整个字符串中的所有,那么所有内容都会完美地显示出来。但是,当我收到提交表单时,它告诉我找不到$\u服务器[PHP\u SELF]url。如果我将字符串更改为“and escape all of the”,就像我原来那样。。。表单提交很好,但状态没有显示,它只显示“.state_selection()。@Jason我更新了我的答案…”。。。。你完全改变了你的问题,以至于我的答案不再适用。如果你有一个新问题,你真的应该提出第二个问题。