在php中创建一个函数并使用$ _POST

时间:2014-11-15 09:59:58

标签: php

enter code here我在使用$ _POST和/或$ _GET方面遇到了困难。它不会让我检索我插入表单的任何属性。

这是我的功能;

<?php
function createTextField($label, $name, $size, $defaultValue)
{
    //print our paragraph
    echo '<p>';

    //print our label
    echo "<label>$label: </label>";
    echo '<input type="text" name="'.$name.' size="'.$size.'" value="'.$defaultValue.'"';

    echo '</p>';   
}

function createTextArea($label, $name, $cols, $rows, $defaultValue)
{
    //print our paragraph
    echo '<p>';

    //print out label
    echo "<label>$label: </label>";
    echo '<textarea value ="'.$text.'" rows="4" cols="50"></textarea>';

    echo '</p>';
}

function createRadioButtons($label, $name, $choice1, $choice2, $choice3)
{
    //print our paragraph
    echo '<p>';

    //print our label
    echo "<label>$label: </label>";
    echo '<input type="radio" name="'.$radio.'" value=value>'.$choice1.'';
    echo '<input type="radio" name="'.$radio.'" value=value>'.$choice2.'';
    echo '<input type="radio" name="'.$radio.'" value=value>'.$choice3.'';
    echo '</p>';
}

function createDropDown($label, $name, $option1, $option2, $option3, $option4)
{
    //print our paragraph
    echo '<br>';

    //print our label


    echo "<label>$label: </label>";
    echo '<select name="'.$option.'">
        <option value="option">'.$option1.'</option>
        <option value="option">'.$option2.'</option>
        <option value="option">'.$option3.'</option>
        <option value="option">'.$option4.'</option>
        </select>';

    echo '</p>';

}

然后是我的表格;

 <form action="questionnaire_results.php" method="post">
<h2>Questionnaire:</h2>
<?php
    // create TextField
    echo '<div style="width:520px;height:175px;border:3px solid black;">';
    createTextField('Name', 'label', 'size', '');
    createTextField('Age', 'label', 'size = 5', '');
    createTextField('Address', 'label', 'size = 30', '1000 1st St. Seattle, Wa 98999');
    createTextField('Address (cont)', 'label', 'size = 10', 'APT 13');

    echo '</div><br>';

    //create TextArea
    echo '<div style="width:520px;height:175px;border:3px solid black;">';
    createTextArea('Short biography', 'label', 'cols', 'rows', 'defaultValue');
    createTextArea('Extra Notes', 'label', 'cols', 'rows', 'defaultValue');
    echo '</div><br>';

    //create RadioButtons
    echo '<div style="width:520px;height:75px;border:3px solid black;">';
    createRadioButtons('Gender', 'name', 'Male', 'Female', 'Other');
    createRadioButtons('Employment', 'name', 'Employed', 'Not Employed', 'Not sure');
    echo '</div><br>';

    //create DropDown 
    echo '<div style="width:520px;height:50px;border:3px solid black;">';
    createDropDown('Did you like this questionnaire?', 'name', 'Yes', 'Sort Of', 'Maybe', 'No');
    echo '</div><br>'; 
?>
<br>
<input type="submit" value="Submit Questionnaire Answers!"> 
</p>
</form>
</body>

最后我的结果现在似乎不起作用:     

$name = '.name.';
$address = 'address';
$text = 'text';
$notes = 'notes';
$radio = 'radio';
$option = 'option';


if (!empty($_POST['name'])) {
  $name = $_POST['name'];
  echo "Name: $name<br>";
} else {
  echo 'Name field cannot be empty!<br>';
}

if (!empty($_POST['address'])) {
  $name = $_POST['address'];
  echo "Address: $address<br>";
} else {
  echo 'Address field cannot be empty!<br>';
}

if (!empty($_POST['text'])) {
  $name = $_POST['text'];
  echo "Short Biography: $notes<br>";
} else {
  echo 'Notes field cannot be empty!<br>';
}

if (!empty($_POST['radio'])) {
  $name = $_POST['radio'];
  echo "Gender: $radio<br>";
} else {
  echo '';
}

