Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/04/2010, 03:52
Tarzan
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: Vaciar variables y modificar URL

<!-- En el action del formulario no escribimos nada para que coja toda la URL con cada recarga y no se pierda la variable logo que viene por GET -->

<form name='MostrarArticulos' method='POST' action=''>
<!--Variable que se pasa en la url, se escribe DENTRO del Form para que se reenvíe el valor con cada actualización (carga) de página.
Al cargar la página por primera vez, la variable logo, viene por GET, el resto de variables se pasan por POST con cada recarga (Botón Filtrar). -->

<input type='hidden' name='logo' value="<?=$_GET['logo'] ?>">
<?
/* Consulta de todas las marcas de esa Familia para Informar el Combobox */
$sqlMarcas="SELECT DISTINCT marcas.nombre FROM marcas, articulos WHERE marcas.idMarca=articulos.idMarca and articulos.codFamilia =".$IDFamilia."";

/* Se ejecuta la consulta y se obtienen las marcas en $resultadoMarcas */
$Data->ConsultaLibreCampos($sqlMarcas, $resultadoMarcas, $fila2, $columna2);


// Código para actualizar variables cuando se envían por POST (Formulario) o cuando se envían por GET(Paginación)

IF (!$_POST) {
$_POST['comboMarca'] = $_GET["combo_marca"];
$_POST['campoNombre'] = $_GET ["campo_nombre"];
} ELSE IF ($_POST){
$_GET["combo_marca"] = "";
$_GET ["campo_nombre"] = "";
$_GET ["pagina"] = 1;
$ini_pagina = 0;
$fin_pagina = 50;
$combo_marca = "";
$campo_nombre= "";
$pagina= 1;
}

// Código para el comboBox de las marcas, dentro del formulario
<SELECT class=combobox NAME='comboMarca'>
<?
echo "<option value='1'> Todas </option>";
for ($i=0; $i < $fila2; $i++) {
if( $_POST['comboMarca']==$resultadoMarcas[$i]['nombre'])
echo "<option value='".$resultadoMarcas[$i]["nombre"]."' selected>".$resultadoMarcas[$i]['nombre']."</option>";
else
echo "<option value='".$resultadoMarcas[$i]['nombre']."'>".$resultadoMarcas[$i]['nombre']."</option>";
}
?>
</SELECT>

/* Campo Nombre */
<input class=combobox type='text' name='campoNombre' value="<?=$_POST["campoNombre"]?>">

/* Botón Filtrar */
<input class=Formulario TYPE='submit' VALUE='Filtrar'>


<?
$sqlArticulos="SELECT refArticulo, descripcion, marcas.nombre FROM articulos INNER JOIN marcas ON marcas.idMarca=articulos.idMarca WHERE articulos.codFamilia =".$IDFamilia;

/* Consulta el número de artículos pertenecientes a la familia seleccionada */
$num_articulos = "SELECT COUNT(*) FROM articulos INNER JOIN marcas ON articulos.idmarca = marcas.idmarca WHERE codFamilia =".$IDFamilia."";

/* Si se está paginando y filtrando por marca y/o nombre del formulario a la vez.*/
IF (($_GET["pagina"] != "")&&(($_GET["combo_marca"] != "")||($_GET ["campo_nombre"] != ""))){
$marca = " AND marcas.nombre = '".$_GET["combo_marca"]."'";
$nombre= " AND articulos.refArticulo LIKE '%".$_GET ["campo_nombre"]."%'";
}
ELSE IF ( $_POST )
{
IF($_POST['comboMarca'])
IF($_POST['comboMarca'] != 1)
$marca = " AND marcas.nombre = '".$_POST["comboMarca"]."'";

IF($_POST['campoNombre'])
$nombre= " AND articulos.refArticulo LIKE '%".$_POST["campoNombre"]."%'";
}

$num_articulos.= $marca." ".$nombre;
$sqlArticulos .= $marca." ".$nombre;

/* Obtener el número de Artículos de la Familia seleccionada para controlar la Paginación. */
$Data->UnResSimple($num_articulos, $contadorArticulos, $n_articulos);
$num_paginas = ($n_articulos / $paginacion);

$sqlArticulos .= " LIMIT ".$ini_pagina.",".$paginacion;

// Ejecutar la Select General y almacenar el total de registros en la variable $resultadoArticulos.
$Data->ConsultaLibreCampos($sqlArticulos, $resultadoArticulos, $fila1, $columna1);


<?
// Cuando el número de página coincide con el último enlace numérico se mantiene el grupo
if (($pagina % $paginas_por_grupo) == 0) $g_actual = ($pagina / $paginas_por_grupo)-1;

else $g_actual = intval($pagina/ $paginas_por_grupo);

$inicio = $g_actual*$paginas_por_grupo+1;
$fin = $g_actual*$paginas_por_grupo + $paginas_por_grupo;

// Paginación descendente
if ($pagina > $paginas_por_grupo)
// En caso de pulsar el botón +, se realizará una paginación ascendente y se muestran las cartas correspondientes al último mazo del nuevo grupo.

echo "<td><div id='color'><div class='botonColor'><a class='pagina' href='consulta_art.php?logo=14&combo_marca=".$_POS T["comboMarca"]."&campo_nombre=".$_POST["campoNombre"]."&codigoFamilia=".$_GET["codigoFamilia"]."&pagina=".(($g_actual-1)*$paginas_por_grupo+15)."'> < </a></div></div></td>";

// Lista de Paginación
for($i=$inicio;(($i<=$fin)&&($i<=$num_paginas));$i ++){
if ($pagina == $i)
echo "<td><div id='color'><div class='botonColor'><a class='paginaOn'>".$i."</a></div></div></td>";
else
echo "<td><div id='color'><div class='botonColor'><a class='pagina' href='consulta_art.php?logo=14&combo_marca=".$_POS T["comboMarca"]."&campo_nombre=".$_POST["campoNombre"]."&codigoFamilia=".$_GET["codigoFamilia"]."&pagina=" . $i ."'>".$i."</a></div></div></td>";
}

// Paginación ascendente
if (($num_paginas > $paginas_por_grupo)&&($pagina <= $paginas_por_grupo))

// En caso de pulsar el botón +, se realizará una paginación ascendente y se muestran las cartas correspondientes al primer mazo del nuevo grupo.
echo "<td><div id='color'><div class='botonColor'><a class='pagina' href='consulta_art.php?logo=14&combo_marca=".$_POS T["comboMarca"]."&campo_nombre=".$_POST["campoNombre"]."&codigoFamilia=".$_GET["codigoFamilia"]."&pagina=".(($g_actual+1)*$paginas_por_grupo+1)." '> > </a></div></div></td>";
?>

Última edición por Tarzan; 10/04/2010 a las 04:04