如何回显上次上传文件的名称

时间:2011-05-17 02:42:04

标签: php sql html echo

我被问到输出文件应该只输出上传具有特定名称的文件的最后一个人的姓名和ID。混淆吧?即使我很困惑。那么让我举个例子

让我们说您在公司注册了3名员工。我们打电话给他们

  1. 皮卡丘,
  2. Raichu和
  3. 劈出。
  4. 皮卡丘在公司上传了3个文件,Raichu上传了2个文件,Pichu也上传了2个文件。还必须根据employeename(ASC)和文件名(DESC)订购文件。我已经订购了。这是我唯一的问题。在这种情况下,输出应如下所示:

    *注意到员工姓名和员工ID是在上传的最后一个文件中?有谁知道怎么做?请求我们帮助我在这里T-T任务太难了我只是一个菜鸟

    我想在这里使用2个表。表1为员工ID和员工姓名,表2为文件名等,所以我猜这也涉及2 while子句。我有这个想法,但我不知道如何将它们全部混合起来。

    我编辑之前的代码就像sir vincent一样:

    if ($_SESSION[$fgmembersite->GetLoginSessionVar()] == 'sa' 
       OR $_SESSION[$fgmembersite->GetLoginSessionVar()] == 'admin')
    {                                   
    
      $sql= "select * from gmdc_employee 
             where employee_name like '%$search%' 
             AND employee_name like '$listname%'";
    } else {
      $sql = "select b.* from gmdc_user a, gmdc_employee b 
              where a.username = '".$_SESSION[$fgmembersite->GetLoginSessionVar()]."' 
              AND a.company_id = b.company_id 
              AND b.employee_name like '$listname%' 
              AND b.employee_name like '%$search%'"; 
    }
    $query = mysql_query("$sql ORDER BY employee_name,confirmation DESC 
                         ,file_id DESC,file_date DESC 
                          LIMIT $offset,$limit") or die ( mysql_error () );
    $result = mysql_query($sql) or die (mysql_error());
    $total = mysql_num_rows($result);
    
    if(!$result || mysql_num_rows($result) <= 0)
    {
      $fgmembersite->HandleError("No file found.");
      return false;
    }
    while ($row = mysql_fetch_assoc($query))
    {
      $file_id = $row['file_id'];
      $file_desc = $row['file_description'];
      $file_date = $row['file_date'];
      $file_name = $row['file_name'];
      $file_accs = $row['folder_access'];
      $file_employee  = $row['employee_id'];
      $file_confir = $row['confirmation'];
      $file_ename = ucwords($row['employee_name']);
    
      $info = pathinfo($file_name);
      $file_ext = $info['extension'];
    
      echo '<tr><td>&nbsp;</td></tr>
            <tr class="subone"><td class="sub" width="100">'.$file_employee.'<br />
            &nbsp;</td>';
      if($_SESSION[$fgmembersite->GetLoginSessionVar()] == 'sa')
      {
        ?>
        <td class="sub" width="100">
        <a href="" onclick = javascript:newPopup('addfile.php?emp=
        <?php echo $file_employee ?>');><?php echo$file_ename?></a>
        <br />&nbsp;</td>
        <?php
      } else {
        echo '<td class="sub" width="182">'.$file_ename.'<br />&nbsp;</td>';
      }
      echo'<td  class="sub" width="218">
           <a href="'.$file_accs.$file_name.'" target="_blank" 
            style="text-decoration: underline;">'.$file_desc.'</a>
           <br />&nbsp;</td><td  class="sub" width="100">
          '.date('M d, Y',mktime(0,0,0,substr($file_date,5,2)
           ,substr($file_date,8,2),substr($file_date,0,4))).'
           <br />&nbsp;</td><td  class="sub" width="100">'.$file_confir.'
           <br />&nbsp;</td>';
    
      if($_SESSION[$fgmembersite->GetLoginSessionVar()] == 'sa')
      {
        if($file_confir == 'Pending' OR $file_confir == 'NotApproved')
        {
          if(isset($_GET['id']))
          {
            $fgmembersite->Delete_Db($_GET['id']);
          }
          echo '<td  class="sub" width="100">
                <a href="index.php?id='.$file_id.'">Delete</a>
                <br />&nbsp;</td>';
        }
      }
      else if($_SESSION[$fgmembersite->GetLoginSessionVar()] == 'admin')
      {
        if($file_confir == 'Pending')
          {
            if(isset($_GET['yes']))
            {
              $fgmembersite->UpdateYesDB($_GET['yes']);
              //echo "<script>location.reload();</script>";
            }
            else if(isset($_GET['no']))
            {
              $fgmembersite->UpdateNoDB($_GET['no']);
              //echo "<script>location.reload();</script>";
            }
            if (!isset($_GET['offset'])) {
              $prevoffset = 0;
            } else {
              $prevoffset = $_GET['offset'];
              echo'<td  class="sub" width="100">
              <a href="index.php?offset='.$prevoffset.'&searchfile='.$search.'
               &namelist='.$listname.'&yes='.$file_id.'">Approve</a>
               //there's a link here<br /><br />
               <a href="index.php?offset='.$prevoffset.'&searchfile='.$search.'
                &namelist='.$listname.'&no='.$file_id.'">NotApprove</a>
                //there's a link here
                &nbsp;</td> ';
          }
        }
      }?>
    

    只是忽略每个if($_SESSION[$fgmembersite->GetLoginSessionVar()] == 'admin')等等,这是针对不同的输出,因为我的文件可以由3个不同的用户登录。 SA(程序员),admin(上传文件的批准者)和用户(公司)。那里还有TD和TR,我不知道为什么它不会出现在这里。

    输出看起来像这样:

    employee_id  +   employee_name  +  file_name
    3            |   pichu          |  file6
    3            |   pichu          |  file1
    1            |   pikachu        |  file7
    1            |   pikachu        |  file4
    1            |   pikachi        |  file3
    2            |   raichu         |  file8
    2            |   raichu         |  file5
    2            |   raichu         |  file2
    

    我希望我的输出是这样的:

    ***OUTPUT***
    
    **employee_id        employee_name              file_name**
        3                      pichu                        file6
                                                            file1
        1                     pikachu                       file7
                                                            file4
                                                            file3
        2                     raichu                        file5
                                                            file2
    
    例如,raichu上传了另一个文件,输出现在应该如下所示:

    输出

    **employee_id        employee_name            file_name**
        3                      pichu                      file6
                                                          file1
        1                      pikachu                    file7
                                                          file4
                                                          file3
        2                      raichu                     file8
                                                          file5
                                                          file2
    

3 个答案:

答案 0 :(得分:1)

使用Vincent表结构可能会解决您的问题。要获得所需的结果,可以使用连接的单个查询来表示两个表。所以不需要使用两个查询。

SELECT  e.employee_id as employee_id,            //Display column for employee_id
        e.employee_name as employee_name,        
        f.file_name as file_name
  FROM employee e                                // The e is an alias for table
 INNER JOIN file f                               // The inner join will return all the rows which have same employee_id on both table 
    ON e.employee_id = f.employee_id
 ORDER BY e.employee_name, f.file_name DESC;     // Order of the result default is ASC

<强>更新

我假设你有两张桌子,结构与文森特相同。现在,此查询将获取两个表的数据。此处的加入部分是,当employee_id上的employee table employee_id上的file table具有相同e.employee_id时,这将返回一行。有关详细信息,请参阅mysql join。然后,订单employeeascending表上的employee_id,因为没有指定订单,它将使用默认值employee_id + employee_name + file_name 3 | pichu | file6 3 | pichu | file1 1 | pikachu | file7 1 | pikachu | file4 1 | pikachi | file3 2 | raichu | file8 2 | raichu | file5 2 | raichu | file2

然后输出上述查询可能是以下代码。

SELECT column_name

您会注意到employee_id和employee_name会重复出现。这是因为查询包含$query = $see_the_query_above; $result = mysql_query($query) or die(mysql_error($db)); $emp_id = ""; //This will be use to remove employee_id if its already echoed. $emp_name = ""; //This will be use to remove employee_name if its already echoed. echo '<table>'; echo '<tr><th>employee_id</th><th>employee_name</th><th>file_name</th></tr>'; while ($row = mysql_fetch_assoc($result)) { //Check $emp_id and $emp_name if same with the current, if same just print nothing or space else replace it with new. $emp_id = $emp_id == $row['employee_id'] ? "" : $row['employee_id'] $emp_name = $emp_name == $row['employee_name'] ? "" : $row['employee_name']; echo '<tr>'; echo '<td>'.$emp_id.'<td>'; echo '<td>'.$emp_name.'</td>'; echo '<td>'.$row['file_name'].'</td>'; echo '</tr>'; } echo '</table>'; 中指定的行中的所有列值。您可以过滤php中的重复值,特别是如果您将它首先存储在对象中而不是直接打印它。

<强> PHP

{{1}}

答案 1 :(得分:0)

听起来并不那么难。

employee
此表可能有两个字段(以最简单的方式):employee_id,employee_name

file
此表可能有三个字段:file_id,employee_id(这是外键),file_name

上传文件时,将其名称更改为以下格式:“file”+ file_id

因此,我们有:

employee

employee_id  |  employee_name
-----------------------------
1            |  pikachu
2            |  raichu
3            |  pichu

file

file_id  |  employee_id  |  file_name
-------------------------------------
1        |  3            |  file1
2        |  2            |  file2
3        |  1            |  file3
4        |  1            |  file4
5        |  2            |  file5
6        |  3            |  file6
7        |  1            |  file7
8        |  2            |  file8

那么让它们全部变得非常容易,你怎么看?

答案 2 :(得分:0)

假设您使用MySQL并假设我们使用引用$ db:

建立数据库连接
$query = 'SELECT employee_id, employee_name FROM `employee` ORDER BY employee_name ASC';
$result = mysql_query($query) or die(mysql_error($db));

echo '<table>';
echo '<tr><th>employee_id</th><th>employee_name</th><th>file_name</th></tr>';

while ($row = mysql_fetch_assoc($result)) {
    echo '<tr>';
    echo '<td>'.$row['employee_id'].'<td>';
    echo '<td>'.$row['employee_name'].'</td>';
    echo '<td>';

    $query2 = 'SELECT file_name FROM `file` WHERE employee_id='.$row['employee_id'].' ORDER BY file_id DESC';
    $result2 = mysql_query($query2) or die(mysql_error($db));

    while ($row2 = mysql_fetch_assoc($result2)) {
        echo $row2['file_name'].'<br />';
    }

    echo '</td>';
    echo '</tr>';
}

echo '</table>';

这段代码可以使用。