2011-01-11 7 views
0

ログインしたユーザが記入フォームを記入した会員専用ウェブサイトを持っています。'ltd_sales_list'というカラムには、ログインしているユーザを選択するためのSELECTクエリ

ltd_item_id | ltd_user_id | ltd_invoice_no | ltd_entry_amount |各新規エントリそれらは入力の ltd_entry_date

IDにおけるそのセッションログを「ltd_user_id」に記録されている間、新たなID /主キーは、行ごとに(「ltd_item_id」)が生成されます'ltd_entry_date'はタイムスタンプです。エントリーフォームのページはうまくいきますが、エントリーデータを見ると問題が発生しています。

view-list.phpというコードをまとめましたが、これはすべてのユーザーのエントリリストを呼び出します。私がしようとしているのはのにログインしたユーザのエントリリストだけです。

回答はどこかのクエリ内にあり、ltd_user_id = $ _SESSION ['ltd_user_id']などのWHERE文を試してみましたが、これは成功しませんでした。

誰かが助けてくれたり、私がいくつかのリンクを教えてくれたら、大いに感謝します。

<?php 

require_once ('./includes/config.inc.php'); 

$page_title = 'Page Title'; 
include ('./includes/header.html'); 

if (!isset($_SESSION['ltd_user_id'])) { 

    $url = 'http://' . $_SERVER['HTTP_HOST'] 
    . dirname($_SERVER['PHP_SELF']); 

    if ((substr($url, -1) == '/') OR (substr($url, -1) == '\\')) { 
     $url = substr ($url, 0, -1); 
    } 

    $url .= '/login.php'; 
ob_end_clean(); 
header("Location: $url"); 
exit(); 
} 
?> 

<div id="">HTML Content HERE</div> 

<?php 

echo '<h1>My Entry Log</h1>'; 

require_once ('/server/database_connection.php'); // Connect to the db. 

$display = 10; 

if (isset($_GET['np'])) { 
    $num_pages = $_GET['np']; 
} else { 

    $query = "SELECT COUNT(*) FROM ltd_sales_list ORDER BY ltd_entry_date DESC"; 
    $result = @mysql_query ($query); 
    $row = mysql_fetch_array ($result, MYSQL_NUM); 
    $num_records = $row[0]; 

    if ($num_records > $display) { 
     $num_pages = ceil ($num_records/$display); 
    } else { 
     $num_pages = 1; 
    } 
} 

if (isset($_GET['s'])) { 
    $start = $_GET['s']; 
} else { 
    $start = 0; 
} 

$link1 = "{$_SERVER['PHP_SELF']}?sort=lna"; 
$link2 = "{$_SERVER['PHP_SELF']}?sort=fna"; 
$link3 = "{$_SERVER['PHP_SELF']}?sort=dra"; 

if (isset($_GET['sort'])) { 

    switch ($_GET['sort']) { 
     case 'lna': 
      $order_by = 'ltd_invoice_no ASC'; 
      $link1 = "{$_SERVER['PHP_SELF']}?sort=lnd"; 
      break; 
     case 'lnd': 
      $order_by = 'ltd_invoice_no DESC'; 
      $link1 = "{$_SERVER['PHP_SELF']}?sort=lna"; 
      break; 
     case 'fna': 
      $order_by = 'ltd_entry_amount ASC'; 
      $link2 = "{$_SERVER['PHP_SELF']}?sort=fnd"; 
      break; 
     case 'fnd': 
      $order_by = 'ltd_entry_amount DESC'; 
      $link2 = "{$_SERVER['PHP_SELF']}?sort=fna"; 
      break; 
     case 'dra': 
      $order_by = 'ltd_entry_date ASC'; 
      $link3 = "{$_SERVER['PHP_SELF']}?sort=drd"; 
      break; 
     case 'drd': 
      $order_by = 'ltd_entry_date DESC'; 
      $link3 = "{$_SERVER['PHP_SELF']}?sort=dra"; 
      break; 
     default: 
      $order_by = 'ltd_entry_date DESC'; 
      break; 
    } 

    $sort = $_GET['sort']; 

} else { 
    $order_by = 'ltd_entry_date DESC'; 
    $sort = 'dra'; 
} 

