2011-01-11 55 views
0

我有一个成员唯一的网站,其中登录的用户填写一个表格,该表格转到一个名为'ltd_sales_list'的MySQL表格,其中包含以下列:SELECT查询选择仅登录的用户行 - PHP/MySQL

ltd_item_id | ltd_user_id | ltd_invoice_no | ltd_entry_amount | ltd_entry_date

对于生成新的ID /主键每个新条目他们输入,(“ltd_item_id”)对于每一行,而他们的会话日志中ID被记录在“ltd_user_id”'ltd_entry_date'是一个时间戳。入场表单页面正常工作,但查看入口数据是我遇到问题的地方。

我把下面的代码放在一起,称为view-list.php但这会调用每个用户的条目列表。我正在尝试的是仅显示登录用户的条目列表

我认为答案在某个地方的查询内,并尝试了一些WITH_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,然后从那里开始工作。 – 2011-01-11 22:57:12

+0

糟糕! session_start();是在header.html中包含 – AdamMc 2011-01-11 23:04:50

回答

0

难道是作为逃避一切,做变量时,从报价退出一样简单?它看起来像它应该工作。你可以vardump $ _SESSION ['ltd_user_id']某处,以确保它的行为如预期?

$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;