首先我想说我对 PHP 和 MySQL 绝对是新手。
进行几次循环后1 x While循环(用于从数据库获取数据)和2x for循环用于根据数据库加载中的“级别”创建动态链接特定页面开始变慢。我在本地主机上使用 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 本地主机错误 + for 循环的组合非常慢)
最佳答案
<?php
for ($i=0; $io <= $_SESSION['level'] ; $i++) {
if(isset(${"level$i"})){
echo ${"level$i"};
}
} ?>
$io <= $_SESSION['level'] 似乎存在错误。我认为应该是 $i <= $_SESSION['level']
编辑 感谢帮助。还发现 IF 语句在那里没有用。
我认为循环和控制语句的使用或操作是错误的。尝试优化您的代码,它应该使加载速度更快
关于PHP 1x while 2x for 循环极大地减慢了加载速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47983772/