【问题标题】:php $_post pass issuephp $_post 通过问题
【发布时间】:2013-10-16 21:45:59
【问题描述】:

我是 php 新手。我要做的是上传一个文件,在 textarea 中生成它的内容,选择一个分隔符,然后根据在 html 表中选择的分隔符拆分行。 html 表是另一种形式。我对生成内容和分隔符没有任何问题。该代码适用于静态设置的字符串。当我尝试将 textarea 的内容传递到 html 表中时,问题就来了。

如果有人能提供帮助,我将不胜感激。

这是 HTML:

<form action="<?php session_start(); $areaText = $_POST['output'];  $selected_radio = $_POST['delimiter'];  echo $_SERVER['PHP_SELF'] ?>"
<?php 
if (!empty($_FILES['uploadedfile']) && file_exists($_FILES['uploadedfile']['tmp_name'])&& $_FILES['uploadedfile']['type'] == 'text/plain') {
    $file1 = $_FILES['uploadedfile']['tmp_name'];
    $lines = file($file1);
    foreach($lines as $line_num => $line)
    {
        echo $line;
    }
}
else {
    echo "Sorry, you're not allowed to upload these type of files.";
}
?></textarea> 
</form>

这是 PHP:

if (isset($_POST['output'])) {
    $string = $_POST['output'];
    $trimmedString = trim($string);
    echo '<div contenteditable><table id = "TestTable" border="1" width="100%" id="table1">';
    $lines = explode("\n", $trimmedString);
    foreach($lines as $line) {
        echo "<div contenteditable><tr></div>"; 
        $elements = explode($_POST['delimiter'], $line); 
        foreach($elements as $element) {
            echo "<td>" . $element . "</td>";
        }
        echo "</tr>";
    }
    echo '</table></div>'; 
}
?>

我从这里取定界符:

<form method="post" id="form_732147" class="appnitro"  method="post" action="page2.php">
    <span>
        <label class="description" for="element_4">Choose a delimiter: </label>
        <input type="radio" name="delimiterr" value="," >Comma</br>
        <input type="radio" name="delimiter" value="." >Fullstop</br>

【问题讨论】:

  • 等等什么? &lt;form action="&lt;?php session_start(); $areaText = $_POST['output']; $selected_radio = $_POST['delimiter']; echo $_SERVER['PHP_SELF'] ?&gt;"
  • 到目前为止,生成的 HTML(第一个 sn-p)看起来像 &lt;form action="something"somelines&lt;/textarea&gt;&lt;/form&gt; ?
  • 除非您不介意重新加载页面,否则这更像是 AJAX/Javascript 问题而不是 php 问题..

标签: javascript php html ajax


【解决方案1】:
echo "<div contenteditable><tr></div>";

这在 html 中是不允许的,因为标签嵌套不正确。

你可能想尝试这样的事情:

foreach($lines as $line) {
    echo "<div contenteditable><tr>"; 
    $elements = explode($_POST['delimiter'], $line); 
    foreach($elements as $element) {
        echo "<td>" . $element . "</td>";
    }
    echo "</tr></div>";
}

无论如何,您能进一步解释一下您遇到了什么样的问题吗?

问候

【讨论】:

  • “未定义索引”错误。当我添加 "if (isset($_POST['output'])){ }" 时,什么也没有出现。如果我有一个静态字符串,代码就可以工作,例如 $string = "abc, bca, cba";
  • 问题似乎出在表单上,​​您可以在其中获得输出代码。仔细检查所有name="output" 属性和表单的method="post"。还要检查你提交的是否包含该输入字段
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 2011-11-23
  • 1970-01-01
  • 2012-03-30
  • 2016-08-09
相关资源
最近更新 更多