Php 如何使用另一个函数中的数据库数据调用函数?

Php 如何使用另一个函数中的数据库数据调用函数?,php,jquery,mysql,function,Php,Jquery,Mysql,Function,编辑:在AJ中士的帮助下使用新代码 好的,所以我一直在学习,但自从我的程序员停止为我们的网站编码以来,我现在必须自己完全学习PHP 我一直看到我的程序员在其他函数调用中进行函数调用的编码 首先,我们有一个文件,里面有95%的功能。这个函数文件中基本上有40-50个函数 所以我想问,是否有人可以向我解释,在下面的实例中,调用另一个函数内部的函数是如何可能的,但当我尝试复制它时,它不起作用?尝试回显$user\u info时不显示任何数据 比如下面这个函数:所以AJ中士帮我解决了用户头像问题,所以这

编辑:在AJ中士的帮助下使用新代码

好的,所以我一直在学习,但自从我的程序员停止为我们的网站编码以来,我现在必须自己完全学习PHP

我一直看到我的程序员在其他函数调用中进行函数调用的编码

首先,我们有一个文件,里面有95%的功能。这个函数文件中基本上有40-50个函数

所以我想问,是否有人可以向我解释,在下面的实例中,调用另一个函数内部的函数是如何可能的,但当我尝试复制它时,它不起作用?尝试回显
$user\u info
时不显示任何数据

比如下面这个函数:所以AJ中士帮我解决了用户头像问题,所以这个问题将被删除

function showComments($v)
    {
        $mysqli = db_connect();
        $v = mysqli_real_escape_string($mysqli,$v);
        $sql = "SELECT * FROM `cl45-tbn_dir`.`comments` WHERE `v` = ? ORDER BY `id` ASC";
        $stmt = $mysqli->prepare($sql);
        $stmt->bind_param("s",$v);
        $stmt->execute();
        $result = $stmt->get_result();

        while ($myrow = $result->fetch_assoc()) {
            if ($myrow['post_approved']==1){
                $user_info = getUserInfo($myrow['poster_id']);

                if ($user_info['user_avatar_type']==1) {
                    $avatar = "https://www.tubenations.com/forum/download/file.php?avatar=".$user_info['user_avatar'];
                } else {
                    $avatar = "https://www.tubenations.com/forum/styles/Flato%20-%20LightBlue%20-%20Main%20Style/theme/images/no_avatar.gif";
                }

                echo '<div class="comment">
                    <div class="avatar">
                        <a href="https://www.tubenations.com/users.php?id='.$myrow['poster_id'].'">
                            <img src="'.$avatar.'" />
                    </div>

                    <div class="name"><a class ="myaccount'.$user_info['group_id'].'" href="https://www.tubenations.com/users.php?id='.$myrow['poster_id'].'">'.$user_info['username'].'</a></div>
                    <div class="date" title="report this post">'.date("d M Y",$myrow['post_time']).'<form action="" class="flag" method="post"><button type="submit" value="'.$myrow['id'].'" name="vote" id="votebutton" alt="vote"><img src="/images/flag.png" alt="report this post!" /></button></form></div>
                    <p>'.stripslashesFull(clean($myrow['post_text'])).'</p>
                </div>';
            }
        }

        $stmt->close();
        $mysqli->close();
    }
因此,基本上在讨论的页面中,
youtube.php
,我只是重复这个
getYouTubeInfo
函数

此功能我需要尝试从
getUserInfo($id)
获取论坛数据库中的用户配置文件图片

另一方面,我也不知道如何重新排列
$I
$objectsPerPage
变量和if语句,以便在查询
限制$page中使用
$page
因为目前页面崩溃没有限制,所以我现在不得不将限制设置为16

我使用jQuery幻灯片脚本在每张幻灯片上显示X,因此,如果我能设法解决如何在变量和if语句之后进一步查询页面内容或获得任何帮助,我将不胜感激


编辑更新后的回复:现在的问题是,它现在每页幻灯片显示X,但当它显示10个结果时,在显示8个结果后,它现在显示一个间隙,但有间隙,然后在下一张幻灯片上,按钮没有显示?所以AJ中士说我们需要以某种方式将它连接到jquery?,所以我现在将为jquery添加一个标记。(但我可以对AJ中士的帮助说一声非常感谢吗,真的很感激):

哇,这里发生了几件事

首先,您现在的查询显示
limit0,这意味着您应该返回零行。您是否正在从此查询返回数据

