Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP代码中断;如果;语句,否则这两个函数独立工作_Php_Jquery_Ajax_Conditional Statements - Fatal编程技术网

PHP代码中断;如果;语句,否则这两个函数独立工作

PHP代码中断;如果;语句,否则这两个函数独立工作,php,jquery,ajax,conditional-statements,Php,Jquery,Ajax,Conditional Statements,我在php中有两个函数,用于在网站上显示页面内容 这两个函数都是从页面内部独立工作的,因此我向自己证明的ajax调用中的$\u POST变量都存在 有2个页面,加上按钮,我不会打扰下面的按钮 pages/pages.php(问题陈述在哪里,由ajax从按钮调用) 然后pageDivs()运行,证明infact$page已设置且可用 编辑 我还应该指出,我启动If语句的目的只是为了!=然后后来转到!==而且没有效果 编辑2: 对于Rasclatt,这里是按钮html输出。我必须保留href或我的c

我在php中有两个函数,用于在网站上显示页面内容

这两个函数都是从页面内部独立工作的,因此我向自己证明的ajax调用中的$\u POST变量都存在

有2个页面,加上按钮,我不会打扰下面的按钮

pages/pages.php(问题陈述在哪里,由ajax从按钮调用)

然后pageDivs()运行,证明infact$page已设置且可用

编辑 我还应该指出,我启动If语句的目的只是为了!=然后后来转到!==而且没有效果

编辑2:

对于Rasclatt,这里是按钮html输出。我必须保留href或我的css中断,但如果需要,我可以删除它并重写我的css:

<div id="navCol" class="col-sm-1">
    <!--nav in here-->

    <ul id="mainNav" class="nav navbar">
        <!--beginning of main list-->

        <li class="nav navbar navbar-text">
            <a id="home" href="#home" data-acton="#home" data-page="home" class="bbutt do-action active"> Home </a>
        </li>


        <li class="nav navbar navbar-text">
            <a id="bio" href="#bio" data-acton="#bio" data-page="bio" class="bbutt do-action inactive"> Biography </a>
        </li>


        <li>
            <div id="accordion1" class="accordion" role="tablist">
                <div id="header-card" class="card accordion">
                    <div class="card-header accordion accordion-header work" role="tab" id="headingOne1">
                        <h5 class="mb-0"> <a id="work" class="do-action" data-page="work" data-toggle="collapse" data-acton="#work" href="#collapseOne1" role="button" aria-expanded="true" aria-controls="collapseOne1"> Work </a> </h5>
                    </div>
                    <div id="collapseOne1" class="collapse accordion" role="tabpanel" aria-labelledby="headingOne1" data-parent="#accordion1">

                        <div class='card-body accordion accordion-item inactive'>
                            <a id="install" data-page="install" class="do-action install" href="#install" data-acton="#install" class="subs first">
                    Installations 
                </a>

                        </div>
                        <div class='card-body accordion accordion-item inactive'>
                            <a id="write" data-page="write" class="do-action write" href="#write" data-acton="#write" class="subs">
                    Writing 
                </a>

                        </div>
                        <div class='card-body accordion accordion-item inactive'>
                            <a id="video" data-page="video" class="do-action video" href="#video" data-acton="#video" class="subs">
                    Video 
                </a>

                        </div>
                        <div class='card-body accordion accordion-item inactive'>
                            <a id="photo" data-page="photo" class="do-action photo" href="#photo" data-acton="#photo" class="subs last">
                    Photography 
                </a>

                        </div>

                    </div>
                </div>
            </div>
        </li>

        <li>
            <div id="accordion2" class="accordion" role="tablist">
                <div id="header-card" class="card accordion">
                    <div class="card-header accordion accordion-header2 works" role="tab" id="headingTwo1">
                        <h6 class="mb-0"> <a id="works" class="do-action" data-toggle="collapse" href="#collapseTwo1" data-acton="#workshops" data-page="works" role="button" aria-expanded="true" aria-controls="collapseTwo1">Workshops</a> </h6>
                    </div>
                    <div id="collapseTwo1" class="collapse accordion" role="tabpanel" aria-labelledby="headingTwo1" data-parent="#accordion2">

                        <div class='card-body accordion accordion-item inactive'>
                            <a id="child" data-page="child" class="do-action child" href="#child" data-acton="#child" class="subs first">
                    Children 
                </a>

                        </div>
                        <div class='card-body accordion accordion-item inactive'>
                            <a id="adols" data-page="adols" class="do-action adols" href="#adols" data-acton="#adols" class="subs">
                    Adolescents 
                </a>

                        </div>
                        <div class='card-body accordion accordion-item inactive'>
                            <a id="adult" data-page="adult" class="do-action adult" href="#adult" data-acton="#adult" class="subs last">
                    Adults 
                </a>

                        </div>

                    </div>
                </div>
            </div>
        </li>

        <li class="nav navbar navbar-text">
            <a id="contact" href="#contact" data-acton="#contact" data-page="contact" class="bbutt do-action inactive"> Contact </a>
        </li>


    </ul>

