检查是否设置了链接设置的网址


Check if url that is set by link isset

几天来一直在尝试解决这个问题,只是不知道我做错了什么。

在我正在检查的 if 语句中,if $_GET['orderBy']设置了,这是我单击链接时。我还在检查等于 orderBy 的值是否等于数组中的值 $orderBy ,这也是正确的。

但是 if 语句没有被执行,为什么会这样?

echo "<table class='table table-hover table-condensed'>
              <tr>
                  <th></th>
                  <th><a href='?orderBy=service_id'>#</a></th>
                  <th><a href='?orderBy=efternamn'>Efternamn</a></th>
                  <th><a href='?orderBy=fornamn'>Förnamn</a></th>
                  <th><a href='?orderBy=datum'>Datum</a></th>
                  <th><a href='?orderBy=reg_av'>Registrerat av</a></th> 
              </tr>";
$orderBy = array('service_id', 'efternamn', 'fornamn', 'datum' ,'reg_av');
$order = 'datum';
if (isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy)) {
    $order = $_GET['orderBy'];
    echo "Order by ". $order;
}else{
    echo "Order by ". $order;
} 

$query = 'SELECT service.*, kunder.fornamn, kunder.efternamn 
        FROM service_test 
        JOIN kunder ON service.kund_id=kunder.id 
        WHERE service.utford_datum != 0000-00-00
        ORDER BY '.$order;
$result = $connect->query($query);
mysqli_close($connect); 
if(mysqli_num_rows($result) == 0){
    echo"No posts found";
}else{ 
    while($result_rs=mysqli_fetch_assoc($result)){
        echo "<tr>
                <td>
                    <form action='service_open.php' method='GET'>
                        <input type='hidden' name='vill_editera_service' value='1'>
                        <input type='hidden' name='service_id' value='" . $result_rs['service_id'] . "'>
                        <input type='hidden' name='kund_id' value='" . $result_rs['kund_id'] . "'>
                        <input type='submit' class='btn btn-danger btn-sm' value='Öppna'>
                    </form>
                </td>
                <td>" . $result_rs['service_id'] . "</td>
                <td>" . $result_rs['efternamn'] . "</td> 
                <td>" . $result_rs['fornamn'] . "</td>
                <td>" . $result_rs['datum'] . "</td> 
                <td>" . $result_rs['reg_av'] . "</td>
            </tr>";
    }
    echo "</table> 'n";
}

编辑:还通过运行以下代码进行测试:

$testing = $_GET['orderBy'];
echo $testing;'

但它也不起作用。我收到错误消息:注意:未定义的索引:

orderBy in /Applications/XAMPP/xamppfiles/htdocs/VP-projekt/include/inc.servicelist.php on line 17

问题可能出在XAMPP内部吗?

编辑#2:这是 html 代码

<?php
include_once 'includes/db_connect.php';
include_once 'includes/functions.php';
sec_session_start(); ?>
<!DOCTYPE html>
<head>
<link rel="stylesheet" href="css/bootstrap.css" type="text/css" />
<link rel="stylesheet" href="css/my_css.css" type="text/css" />
<script type="text/javascript" src="js/jquery-1.11.3.min.js"> </script>
<script type="text/javascript" src="js/jquery.tablesorter.min.js"></script> 
 <script type="text/javascript" src="js/bootstrap.js"> </script>
<script type="text/javascript">
$(document).ready(function() {
    $.ajax({    //create an ajax request to load_page.php
        type: "GET",
        url: "include/inc.servicelist.php",             
        dataType: "html",   //expect html to be returned                
        success: function(response){                    
            $("#pagaende").html(response); 
            //alert(response);
        }
    });
    $.ajax({    //create an ajax request to load_page.php
        type: "GET",
        url: "include/inc.garantiservice.php",             
        dataType: "html",   //expect html to be returned                
        success: function(response){                    
            $("#garanti").html(response); 
            //alert(response);
        }
    });
 $('#myTabs a:first').tab('show');
    $("#sortedtable").tablesorter({ sortlist: [0,0] });
});
</script>
</head>
<body>
<?php if (login_check($mysqli) == true) : ?>
<?php include("include/inc.menu.php") ?>
<div class="row">
    <h1 class="text-center">Pågående arbetsordrar</h1>
