每当我将输入字段留空时,$error['commment']
应设置并回显,但它不会回显,但如果我只是说echo "some text";
,则回显它。
comments函数在我的functions.php文件中,$error[] = array()
在我的comments()
函数上方的text.php文件中给出,所以我不明白为什么它不起作用,请帮帮我们。
最后一点PHP代码在while循环中,必须显示我的SQL查询的所有结果。
我的HTML上面的代码在text.php中:
<?php
session_start();
include("connect.php");
include("functions.php");
$userId = "";
if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn']){
$userId = $_SESSION['id'];
}
$error[] = array();
comments();
?>
我的functions.php中的代码:
function comments(){
if (isset($_POST['submit'])) {
$text = $_POST['text'];
$filledIn = true;
if (empty($text)) {
$error['comment'] = "No text filled in";
$filledIn = false;
}
}
}
这是我text.php中的代码:
<?php
if(isset($error['comment'])) echo "<p class='error'>".$error['comment']."</p>";
?>
答案 0 :(得分:0)
因为$error
不在comments()
函数的范围内。所以$error['comment']
永远不会被设置。
理想情况下,您可能希望执行以下操作:
text.php
session_start();
include("connect.php");
include("functions.php");
$userId = "";
if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn']){
$userId = $_SESSION['id'];
}
$error['comment'] = comments();
的functions.php
function comments(){
if (isset($_POST['submit'])) {
$text = $_POST['text'];
if (empty($text)) {
return "No text filled in";
}
}
return null;
}
text.php
<?php
if(!empty($error['comment'])) echo "<p class='error'>".$error['comment']."</p>";
?>
不是直接设置数组键“comments”,而是使用comments()函数的返回值来设置它。这样可以避免使用全局变量。
修改:我从$filledIn
删除了comments()
变量,因为它未在提供的代码中使用。
答案 1 :(得分:0)
@ pu4cu
imo,因为你不会觉得非常先进,所以你不必对现有的代码进行许多代码更改,这可能会让你进行最小的编辑,最容易理解;
如果在你的评论函数中,你只是return
来自这个函数的响应,就像一个好的小函数一样,那么当你调用函数时,当你将该函数设置为变量时,你的响应将可用。
// functions.php(注意这会将error设置为true以保证故障,但这取决于你如何使用它。将$response
设置为第一行instgad中的空数组,即{{1}如果你不想让它失效保险。
array();
//的index.php
<?php
function comments()
{
$response = array(
'error' => TRUE,
'filledIn' => FALSE
);
if (isset($_POST['submit']))
{
$text = $_POST['text'];
$response['filledIn'] = TRUE;
if (empty($text))
{
$response['error']['comment'] = "No text filled in";
}
else{
$response['error'] = NULL;
}
}
return $response;
}
// text.php
session_start();
include("connect.php");
include("functions.php");
$userId = "";
if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn']){
$userId = $_SESSION['id'];
}
$response = comments();
答案 2 :(得分:0)
我发现你的代码过于复杂,3个文件,2个包含和1个函数,当你真正需要的是这个:
$error = array();
$error['comment'] = empty($_POST['text']) ? "No text filled in" : $_POST['text'];
echo "<p class='error'>".$error['comment']."</p>";
答案 3 :(得分:0)
你的范围都混淆了。您的FDQuery2->SQL->Clear();
FDQuery2->SQL->Add(" SELECT C.patient_id, P.patient_name, C.check_id "
" FROM Checkup C "
" INNER JOIN Patient P ON (C.patient_id=P.patient_id) "
" WHERE C.today = :today" +
" ORDER BY C.check_id ");
FDQuery2->ParamByName("today")->AsString = MaskEdit1.Text;
FDQuery2->Active = true;
函数检查$ _POST,应该在调用函数之前检查它,然后尝试在其范围内设置变量,但是您尝试从外部访问相同的变量。
正确的方法是:
text.php:
comments()
的functions.php
<?php
session_start();
include("connect.php");
include("functions.php");
$userId = "";
if(isset($_SESSION['loggedIn']) && $_SESSION['loggedIn']){
$userId = $_SESSION['id'];
}
$error[] = array();
if (isset($_POST['submit']) {
comments($_POST);
}
?>
然后,您可以使用函数返回的值来处理结果。