Jump to content

little help sorting table


pastilhex

Recommended Posts

Hello,

Im trying to order and sort 3 columns by pulling data from Mysql db. For now im able to order by headings, but the second click would be to sort the same column and its not working.

Could any body take a look to my code and give me some help ?

 

<?php
session_start();
if(!session_is_registered(myusername) || $_SESSION['nivel']==2){
header("location:index.php");
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<meta name="author" content="" />
<link rel="stylesheet" type="text/css" href="style.css" media="screen" />
<title>Gestão e Controlo de Funcionários</title>
</head>
<body>
	<div id="wrapper">
            <div id="header"><h1 align="center"><?php include('includes/header.php'); ?></h1></div><!-- end #header -->
            <div id="nav"><?php include('includes/nav.php'); ?></div>
		<div id="logout" align="right"><?php include('includes/nav_logout.php'); ?></div>
                <div id="content">
			<?php
				if(isset($_GET['orderby'])){$order = $_GET['orderby'];}else{$order = "nome";}
				 if(!isset($_GET['sortby'])){$newsort="ASC";}else{
					switch ($newsort){
						case "ASC":
							$newsort="DESC";
							break;
						case "DESC":
							$newsort="ASC";
							break;
					}
				}

			?>

                  <table width="950" cellpadding="2" cellspacing="1" class="texto">
                    <tr>
                      <td width="130" height="30" bgcolor="#CBDCED"><a href="<? echo $_SERVER['PHP_SELF']."?orderby=nome&sortby=$newsort";?>">Nome</a></td>
                      <td width="130" height="30" bgcolor="#CBDCED"><a href="<? echo $_SERVER['PHP_SELF']."?orderby=apelido&sortby=$newsort";?>">Apelido</a></td>
                      <td width="130" height="30" bgcolor="#CBDCED"><a href="<? echo $_SERVER['PHP_SELF']."?orderby=num_funcionario&sortby=$newsort";?>">Nº de Funcionário</a></td>
                      <td width="130" height="30" bgcolor="#CBDCED">Inserir Horas Extras</td>
                      <td width="130" height="30" bgcolor="#CBDCED">Consultar Horas Extras</td>
                      <td width="130" height="30" bgcolor="#CBDCED">Editar Perfil</td>
                      <td bgcolor="#CBDCED">Última Visita</td>
                    </tr>
                    <?php
                    require('config.php');
                    $sql=mysql_query("SELECT * FROM `infopessoal` ORDER BY `$order` $newsort");
                    while($row = mysql_fetch_array($sql))
                      {
                          echo "<tr>";
                          echo "<td>" . $row['nome'] . "</td>";
                          echo "<td>" . $row['apelido'] . "</td>";
                          echo "<td>" . $row['num_funcionario'] . "</td>";
                          echo "<td><a href='insereh.php?id={$row['func_id']}'><img src='images/insert.png' border='0'></a></td>";
                          echo "<td><a href='detalheh.php?id={$row['func_id']}'><img src='images/lupa.png' border='0'></a></td>";
                          echo "<td><a href='modificaf.php?id={$row['func_id']}'><img src='images/perfil.png' border='0'></a></td>";
                          echo "</tr>";
                      }
                     mysql_close($link);
                    ?>
                  </table>
                </div><!-- end #content -->
		<div id="footer"><?php include('includes/footer.php'); ?></div><!-- end #footer -->
	</div><!-- End #wrapper -->
</body>
</html>

Link to comment
Share on other sites

the 'switch' is checking a variable that doesn't exist at that point in the script.

 

Change this:

						switch ($newsort){
						case "ASC":
							$newsort="DESC";
							break;
						case "DESC":
							$newsort="ASC";
							break;
					}

to this:

						switch ($_GET['sortby']){
						case "ASC":
							$newsort="DESC";
							break;
						case "DESC":
							$newsort="ASC";
							break;
					}

and validate the $_GET's

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.