$query = "SELECT ltd_invoice_no, ltd_entry_amount, 
    DATE_FORMAT(ltd_entry_date, '%M %d, %Y') AS dr, ltd_user_id FROM ltd_sales_list ORDER BY 
    $order_by LIMIT $start, $display"; 
$result = @mysql_query ($query); 

echo '<table width="520" cellspacing="1" cellpadding="11"> 
<tr> 
    <td align="left"><b><a href="' . $link1 . '">Invoice Number</a></b></td> 
    <td align="left"><b><a href="' . $link2 . '">Invoice Amount</a></b></td> 
<td align="left"><b><a href="' . $link3 . '">Date Entered</a></b></td> 
</tr> 
'; 

$bg = '#eeeeee'; 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $bg = ($bg=='#eaeced' ? '#ffffff' : '#eaeced'); 
    echo '<tr bgcolor="' . $bg . '"> 
     <td align="left">' . $row['ltd_invoice_no'] . '</td> 
     <td align="left">' . $row['ltd_entry_amount'] . '</td> 
     <td align="left">' . $row['dr'] . '</td> 
    </tr> 
    '; 
} 
echo '</table>'; 
mysql_free_result ($result); 
mysql_close(); 

if ($num_pages > 1) { 
    echo '<br /><p>'; 
    $current_page = ($start/$display) + 1; 

    if ($current_page != 1) { 
     echo '<a href="view-list.php?s=' . ($start - $display) . '&np=' . 
     $num_pages . '&sort=' . $sort .'">Previous</a> '; 
    } 
    for ($i = 1; $i <= $num_pages; $i++) { 
     if ($i != $current_page) { 
      echo '<a href="view-list.php?s=' . (($display * ($i - 1))) . 
      '&np=' . $num_pages . '&sort=' . $sort .'">' . $i . '</a> '; 
     } else { 
      echo $i . ' '; 
     } 
    } 
    if ($current_page != $num_pages) { 
     echo '<a href="view-list.php?s=' . ($start + $display) . '&np=' . 
     $num_pages . '&sort=' . $sort .'">Next</a> '; 
    } 

    echo '</p>'; 

} 

?> 

<div id="">HTML Content HERE</div> 

<?php 
include ('./includes/footer.html'); 
?> 

乾杯 アダム

+0

セッション変数にアクセスする前にsession_start()を呼び出していますか?正しいユーザーIDにアクセスできることを確認してそこから作業することをお勧めします。 –

+0

おっと! session_start(); header.htmlに入っています – AdamMc

答えて

0

それは変数をやったときに、引用符から出てくる、すべてをエスケープするような単純なものだろうか?それは動作するように私に見えます。 $ _SESSION ['ltd_user_id']をどこかでvardumpして、期待通りに動作することを確認できますか?

$query = "SELECT `ltd_invoice_no`, `ltd_entry_amount`, 
DATE_FORMAT(`ltd_entry_date`, '%M %d, %Y') AS `dr`, `ltd_user_id` FROM `ltd_sales_list` WHERE `ltd_user_id` = '".$_SESSION['ltd_user_id']."' ORDER BY 
".$order_by." LIMIT ".$start.", ".$display; 
+0

これを試してみてくださいホーチミン – AdamMc

+0

これはうまくいきました!あなたのお手伝いをしてくれてありがとうHoatzin。このサイトを大好き! – AdamMc

+0

クール!変数に入るときは常に引用符から抜け出すことをお勧めします。コードを読みやすくします。 SQL変数名の引用符を使用すると、関数の後に誤って列の名前を付けてしまい、データベースを混乱させる危険性がなくなります。 – Hoatzin

関連する問題