</div>


在这里把事情结合起来;这一行的javascript中存在PHP语法异常:

var lang = '<?php echo $_GET['
lang ']; ?>';
var lang='';
尝试将其放在一行上,并删除键名中的空格:

var lang = '<?php echo $_GET['lang']; ?>';
var lang='';
其次,您不应该一遍又一遍地重复JavaScript部分。您可以将其简化为一个ajax函数,然后使用其他DOM元素来表示您对该函数的意图,例如:

<script>
// Wrap your stuff in one function and inject what you need that changes
function doAjaxCall(btn, page, lang)
{
    // Set the query string
    var dataTosend = 'page=' + page + '&lang=' + lang;
    // If is obj do the button stuff
    if(btn !== false) {
        $('.active').addClass('inactive').removeClass('active');
        btn.removeClass('inactive').addClass('active');
    }
    // Run the ajax and all that jazz
    $('.content').fadeOut(500, function() {
        $('.content').remove();
        $.ajax({
          url: "pages/pages.php",
          cache: false,
          type: 'POST',
          data: dataTosend,
          async: true,
        }).done(function(html) {
          $("#contentCol").append(html);
          $('.content').fadeIn(1000);
        });
    });
}
// Set document ready
$(function(){
    // Just send the language once, make sure to try and remove any possible
    // user hackery...
    var lang = '<?php echo htmlspecialchars($_GET["lang"], ENT_QUOTES) ?>';
    // Run the default ajax on page load
    doAjaxCall(false, 'home', lang);
    // Just listen for one element on click now
    $(this).on('click', '.do-action', function(){
        // If the element that is being clicked is the same one that is going
        // to have the .active done to it, then just use $(this) only
        doAjaxCall($($(this).data('acton')), $(this).data('page'), lang);
    });
});

//Collapse Dropdowns with other buttons
$('.bbutt').click(function() {
    $('#collapseOne1').removeClass('show');
    $('#collapseTwo1').removeClass('show');
});
$('#work').click(function() {
    $('#collapseTwo1').removeClass('show');
});

$('#works').click(function() {
    $('#collapseOne1').removeClass('show');
});

//debug
$('#console-debug').hide();
$('#btn-debug').on("click", function() {
    $('#console-debug').toggle();
});
</script>