</div> <!-- row -->

<div id="myTabs" class="col-md-6 col-md-offset-3">
<ul class="nav nav-tabs" role="tablist">
<li role="presentation"><a href="#bokade" aria-controls="home" role="tab" data-toggle="tab">Bokade</a></li>
<li role="presentation"><a href="#garanti" aria-controls="profile" role="tab" data-toggle="tab">Garanti</a></li>
</ul>

<div class="tab-content">
<div role="tabpanel" class="tab-pane" id="bokade">
    <div id="pagaende" align="center"></div>
</div>
<div role="tabpanel" class="tab-pane" id="garanti"></div>
    <div id="garanti" align="center"></div>
</div>
</div>
<?php else : ?>
    <p>
        <span class="error">You are not authorized to access this page.         </span> Please <a href="index.php">login</a>.
    </p>
<?php endif; ?>
</body>
</html>

你不能只用

$order = isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy) ? $_GET['orderBy'] : 'datum';
echo "Order by ". $order;

我怀疑你的in_array()条件是错误的。确保返回的值为 true

此外,在设置完 $order 的值后,请尝试echo table

我像这样复制了你的数据库和代码:

<?
echo "<table class='table table-hover table-condensed'>
          <tr>
              <th></th>
              <th><a href='?orderBy=service_id'>#</a></th>
              <th><a href='?orderBy=efternamn'>Efternamn</a></th>
              <th><a href='?orderBy=fornamn'>Förnamn</a></th>
              <th><a href='?orderBy=datum'>Datum</a></th>
              <th><a href='?orderBy=reg_av'>Registrerat av</a></th> 
          </tr>";
$orderBy = array('service_id', 'efternamn', 'fornamn', 'datum' ,'reg_av');
$order = 'datum';
if (isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy)) {
    $order = $_GET['orderBy'];
    echo "Order by ". $order;
}else{
    echo "Order by ". $order;
} 

$query = 'SELECT service.*, kunder.fornamn, kunder.efternamn 
    FROM service 
    JOIN kunder ON service.kund_id=kunder.id 
    WHERE service.datum != 0000-00-00
    ORDER BY '.$order;
echo '<br>'.$query.'<br>';
$connect = mysqli_connect("localhost", "myuser", "mypass", "basteldb");
if ($connect->connect_errno) {
    printf("Connect failed: %s'n", $connect->connect_error);
    exit();
}
$result = $connect->query($query);
if (!$result) {echo "DB error";}
if(mysqli_num_rows($result) == 0){
    echo"No posts found";
}else{ 
    while($result_rs=mysqli_fetch_assoc($result)){
    echo "<tr>
            <td>
                <form action='service_open.php' method='GET'>
                    <input type='hidden' name='vill_editera_service' value='1'>
                    <input type='hidden' name='service_id' value='" . $result_rs['service_id'] . "'>
                    <input type='hidden' name='kund_id' value='" . $result_rs['kund_id'] . "'>
                    <input type='submit' class='btn btn-danger btn-sm' value='Öppna'>
                </form>
            </td>
            <td>" . $result_rs['service_id'] . "</td>
            <td>" . $result_rs['efternamn'] . "</td> 
            <td>" . $result_rs['fornamn'] . "</td>
            <td>" . $result_rs['datum'] . "</td> 
            <td>" . $result_rs['reg_av'] . "</td>
        </tr>";
    }
    echo "</table> 'n";
}
mysqli_close($connect); 
?>

它有效...(将表名更改为服务,将基准列名称更改为基准面并添加了一些检查)