其次,要使页面和每页项目正常工作,您可以执行以下操作:

  • 在循环中,保持
    i=i+1
  • 如果出现以下情况,请添加此项:
  • if($i==$objectsPerPage)

    {

    +$page;

    i=1;

    }


    这将在页面已满时增加页面计数器,然后重置下一页的项目计数。

    我只是想为我的问题添加更多内容,我想现在的答案是使用AJAX,因此我想我需要以某种方式使cslide jquery代码调用
    getYoutubeInfo($page)
    函数

    cslide的jquery代码如下:

    (function($) {
    
        $.fn.cslide = function() {
    
            this.each(function() {
    
                var slidesContainerId = "#"+($(this).attr("id"));
    
                var len = $(slidesContainerId+" .cslide-slide").size();     // get number of slides
                var slidesContainerWidth = len*100+"%";                     // get width of the slide container
                var slideWidth = (100/len)+"%";                             // get width of the slides
    
                // set slide container width
                $(slidesContainerId+" .cslide-slides-container").css({
                    width : slidesContainerWidth,
                    visibility : "visible"
                });
    
                // set slide width
                $(".cslide-slide").css({
                    width : slideWidth
                });
    
                // add correct classes to first and last slide
                $(slidesContainerId+" .cslide-slides-container .cslide-slide").last().addClass("cslide-last");
                $(slidesContainerId+" .cslide-slides-container .cslide-slide").first().addClass("cslide-first cslide-active");
    
                // initially disable the previous arrow cuz we start on the first slide
                $(slidesContainerId+" .cslide-prev").addClass("cslide-disabled");
    
                // if first slide is last slide, hide the prev-next navigation
                if (!$(slidesContainerId+" .cslide-slide.cslide-active.cslide-first").hasClass("cslide-last")) {           
                    $(slidesContainerId+" .cslide-prev-next").css({
                        display : "block"
                    });
                }
    
                // handle the next clicking functionality
                $(slidesContainerId+" .cslide-next").click(function(){
                    var i = $(slidesContainerId+" .cslide-slide.cslide-active").index();
                    var n = i+1;
                    var slideLeft = "-"+n*100+"%";
                    if (!$(slidesContainerId+" .cslide-slide.cslide-active").hasClass("cslide-last")) {
                        $(slidesContainerId+" .cslide-slide.cslide-active").removeClass("cslide-active").next(".cslide-slide").addClass("cslide-active");
                        $(slidesContainerId+" .cslide-slides-container").animate({
                            marginLeft : slideLeft
                        },250);
                        if ($(slidesContainerId+" .cslide-slide.cslide-active").hasClass("cslide-last")) {
                            $(slidesContainerId+" .cslide-next").addClass("cslide-disabled");
                        }
                    }
                    if ((!$(slidesContainerId+" .cslide-slide.cslide-active").hasClass("cslide-first")) && $(".cslide-prev").hasClass("cslide-disabled")) {
                        $(slidesContainerId+" .cslide-prev").removeClass("cslide-disabled");
                    }
                });
    
                // handle the prev clicking functionality
                $(slidesContainerId+" .cslide-prev").click(function(){
                    var i = $(slidesContainerId+" .cslide-slide.cslide-active").index();
                    var n = i-1;
                    var slideRight = "-"+n*100+"%";
                    if (!$(slidesContainerId+" .cslide-slide.cslide-active").hasClass("cslide-first")) {
                        $(slidesContainerId+" .cslide-slide.cslide-active").removeClass("cslide-active").prev(".cslide-slide").addClass("cslide-active");
                        $(slidesContainerId+" .cslide-slides-container").animate({
                            marginLeft : slideRight
                        },250);
                        if ($(slidesContainerId+" .cslide-slide.cslide-active").hasClass("cslide-first")) {
                            $(slidesContainerId+" .cslide-prev").addClass("cslide-disabled");
                        }
                    }
                    if ((!$(slidesContainerId+" .cslide-slide.cslide-active").hasClass("cslide-last")) && $(".cslide-next").hasClass("cslide-disabled")) {
                        $(slidesContainerId+" .cslide-next").removeClass("cslide-disabled");
                    }
                });
    
    
    
            });
    
            // return this for chainability
            return this;
    
        }
    
    }(jQuery));
    

    我还调整了AJ中士再次帮助我的代码,在右括号前添加了一个
    session\u destroy()
    。还有其他一些,因为我注意到当你一遍又一遍地刷新页面时,它只是加载了接下来的14个结果,而不是相同的前14个结果,所以实际的代码和逻辑似乎在工作。因此,现在主要是我们需要找到一种使用AJAX的方法,并从下一个/上一个按钮的onclick事件中调用函数。

    BTW,有人能告诉我为什么有时候页面拒绝显示代码块,迫使我这样重新格式化吗?好的,但首先我可以回答为什么我在
    限制0中输入0这是为了在我试图找出无法显示和使用
    getUserInfo($id)
    函数中的数据的原因时,阻止页面继续对youtube进行外部调用。我将用新的if语句尝试您所说的,但是这会停止加载整个数据吗?因为这就是为什么页面现在崩溃的原因,因为它试图向youtube请求超过300个用户的数据lol。你在哪里更改$user\u info变量?在我看来,它会根据我看到的代码不断请求同一用户的信息。撇开这个问题不谈,如果您将查询设置为
    限制1
    ,那么出于测试目的,一次只能从查询中请求1个用户的数据。(除非从其他地方重复调用此函数)顺便说一句,循环计数器通常在循环开始之前设置为1或0,然后在循环结束时递增,而不是将其设置为-1并在循环开始时递增。在本例中,我将其设置为1,并在循环结束时递增。否则,您每页将比$itemsPerPage变量多发送一个项目。是的,但这不是我的问题,我知道
    限制是用于什么,我知道我可以将其设置为1,但我选择将其设置为0,因为在我尝试解决此崩溃问题之前,我正在尝试从其他函数获取数据。顺便说一句,昨天我想说一些关于这方面的事情:对于一个实时站点来说,
    if(!$db_link){die('following error occurrent:'.mysqli_error());}
    这一行是非常糟糕的编程实践。如果有人在查看页面时发生错误,该错误将向不应该拥有代码和/或数据库架构的用户公开可能存在危险的信息。您应该向用户显示一个一般错误,并将实际错误记录在某个地方,以便稍后查找。好的,是的,只有我制作的一些函数是这样完成的,函数文件中的大多数函数通常都是准备好的语句。另外@Sgt AJ,我注意到发生了一些奇怪的事情,如果你读了我发布的新answser帖子,里面有详细信息:)
    (function($) {
    
        $.fn.cslide = function() {
    
            this.each(function() {
    
                var slidesContainerId = "#"+($(this).attr("id"));
    
                var len = $(slidesContainerId+" .cslide-slide").size();     // get number of slides
                var slidesContainerWidth = len*100+"%";                     // get width of the slide container
                var slideWidth = (100/len)+"%";                             // get width of the slides
    
                // set slide container width
                $(slidesContainerId+" .cslide-slides-container").css({
                    width : slidesContainerWidth,
                    visibility : "visible"
                });
    
                // set slide width
                $(".cslide-slide").css({
                    width : slideWidth
                });
    
                // add correct classes to first and last slide
                $(slidesContainerId+" .cslide-slides-container .cslide-slide").last().addClass("cslide-last");
                $(slidesContainerId+" .cslide-slides-container .cslide-slide").first().addClass("cslide-first cslide-active");
    
                // initially disable the previous arrow cuz we start on the first slide
                $(slidesContainerId+" .cslide-prev").addClass("cslide-disabled");
    
                // if first slide is last slide, hide the prev-next navigation
                if (!$(slidesContainerId+" .cslide-slide.cslide-active.cslide-first").hasClass("cslide-last")) {           
                    $(slidesContainerId+" .cslide-prev-next").css({
                        display : "block"
                    });
                }
    
                // handle the next clicking functionality
                $(slidesContainerId+" .cslide-next").click(function(){
                    var i = $(slidesContainerId+" .cslide-slide.cslide-active").index();
                    var n = i+1;
                    var slideLeft = "-"+n*100+"%";
                    if (!$(slidesContainerId+" .cslide-slide.cslide-active").hasClass("cslide-last")) {
                        $(slidesContainerId+" .cslide-slide.cslide-active").removeClass("cslide-active").next(".cslide-slide").addClass("cslide-active");
                        $(slidesContainerId+" .cslide-slides-container").animate({
                            marginLeft : slideLeft
                        },250);
                        if ($(slidesContainerId+" .cslide-slide.cslide-active").hasClass("cslide-last")) {
                            $(slidesContainerId+" .cslide-next").addClass("cslide-disabled");
                        }
                    }
                    if ((!$(slidesContainerId+" .cslide-slide.cslide-active").hasClass("cslide-first")) && $(".cslide-prev").hasClass("cslide-disabled")) {
                        $(slidesContainerId+" .cslide-prev").removeClass("cslide-disabled");
                    }
                });
    
                // handle the prev clicking functionality
                $(slidesContainerId+" .cslide-prev").click(function(){
                    var i = $(slidesContainerId+" .cslide-slide.cslide-active").index();
                    var n = i-1;
                    var slideRight = "-"+n*100+"%";
                    if (!$(slidesContainerId+" .cslide-slide.cslide-active").hasClass("cslide-first")) {
                        $(slidesContainerId+" .cslide-slide.cslide-active").removeClass("cslide-active").prev(".cslide-slide").addClass("cslide-active");
                        $(slidesContainerId+" .cslide-slides-container").animate({
                            marginLeft : slideRight
                        },250);
                        if ($(slidesContainerId+" .cslide-slide.cslide-active").hasClass("cslide-first")) {
                            $(slidesContainerId+" .cslide-prev").addClass("cslide-disabled");
                        }
                    }
                    if ((!$(slidesContainerId+" .cslide-slide.cslide-active").hasClass("cslide-last")) && $(".cslide-next").hasClass("cslide-disabled")) {
                        $(slidesContainerId+" .cslide-next").removeClass("cslide-disabled");
                    }
                });
    
    
    
            });
    
            // return this for chainability
            return this;
    
        }
    
    }(jQuery));