if (!empty($_POST['option'])) {
  $name = $_POST['option'];
  echo "Employment: $option<br>";
} else {
  echo '';
}
?> 

2 个答案:

答案 0 :(得分:1)

您的表单元素必须用form tag括起来,否则不会发布任何内容。

您应该在表单中添加一个按钮以提交表单数据。

 <input type="submit" value="Submit">

这是一个例子:

<?php
    echo '<div style="width:520px;height:175px;border:3px solid black;">';
    echo '<form action="yourScript.php" method="post">';

    // your form fields
    // createTextField(...);
    //createTextArea(...);
    //create RadioButtons
    //create DropDown 
    echo '<input type="submit" value="Submit">';
    echo '</form>';

您的代码存在许多问题。 您可以像这样渲染文本字段:

function createTextField($label, $name, $size, $defaultValue) {
    // ...
    echo '<input type="text" name="'.$name.' size="'.$size.'" value="'.$defaultValue.'"';
    // ...
}

但你调用这样的函数是:

    createTextField('Name', 'label', 'size', '');
    createTextField('Age', 'label', 'size = 5', '');

现在变量$name将包含文字&#39;标签&#39;,$size将包含文字&#39;尺寸&#39;等等。 这将呈现以下无效 html:

<input type="text" name="label size="size" value=""
<input type="text" name="label size="size = 5" value=""

有几个问题:

  • 输入标记未关闭
  • 名称引用未关闭
  • size属性不包含数字

以下内容应该是正确的,但我没有对其进行测试:

function createTextField($label, $name, $size, $defaultValue) {
    // ...
    echo '<input type="text" name="'.$name.'" size="'.$size.'" value="'.$defaultValue.'"></input>';
    // ...
}

你就这样称呼它

createTextField('Name', 'name', '5', '');

我建议你先阅读一些关于php和html的教程。 这个site可能对您有帮助,它包含一个包含教程的部分,但如果您在网上搜索,您会找到许多其他资源。

答案 1 :(得分:0)

检查一下。它会工作!!!

register.php:

echo '<form action="result.php" />';
echo '<div style="width:520px;height:175px;border:3px solid black;">';
createTextField('Name', 'label', 'size', '');
createTextField('Age', 'label', 'size = 5', '');
createTextField('Address', 'label', 'size = 30', '1000 1st St. Seattle, Wa 98999');
createTextField('Address (cont)', 'label', 'size = 10', 'APT 13');

echo '</div><br>';

//create TextArea
echo '<div style="width:520px;height:175px;border:3px solid black;">';
createTextArea('Short biography', 'label', 'cols', 'rows', 'defaultValue');
createTextArea('Extra Notes', 'label', 'cols', 'rows', 'defaultValue');
echo '</div><br>';

//create RadioButtons
echo '<div style="width:520px;height:75px;border:3px solid black;">';
createRadioButtons('Gender', 'name', 'Male', 'Female', 'Other');
createRadioButtons('Employment', 'name', 'Employed', 'Not Employed', 'Not sure');
echo '</div><br>';

//create DropDown
echo '<div style="width:520px;height:50px;border:3px solid black;">';
createDropDown('Did you like this questionnaire?', 'name', 'Yes', 'Sort Of', 'Maybe', 'No');
echo '</div><br>';
echo '<input type="submit" name="submit" value="submit" />';
echo "</form>";

result.php:

<?php 

if (!empty($_POST['name'])) {
  $name = $_POST['name'];
  echo "Name: $name<br>";
} else {
  echo 'Name field cannot be empty!<br>';
}

if (!empty($_POST['address'])) {
  $name = $_POST['address'];
  echo "Address: $address<br>";
} else {
  echo 'Address field cannot be empty!<br>';
}

if (!empty($_POST['text'])) {
  $name = $_POST['text'];
  echo "Short Biography: $notes<br>";
} else {
  echo 'Notes field cannot be empty!<br>';
}

if (!empty($_POST['radio'])) {
  $name = $_POST['radio'];
  echo "Gender: $radio<br>";
} else {
  echo '';
}