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
https://forums.phpfreaks.com/topic/246306-little-help-sorting-table/
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

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.