PHP不传递变量 [英] php not passing along variables

查看:113
本文介绍了PHP不传递变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为我的课程项目创建我的预订网站,并且已经完全脱离了我的联盟。我当前的问题涉及这样一个事实,即由于某种原因,我的代码正在向我的内置错误处理程序投掷,以验证是否输入了变量。



我的目标是创建一个页面查询我的数据库并返回哪些网站符合列出的要求(日期/设施),然后在另一个页面上回显出来我也在努力)。



我意识到我的代码很糟糕。公平地说,我在这方面非常糟糕。正如我在前一篇文章中所说的,我的教授把我推进了一个我没有背景并且没有做好准备的大型项目。



随机想法 - 我认为问题的一部分可能是phpmyadmin对日期使用了非常糟糕的格式(我认为它是年/月/日),这就是抛出错误的原因。当我试着用google搜索这个答案时,它希望我通过数据库结构转换数据,但该选项不是通过000webhost.com(它位于我的本地主机上)给出的。



新年快乐!

网址: https://campease.000webhostapp.com/index.php - 点击营地
标题代码:

 <?php 
@session_start();
require_once(includes / dbh.inc.php);
?>

<!DOCTYPE html>
< html>
< head>
< script src =https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js>< / script>
< script>
$(document).ready(function(){
$('#login-trigger')。click(function(){
$(this).next('#login-内容')。slideToggle();
(this).toggleClass('active');

if($(this).hasClass('active'))$(this) ('&#x25BC;')
}。 )
});
$(document).ready(function(){
$('#reserve-trigger')。click(function(){
$(this).next('#reserve-内容')。slideToggle();
$(this).toggleClass('active');
})
}); $('#reserve-trigger')。on('focusout',function(){
$(this).toggleClass('active');
}); $($#$ b $('#login-trigger')。on('focusout',function(){
$(this).toggleClass('active');
});
< / script>
< link rel =stylesheethref =https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css>
< script src =https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js>< / script>
< script src =https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js>
< SCRIPT TYPE =text / javascript>
< / script>

