PHP变量内部函数,使用外部函数

PHP变量内部函数,使用外部函数,php,mysql,function,Php,Mysql,Function,我有一个可能很简单的问题,我似乎无法开始工作 我有3个不同的照片库页面的网站。每个图库都有一排带有图片的缩略图。 单击其中一张图片将使其显示在新页面中,图像将被放大。 发生这种情况时,您将从类别1或2或3移动到fotoinfo 1.php 2或3,具体取决于您单击的照片所属的类别 fotoinfo页面具有费率/注释系统。现在我要做的是,让我能够对每一张图片进行评级,无论是哪一类。只有一个rate.php文件连接到所有3个fotoinfo.php页面。(根据POST/按钮,它还保存数据库中给出的比

我有一个可能很简单的问题,我似乎无法开始工作

我有3个不同的照片库页面的网站。每个图库都有一排带有图片的缩略图。 单击其中一张图片将使其显示在新页面中,图像将被放大。 发生这种情况时,您将从类别1或2或3移动到fotoinfo 1.php 2或3,具体取决于您单击的照片所属的类别

fotoinfo页面具有费率/注释系统。现在我要做的是,让我能够对每一张图片进行评级,无论是哪一类。只有一个rate.php文件连接到所有3个fotoinfo.php页面。(根据POST/按钮,它还保存数据库中给出的比率/等级)

我已经做了一个函数来选择评级以及它应该在哪个数据库中(评级1、2、3) 现在,我想在为网站评级后刷新图片,从而更新avarage grade/rate文本。 但不知何故,我无法修复它,使其重新指向正确的图片。我曾尝试使用if语句和其他几种方法来实现这一点,但最终我要么总是转到第一个fotoinfo.page,要么永远不会转到当前所在的页面

代码如下:

session_start();
$foto_ID = $_POST['foto_ID'];
$rating = $_POST['rating'];
$category = $_POST['category'];
$gebruikersnaam = $_SESSION['gebruikersnaam']; 
function rates($rate, $gebruikersnaam, $foto_ID, $rating)
{   
    global $conn;
    $query = "INSERT INTO `i268296_studie`.`$rate`(`username_ID`,`foto_ID`,`rating`) VALUES ('$gebruikersnaam','$foto_ID','$rating')";
    $result = mysqli_query($conn, $query) or die("query error " . mysqli_error($conn) );
    return $rate;
}

if (basename(__FILE__) == "rating.php")
{
    rates("Rating", $gebruikersnaam, $foto_ID, $rating);
    $rate = "Rating";
}

if (basename(__FILE__) == "rating.php")
{
    rates("Rating2", $gebruikersnaam, $foto_ID, $rating);
    $rate = "Rating2";      
}

if (basename(__FILE__) == "rating.php")
{
    $rate = rates("Rating3", $gebruikersnaam, $foto_ID, $rating);
    $rate = "Rating3";
}

    if ($rate == "Rating")
    {
        header("Location: fotoinfo.php?foto_ID=" . $foto_ID); 
    }

    if ($rate == "Rating2")
    {
        header("Location: fotoinfo2.php?foto_ID=" . $foto_ID); 
    }

    if ($rate == "Rating3")
    {
        header("Location: fotoinfo3.php?foto_ID=" . $foto_ID); 
    }
在if语句的第一行中,我试图检查我是否在fotoinfo 1、2或3上。然后添加/重定向。但是,当我点击我的rate按钮时,我不再在fotopinfo页面上,而是在这个rating.php(标题(“位置”)中,这样在评级之后,我就回到了原始图片。然后,我添加了第二个if语句(顶部的$rate和函数中的global/return$rate)希望这能解决问题,因为我会阻止我在所有3个标题重定向上使用rating.php。因为我想检查在查询中对$rate做出了什么选择,并基于该结果(评级1、2或3)重定向到fotoInfo 1、2或3。但它似乎不起作用。我要么没有在函数内外正确调用或使用变量,要么……我的整个思维方式都是错误的

我希望我能正确地解释我的问题,我是新来的,所以如果有什么我可以改变的来帮助你们,帮助我更好,不要害怕告诉我:)

编辑: 与来自fotoinfo.php页面的评级相关的代码

$query=“从`rating`中选择格式(平均(`rating`),2)作为`rating',其中`foto\u ID`='$foto\u ID'”;
$result=mysqli_query($conn,$query)或die(“查询错误”。mysqli_error($conn));
$rating=mysqli\u fetch\u assoc($result)//获取数据库结果

我将使用ajax编写此代码以保存数据库更新,然后使用jquery更新图像的新分数。这使页面具有快速更新的外观和感觉。但是也就是说,你能不能在每个页面中添加一个带有评级值的隐藏输入,并将其作为$_post['rating_page']发布到服务器上,然后在完成后再去那里?@morgunder我有点被PHP卡住了,如果我能将其放入函数中,那就更好了。我已经用我在fotoinfo.php mgith clear things-up bit中使用的与评级相关的代码更新了主代码。jquery调用了ajax。但我明白。你可以添加@morgunder吗?我当然可以,但是这与已经存在的代码有什么不同,而不是类别foto_ID?我注意到你所有的文件比较都是与rating.php进行的,所以可能就是这样?
$query = "SELECT FORMAT(AVG(`rating`),2) AS 'rating' FROM `Rating` WHERE `foto_ID` = '$foto_ID' "; 
    $result = mysqli_query($conn, $query) or die("query error " . mysqli_error($conn) );
    $rating = mysqli_fetch_assoc($result); //get database result

            <form method="post" action="rating.php"  enctype="multipart/form-data">
                <input type="hidden" name="foto_ID" value="<?php echo $foto['foto_ID']; ?>">
                <label for="rating"> Grade this picture!: </label>
                <input type="radio" name="rating" value="1">1
                <input type="radio" name="rating" value="2">2
                <input type="radio" name="rating" value="3">3
                <input type="radio" name="rating" value="4">4
                <input type="radio" name="rating" value="5">5
                <br><br>
                <input type="submit" name="submit" value="Submit grade!">
                <br><br>
                Avarage grade: <?php echo $rating['rating']; ?>
            </form>