一开始我想说我是PHP和MySQL的新手。
进行少量循环 1 x While循环(用于从数据库获取数据)和 2x for循环用于根据数据库加载中的“级别”创建动态链接特定页面开始变慢。我在localhost上使用MAMP。
试图找到一些修复(首先认为MAMP有问题),但现在我不知道2x for循环对于页面来说是不是太重了。当我删除两个FOR LOOPS问题时消失。
可能是因为MAMP(它会在线运行)或者它真的很重,有人看到任何会减慢页面速度的东西吗?
感谢您的帮助
<?php
session_start();
require('connect.php');
$level1 = "<p class='text-center mt-5' style='font-size:8vh'>Bez přihlášení do této sekce nemáte přístup</p>";
if (isset($_SESSION['username'])){
$username = $_SESSION['username'];
$logmsg = "<p class='logged-in'>Jste přihlášen jako <b>$username</b>. <a href='process/logout.php'>Odhlásit se</a></p>";
$level1 = "<p class='level'><a href='levels/level1.php'>Level1</a></p>";
$query = "SELECT * FROM user WHERE username='$username'";
$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
$_SESSION['level'] = $row["level"];
}
}
for ($i = 0 ; $i <= $_SESSION['level'] ; $i++) {
${"level$i"} = "<p class='level-size'><a href='levels/level$i.php'>Hádanka $i</a></p>";
}
}
?>
<html>
<head>
<meta charset="UTF-8">
<title>Úvod</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="/style.css">
<link href="https://fonts.googleapis.com/css?family=Patrick+Hand+SC&subset=latin-ext" rel="stylesheet">
<style type="text/css">
label,small,button div {
font-size: 2.5vh
}
</style>
</head>
<body class="second-page-body">
<?php if(isset($logmsg)){ ?><div class="text-right"> <?php echo $logmsg; ?> </div><?php } ?>
<div class="container">
<h1 class="text-center p-5"><strong>Willkommen</strong></h1>
<div class="level-container">
<?php for ($i=0; $io <= $_SESSION['level'] ; $i++) {
if(isset(${"level$i"})){
echo ${"level$i"};
}
} ?>
</div>
</div>
</body>
修改 测试了一些网站,看起来问题有时也会发生在其他网站上。 (也许MAMP localhost错误+ for循环的组合非常慢)
答案 0 :(得分:2)
<?php
for ($i=0; $io <= $_SESSION['level'] ; $i++) {
if(isset(${"level$i"})){
echo ${"level$i"};
}
} ?>
$ io&lt; = $ _SESSION [&#39; level&#39;] 似乎有误。我认为应该是 $ i&lt; = $ _SESSION [&#39; level&#39;]
修改强> 感谢帮助。还发现IF语句在那里没用。
我认为循环和控制语句的使用或操作是错误的。尝试优化代码,它应该加快加载