Я пытаюсь создать страницу для профилей пользователей, но у меня возникают трудности.
Я не хочу создавать профиль для пользователя, только что вошедшего в систему, но постоянные профили пользователей, где вы можете затем просмотреть их все.
тип: profile.php? id = 1
Я использую UserPie, который можно найти на github.
На самом деле моя страница profile.php это:
<?php require_once("models/config.php");
$id = $_GET['id']);
if (empty($_GET['id'])){
header("Location: index.php");
die();
}
$sql = "SELECT * FROM users WHERE user_id != '$id'";
$result = mysqli_query($db, $sql) or die(mysqli_error($db));
while($rws = mysqli_fetch_array($result)){
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo $rws["username"]; ?> - <?php echo $websiteName; ?></title>
<?php require_once("head_inc.php"); ?>
</head>
<body>
<?php require_once("navbar.php"); ?>
<?php if (is_null($sql)): ?>
<h3 class="page-header">ERROR</h3>
User not found!
<?php else: ?>
<h1>Welcome</h1>
<p>ID: <?php echo $rws['user_id']; ?></p>
<p>Welcome to your account page <strong><?php echo $rws['username']; ?></strong></p>
<p>You joined on <?php echo date("l \\t\h\e jS Y", $rws['sign_up_date']); ?> </p>
<?php endif; ?>
<?php } ?>
Я не могу заставить это работать.
Есть ли у вас предложения?
Я решил таким образом:
$sql = "SELECT * FROM users WHERE user_id = '$id'";
$result = $db->sql_query($sql);
while($rws = mysqli_fetch_array($result)){
$sql = "SELECT * FROM users WHERE user_id != '$id'";
$result = mysqli_query($db, $sql) or die(mysqli_error($db));
Так как вы ожидаете только 1 ответ, вы можете просто получить 1 результат, а не проходить через них. $result
ложь при сбое запроса. Результатом является MysqliResult
объект, который имеет num_rows
переменная-член, в которой указывается количество результатов.
if ($result && $result->num_rows > 0) {
$rws = mysqli_fetch_array($result);
// Output template/html here
} else {
// ERROR could not find
}
Дополнительно $sql = "SELECT * FROM users WHERE user_id != '$id'";
можно использовать с SQL-инъекцией. Чтобы избежать этого, используйте подготовленные заявления в mysqli
Подготовленные заявления — PHP.net
Других решений пока нет …