< script>
$(document).ready(function(){$(#startdate)。datepicker();});
$(document).ready(function(){$(#enddate)。datepicker();});
< / script>
< link rel =stylesheethref =./ css / style.css>
< / head>
< body>
< header>
< div class =container>
< div id =品牌>
< h1>< span class =highlight>耳语< / span>风之公园< / h1>
< / div>
< nav>
< ul>
< li class =current>< a href =index.php>主页< / a>< / li>
< li>< a href =mission.php>我们的使命< / a>< / li>
< li>< a href =donate.php>捐赠< / a>< / li>
< li>< a id =reserve-triggerhref =#>露营< / a>
< div id =reserve-contenttabindex = - 1>
< form action =includes / reserve.inc.phpmethod =POST>
< fieldset id =inputs2>
< ul>
< input id =startdateplaceholder =Start Date/>
< input id =enddateplaceholder =End Date/>
< li id =chk>< label for =fire> Fire Pit:< / label>< input type =checkboxvalue =Fire><李>
< li id =chk>< label for =electric> Electricity:< / label>< input type =checkboxvalue =Electric>< / li> ;
< li id =chk>< label for =sewer>污水:< / label>< input type =checkboxvalue =Sewer>< / li> ;
< button type =submitclass =button3name =submit1>查找预订< / button>
< / ul>
< / fieldset>
< / form>
< / div>
< / li>

<! - / *登入按钮* / - >
<?php
if(isset($ _ SESSION [u_uid])){
echo'
< li>< form action =includes / logout。 inc.phpmethod =POST>
< button type =submitclass =button_1name =Submit>注销< / button>
< / form>< / button>< / li>';
} else {
echo
'< li id =login>
< a id =login-triggerhref =#>
< button class =button_1>登录< span>▼< / span>< / button>
< / a>
< div id =login-contenttabindex = - 1>
< form action =includes / login.inc.phpmethod =POST>
< fieldset id =inputs>
< input type =textname =uidplaceholder =用户名必填>
< input type =passwordname =pwdplaceholder =Passwordrequired>
< button type =submitclass =button3name =Submit>登录< / button>
< / fieldset>
< / form>
< / div>
< / li>
< li id =注册>
< a href =signup.php>< button class =button_1>注册< /按钮>< / a>
< / li>';
}
?>
<?php
if(isset($ _ SESSION [u_admin]))
{
echo'
< li id =signup>
< a href =admin.php>< button class =button_1>管理员< /按钮>< / a>
< / li>';
}
?>

< / ul>
< / nav>
< / div>
< / header>
< / body>

检索代码:

 <?php 
@session_start();
if(isset($ _ POST ['submit1'])){

require_once(dbh.inc.php);

$ fire = 0;
$ electric = 0;
$ sewer = 0;

if(isset($ _ POST ['startdate']))
$ _SESSION ['startdate'] = $ _POST ['startdate'];
if(isset($ _ POST ['enddate']))
$ _SESSION ['enddate'] = $ _POST ['enddate'];

if(!empty($ _ POST ['fire'])){
$ fire = mysqli_real_escape_string($ conn,$ _POST ['fire']);

$ b $ if(!empty($ _ POST ['electric'])){
$ electric = mysqli_real_escape_string($ conn,$ _POST ['electric']);
}

if(!empty($ _ POST ['sewer'])){
$ sewer = mysqli_real_escape_string($ conn,$ _POST ['sewer']);



if(empty($ startdate)|| empty($ enddate)){
header(Location:../index.php?指数= empty_dates);
exit();



$ sql =SELECT * FROM campsite WHERE water ='$ sewer'OR fire ='$ fire'OR electric ='$ electric'
AND site_id NOT IN(SELECT site_id FROM reservation
where startdate ='$ startdate'and'$ startdate'< ='$ enddate');

$ result = mysqli_query($ conn,$ sql);

$ resultCheck = mysqli_num_rows($ result);

if($ resultCheck< 1){
header(Location:../index.php?index=no_available_camps);
exit();
} else {

while($ row = mysqli_fetch_assoc($ result)){

if($ row = mysqli_fetch_assoc($ result)){


$ siteID = mysqli_real_escape_string($ conn,$ _POST ['site_id']);
$ uid = mysqli_real_escape_string($ conn,$ _POST ['uid']);
$ start = mysqli_real_escape_string($ conn,$ _POST ['startdate']);
$ end = mysqli_real_escape_string($ conn,$ _POST ['enddate']);
$ price = mysqli_real_escape_string($ conn,$ _POST ['s_price']);

//错误处理程序
//检查空字段

if(empty($ start)|| empty($ end)){
标题(Locaction:../reserve.php?=error);
exit();
} else {
//确定日期是否可用
$ sql =选择*从露营地开始,其中startdate< ='$ start'AND其中startdate>'$ end';
$ result = mysqli_query($ conn,$ sql);
$ resultcheck = mysqli_num_rows($ result);
$ b $ if($ resultcheck> 0){
header(Location:../reserve.php?=error2);
} else {
$ sql =INSERT INTO campsite(site_id,uid,startdate,enddate)
VALUES('$ siteID','$ uid','$ start','$结束');;
header(Location:./ campground.php);
exit();
}
}
}
}
?>


解决方案

HTML有一些错误,搜索营地实际上并未提交任何数据,这很可能是由于HTML中的一些错误。一个 ul 元素可以只有 li 元素作为子元素 - 但是那些 li 元素可以有其他内容(在这种情况下通常不是最好的方法),并且形成任何类型的输入元素都应该有一个名称属性和一个值。在预订表格 fire electric 下水道应该以1的值命名(参考上一个问题)。日期选择器需要有名称,所以要么不是ID,要么将它们命名为 startdate enddate 因为PHP脚本期望它们在POST数组中。



如果表单确实成功提交数据并且sql查询运行良好,那么结果将显示在哪里?我可以看到表单的行为是 includes / reserve.inc.php ,它是代码的第二部分(PHP),但不输出任何内容。 / p>

在浏览器中编辑HTML以向各种表单元素添加属性并更改其值,然后在提交表单之前在实时页面上生成以下POST参数...

p>

  startdate = 01%2F03%2F2018& enddate = 01%2F17%2F2018& fire = 1& electric = 1& sewer = 1& submit1 = 

以前只有 submit1 是出现。然而,还没有结果发回。



因为您已经在页面上为 jquery 要做的事情是使用ajax将数据发布到后端PHP脚本,并使用回调将HTML内容添加到当前页面?也许有些事情需要考虑。

 <?php 
@session_start();
require_once(includes / dbh.inc.php);
?>

<!DOCTYPE html>
< html>
< head>
< script src =// ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js\"> ;</script>
< script>

$(document).ready(function(){
$('#login-trigger')。click(function(){
$(this).next( ('(this).hasClass('active'))。$#$ b $(this).toggleClass('active');

如果($(this).hasClass('active')) $(this).find('span')。html('&#x25B2;')
else $(this).find('span')。html('&#x25BC;')
})
});

$(document).ready(function(){
$('#reserve-trigger')。click(function(){
$(this).next( '#reserve-content')。slideToggle();
$(this).toggleClass('active');
})
}); $()#
$('#reserve-trigger')。on('focusout',function(){
$(this).toggleClass('active');
}) ; $('#login-trigger')。on('focusout',function(){
$(this).toggleClass('active');
}) ;
< / script>
< link rel =stylesheethref =// ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css\">
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