Buen día, tengo un problema con una tabla dinámica que lleno mediante una base de datos... lo que necesito es que se pueda ordenar al hacer click en los encabezados, cosa que sí realiza pero sólamente cuando doy f5 a la página :/ al iniciar la página o mandar un criterio de agrupamiento y presionar el botón submit vuelve a congelarse la acción de poder ordenar la tabla ... adjunto parte del código:
<div id="Divini" style='display:none;'>
<a href="#0" class="cd-btn">Menú</a>
<center>
<form action="principal.php" method="post">
<LABEL FOR="CheckMpio">Municipio</LABEL>
<input name="CheckMpio" ID="CheckMpio" type="checkbox" value="1" onclick="listMpioIni.style.visibility = (this.checked) ? 'visible' : 'hidden'">
<select onclick="this.style.width = ‘auto';" onblur="this.style.width = '200px';" style="width:200px;" name="listMpioIni" id="listMpioIni" style="visibility:hidden">
<option value="">Seleccione Municipio</option>
<?php
while($fila=mysqli_fetch_array($res)){
?>
<option value="<?php echo $fila[0]; ?>"><?php echo utf8_encode($fila[1]);
?></option>
<?php } ?>
</select>
<?php
$con=conexion();
$res=mysqli_query($con,"SELECT `id_subs`,`clave_subs` FROM `subsistema`");
?>
<LABEL FOR="CheckSubs">Subsistema</LABEL>
<input name="CheckSubs" ID="CheckSubs" type="checkbox" value="1" onclick="ListSubsIni.style.visibility = (this.checked) ? 'visible' : 'hidden'">
<select onclick="this.style.width = ‘auto';" onblur="this.style.width = '200px';" style="width:200px;" name="ListSubsIni" id="ListSubsIni" style="visibility:none">
<option value="">Seleccione Subsistema</option>
<?php
while($fila=mysqli_fetch_array($res)){
?>
<option value="<?php echo $fila[0]; ?>"><?php echo utf8_encode($fila[1]);
?></option>
<?php } ?>
</select>
<br>
<LABEL FOR="SlctOrden">Ordenar por:</LABEL>
<select onclick="this.style.width = ‘auto';" onblur="this.style.width = '200px';" style="width:200px;" name="SlctOrden" id="SlctOrden" style="visibility:none">
<option value="Q.ID_Q">Clave</option>
<option value="Shortname">Nombre de Proyecto</option>
<option value=" Q.descripcion">Descripción</option>
<option value="mpio.nombre">Municipio</option>
<option value="Nvl.Clave_Nvl">Nivel</option>
<option value="subs.Clave_subs">Subistema</option>
<option value="Total">Total Asignado</option>
<option value="TotalEx">Total Ejercido</option>
<option value="saldo">Saldo</option>
<option value="semaforo">Semáforo</option>
</select>
<LABEL FOR="slcmodo">Modo de ordenamiento:</LABEL>
<select onclick="this.style.width = ‘auto';" onblur="this.style.width = '200px';" style="width:200px;" name="slcmodo" id="slcmodo">
<option value="asc">Ascendente</option>
<option value="desc">Descendente</option>
</select>
<br>
<input type="Submit" name="enviarSlc" value="Ok"></td>
</form>
</div>
<br><div id="divContenedor">
<div id="divTabla">
<label for="txtBuscar">Buscar: </label>
<input type="search" id="txtBuscar" autofocus
placeholder="Digite el texto que desea encontrar y presione ENTER. Para cancelar la tecla ESCAPE.">
</center>
<?php
$criterio='semaforo';
$modo='asc';
//Si se pulsa el botón de enviar
if (isset($_POST['enviarSlc']))
{
//Si el checkbox municipio tiene valor y es igual a 1
if (isset($_POST['CheckMpio']) && $_POST['CheckMpio'] == '1')
{
if (isset($_POST['CheckSubs']) && $_POST['CheckSubs'] == '1')
$query="sentencia a BD para regesar datos”;
}
else{
if (isset($_POST['CheckSubs']) && $_POST['CheckSubs'] == '1')
{
$query="sentencia opción 2 ";
}
else
$query="sentencia opción 3";
}
echo "<script></script>";
}
else
$query="sentencia opción 4 ";
if(isset($_POST['SlctOrden']))
$criterio=$_POST['SlctOrden'];
if(isset($_POST['slcmodo']))
$modo=$_POST['slcmodo'];
$query=$query.$criterio." ".$modo;
displayTable($query);
?>
</div>
</div>
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/buscar-en-tabla.js"></script>
<?php
//Función para mostrar la tabla, obtiene la opción de sentencia SQL deseada.
function displayTable($sql){
//Creamos la conexión
$con=conexion();
//generamos la consulta
if(!$result = mysqli_query($con, $sql)) die();
$rawdata = array();
//guardamos en un array multidimensional todos los datos de la consulta
$i=0;
while($row = mysqli_fetch_array($result))
{
$rawdata[$i] = $row;
$i++;
}
mysqli_free_result($result);
$close = mysqli_close($con);
//DIBUJAMOS LA TABLA
echo "<table id=\"ReportesEspecificos\" class=\"sortable-theme-slick\" data-sortable>";
if(count($rawdata)>0)
{
$columnas = count($rawdata[0])/2;
//echo $columnas;
$filas = count($rawdata);
//echo "<br>".$filas."<br>";
//Añadimos los titulos
echo "<thead><tr>";
for($i=1;$i<count($rawdata[0]);$i=$i+2){
next($rawdata[0]);
echo "<th>".key($rawdata[0])."</th>";
next($rawdata[0]);
}
echo "<th>Ver Detalle</th>";
echo "</tr></thead><tbody>";
for($i=0;$i<$filas;$i++){
echo "<tr>";
for($j=0;$j<$columnas;$j++){
echo "<td>".utf8_encode($rawdata[$i][$j])."</td>";
}
echo "<td><a href='rptQesp.php?q=".utf8_encode($rawdata[$i][0])."' target='_blank'><img height=50px src='./sources/detalle.png'>";
echo "</tr>";
}
echo "</tbody></table>";
}
else
{
echo "<script>alert('No existen registros que coincidan con el agrupamiento')
window.location='principal.php';
</script>";
}
}
?>
</div><!--Fin div inicio-->