//将您的内容封装在一个函数中,并注入所需的更改
函数调用(btn、page、lang)
{
//设置查询字符串
var dataTosend='page='+page+'&lang='+lang;
//如果是obj做按钮的东西
如果(btn!==假){
$('.active').addClass('inactive').removeClass('active');
btn.removeClass('inactive').addClass('active');
}
//运行ajax和所有的jazz
$('.content').fadeOut(500,function(){
$('.content').remove();
$.ajax({
url:“pages/pages.php”,
cache:false,
键入:“POST”,
数据:dataTosend,
async:true,
}).done(函数(html){
$(“#contentCol”).append(html);
$('.content').fadeIn(1000);
});
});
}
//准备好文件
$(函数(){
//只需发送一次语言,确保尝试删除任何可能的错误
//用户黑客。。。
var lang='';
//在页面加载时运行默认的ajax
doAjaxCall(假,'home',lang);
//只需在单击“立即”时收听一个元素
$(this).on('click','do action',function(){
//如果正在单击的元素与正在单击的元素相同
//要对其执行.active,只需使用$(this)
doAjaxCall($($(this.data('acton')),$(this.data('page'),lang);
});
});
//使用其他按钮折叠下拉列表
$('.bbutt')。单击(函数(){
$('#collapseOne1')。removeClass('show');
$('#collapseTwo1')。removeClass('show');
});
$(“#工作”)。单击(函数(){
$('#collapseTwo1')。removeClass('show');
});
$(“#工作”)。单击(函数(){
$('#collapseOne1')。removeClass('show');
});
//调试
$(“#控制台调试”).hide();
$('#btn debug')。在(“单击”,函数()上){
$(“#控制台调试”).toggle();
});
触发器html如下所示:

<!-- Add the "do-action" class to everything that you want to fire the ajax -->
<!-- Then you can put the page destination in the data attribute -->
<!-- Using $(this) probably would work in the js but, use the acton data attribute to send the intended object to act on -->
<button id="home" class="do-action" data-acton="#home" data-page="home">Home<button>

<button id="install" class="do-action" data-acton="#install" data-page="install">Install<button>

家
安装
无论如何,通过只创建一个函数,您可以减少复制/粘贴错误的机会,并大大清理JS

最后,由于您将所有类型的html/函数/业务/视图登录混合在一起,因此您可能希望通过检查是否存在来包装PHP函数:

if(!function_exists('pageDivs')) {
    function pageDivs($dbc, $id, $lang)
    {
        $r = mysqli_query($dbc, "SELECT * FROM content WHERE page='$id' AND status = 1");
        while ($data = mysqli_fetch_assoc($r)): ?>

        <div class="content" >
            <?php echo ($lang =='FR')? $data['contentfr'] : $data['contenten'] ?>
        </div>

        <?php endwhile;
    }
}

if(!function_exists('blog')) {
    function blog($dbc, $lang)
    { ?>

        <div class="bgImage homeImg">
            <img src="images/bgs/1566337061.jpg">
        </div>
        <div class="gradient"></div>
        <div class="col-md-12">
            <?php                         
            $r = mysqli_query($dbc, "SELECT * FROM blog  WHERE status = 1 ORDER BY id DESC");
            $i=0;
            while($data = mysqli_fetch_assoc($r)):
                $i++; ?>  
            <div id="post<?php echo $i; ?>" class="post snap">
                <div class="postBox">
                    <article id="article<?php echo $i; ?>" class="article col-md-7">
                        <h3><?php echo $data['titleen'] ?></h3>
                        <?php echo $data['contenten']; ?>
                    </article>
                    <div id="pictureFrameLand<?php echo $i; ?>" class="pictureFrameLand col-md-4">
                        <img src="<?php
                        $q2 = "SELECT * FROM tbl_images WHERE image_id = ".$data['artimage'];
                        $r2 = mysqli_query($dbc, $q2);
                        $src= mysqli_fetch_assoc($r2);
                        echo $src['urlFront']
                        ?>" />
                    </div>
                    <div class="gradientLand col-md-4"></div>
                </div>
            </div>
            <div class="spacer snap"></div>

            <?php endwhile ?>
        </div>

    <?php
    }
}
如果(!function_存在('pageDivs')){
函数pageDivs($dbc,$id,$lang)
{
$r=mysqli_查询($dbc,“从内容中选择*,其中页面=“$id”,状态=1”);
而($data=mysqli\u fetch\u assoc($r)):?>

当您第一次加载页面时,它会进入主页,这很好,但是当您单击其他按钮(bio、work等)时,它会获取这两个按钮的内容,因为每次包含js/home.php时,它都会执行下面的ajax函数以及
$('#other')。单击
。因此,您最终会调用两个ajax

 //Ajax Home Page on load
  $.ajax({
    url: "pages/pages.php",
    cache: false,
    type: 'POST',
    data: dataTosend,
    async: true,
  }).done(function(html) {
    $("#contentCol").append(html);
    $('.content').fadeIn(1000);
  });
在包含页面之前,我建议您添加额外的flag变量,以跳过对主页的ajax调用

}
if ($page !== 'home'){
    pageDivs($dbc, $page, $lang);

} else{
    blog($dbc, $lang);
    $donotloadhome = true;
    include('../js/home.php');
}
在脚本中添加一个变量

var skipflag = '<?php echo ($donotloadhome)?'call':''; ?>';
if(skipflag != 'call')
{
  //Ajax Home Page on load
  $.ajax({
    url: "pages/pages.php",
    cache: false,
    type: 'POST',
    data: dataTosend,
    async: true,
  }).done(function(html) {
    $("#contentCol").append(html);
    $('.content').fadeIn(1000);
  });
}
var skipflag='';
如果(skipflag!=“调用”)
{
//加载时的Ajax主页
$.ajax({
url:“pages/pages.php”,
cache:false,
键入:“POST”,
数据:dataTosend,
async:true,
}).done(函数(html){
$(“#contentCol”).append(html);
$('.content').fadeIn(1000);
});
}
您是否尝试过调试
if(!function_exists('pageDivs')) {
    function pageDivs($dbc, $id, $lang)
    {
        $r = mysqli_query($dbc, "SELECT * FROM content WHERE page='$id' AND status = 1");
        while ($data = mysqli_fetch_assoc($r)): ?>

        <div class="content" >
            <?php echo ($lang =='FR')? $data['contentfr'] : $data['contenten'] ?>
        </div>

        <?php endwhile;
    }
}

if(!function_exists('blog')) {
    function blog($dbc, $lang)
    { ?>

        <div class="bgImage homeImg">
            <img src="images/bgs/1566337061.jpg">
        </div>
        <div class="gradient"></div>
        <div class="col-md-12">
            <?php                         
            $r = mysqli_query($dbc, "SELECT * FROM blog  WHERE status = 1 ORDER BY id DESC");
            $i=0;
            while($data = mysqli_fetch_assoc($r)):
                $i++; ?>  
            <div id="post<?php echo $i; ?>" class="post snap">
                <div class="postBox">
                    <article id="article<?php echo $i; ?>" class="article col-md-7">
                        <h3><?php echo $data['titleen'] ?></h3>
                        <?php echo $data['contenten']; ?>
                    </article>
                    <div id="pictureFrameLand<?php echo $i; ?>" class="pictureFrameLand col-md-4">
                        <img src="<?php
                        $q2 = "SELECT * FROM tbl_images WHERE image_id = ".$data['artimage'];
                        $r2 = mysqli_query($dbc, $q2);
                        $src= mysqli_fetch_assoc($r2);
                        echo $src['urlFront']
                        ?>" />
                    </div>
                    <div class="gradientLand col-md-4"></div>
                </div>
            </div>
            <div class="spacer snap"></div>

            <?php endwhile ?>
        </div>

    <?php
    }
}
 //Ajax Home Page on load
  $.ajax({
    url: "pages/pages.php",
    cache: false,
    type: 'POST',
    data: dataTosend,
    async: true,
  }).done(function(html) {
    $("#contentCol").append(html);
    $('.content').fadeIn(1000);
  });
}
if ($page !== 'home'){
    pageDivs($dbc, $page, $lang);

} else{
    blog($dbc, $lang);
    $donotloadhome = true;
    include('../js/home.php');
}
var skipflag = '<?php echo ($donotloadhome)?'call':''; ?>';
if(skipflag != 'call')
{
  //Ajax Home Page on load
  $.ajax({
    url: "pages/pages.php",
    cache: false,
    type: 'POST',
    data: dataTosend,
    async: true,
  }).done(function(html) {
    $("#contentCol").append(html);
    $('.content').fadeIn(1000);
  });
}