0

ユーザー用に 2 つのテーブルがあります。ログイン テーブルとユーザー プロファイル テーブル。

「userprofiletable」の値を、posts という別のテーブルの別の値と比較したいと考えています。値が等しい場合、リストを表示します。

次のコードがあります。問題は、投稿テーブルの値をユーザー プロファイル テーブルのセッションの値と比較していないことです。

誰か助けてくれませんか?

<?php
$limit = '5';
$dbreq = 'SELECT * FROM `posts` ORDER BY `pos` DESC';
$dbdata = mysql_query($dbreq);
while($dbval = mysql_fetch_array($dbdata))
{
  if (($dbval['city'] == $_SESSION['student_city'])) { //checks for last 4 accomodation
    if ($limit >= '1') {
      echo '<tr><td><a href="acomod.php?view='.$dbval['id'].'">'.$dbval['title'].'</a></td></tr>';
      $limit = $limit -'1';
    }
  }
}
?>

また、userprofiletable の値を取得して、posts テーブルに投稿したいと考えています。たとえば、誰かが新しい投稿を作成したとき。

4

2 に答える 2

0

あなたの投稿は少し不明確ですが、私はこれがあなたが望むものだと思います:

<?php
$userid = 11542;//Sample uid. You will have to figure this out and set it.
$limit = 5;
$dbreq = "SELECT * FROM `posts` WHERE `userid`=".$userid." ORDER BY `pos` DESC LIMIT=".$limit.";";
$dbdata = mysql_query($dbreq);
while($dbval = mysql_fetch_array($dbdata))
{
  if (($dbval['city'] == $_SESSION['student_city'])) { //checks for last 4 accomodation
    echo '<tr><td><a href="acomod.php?view='.$dbval['id'].'">'.$dbval['title'].'</a></td></tr>';
  }
}
?>
于 2012-05-01T00:56:03.253 に答える
0

質問は明確ではありませんが、2つの答えがある可能性があります。

コードを再現するには、1つのSQLクエリで実行できます。

$dbreq = 'SELECT *
FROM `posts`
WHERE city="'.mysql_real_escape_string($_SESSION['student_city']).'"
ORDER BY `pos` DESC
LIMIT 4'; 

ただし、テーブルが2つある場合は、postsテーブルをuserprofileテーブルにリンクする「LEFTJOIN」が必要です。

$dbreq = 'SELECT p.*, u.*
FROM posts p
LEFT JOIN userprofiletable up ON p.UserID=up.UserID
WHERE up.city="'.mysql_real_escape_string($_SESSION['student_city']).'"
ORDER BY p.pos DESC
LIMIT 4';

(上の表のUserIDは、posts表と2つをリンクするuserprofiletableのフィールドの名前です。)

于 2012-05-01T01:02:36.940 に答える