Foros del Web » Programando para Internet » PHP »

Resultados de combobox

Estas en el tema de Resultados de combobox en el foro de PHP en Foros del Web. Hola a todos!!! Primero de todo enhorabuena por el site Tengo un problema al hacer una seleccion en el combobox. Veamos!! tengo un archivo index.php ...
  #1 (permalink)  
Antiguo 04/11/2012, 14:50
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Exclamación Resultados de combobox

Hola a todos!!!

Primero de todo enhorabuena por el site

Tengo un problema al hacer una seleccion en el combobox.

Veamos!! tengo un archivo index.php donde aparecen una lista de objetos, al pulsar en los objetos se imprime, en productos.php, una lista relacionada con los objetos a través de un GET(recordID), hasta aquí ningún problema. el problema que tengo es cuando intento filtrar los productos, através de un combobox, a través del método GET(ResultSB) por precio ascendente o descentende,no me filtra los resultados obtenidos sino que me filtra el total de la tabla.

<?php
require_once("conexion.php");
?>
<?php
$id = $_GET['recordID'];
$result = "SELECT * FROM esall WHERE esall.N3z ='$id' "
or die ("problemas en consulta:".mysql_error());
$res=mysql_db_query($bd, $result, $con);
?>
<?php $ids = $_GET['ResultSB']; ?>

<?php

switch ($ids) {
case 'Precio mas alto':
$res = mysql_query("SELECT * FROM esall ORDER BY precio ASC")
or die ("problemas en consulta:".mysql_error());
break;
case 'Precio mas bajo':
$res = mysql_query("SELECT * FROM esall ORDER BY precio DESC")
or die ("problemas en consulta:".mysql_error());
break;
} ?>


<form action="productos.php" method="GET">
<p>Ordenar por: <select name="ResultSB" id="ResultSB" onChange="this.form.submit() ">
<option> </option>
<option value="Precio mas alto">Precio m&aacute;s alto</option>
<option value="Precio mas bajo">Precio m&aacute;s bajo</option>
</select></p>
</form>


<?php
while($row=mysql_fetch_array($res))
{
echo $row["SEO"];
echo $row["Precio"] . '<br>';
} ?>

En conculsion, lo que necesito es que me ordene los productos/objetos imprimidos de la primera busqueda que provienen de index.php


Saludos y gracias de antemano
__________________
pips
  #2 (permalink)  
Antiguo 04/11/2012, 20:43
 
Fecha de Ingreso: noviembre-2010
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: Resultados de combobox

el problema esta aca:

$res = mysql_query("SELECT * FROM esall ORDER BY precio ASC");

Estas listando todos los registros, tendria que ser adi:

$res = mysql_query("SELECT * FROM esall WHERE esall.N3z='".$id."' ORDER BY precio ASC")

lo mismo seria para el descendente:

$res = mysql_query("SELECT * FROM esall WHERE esall.N3z='".$id."' ORDER BY precio DESC")

Última edición por grassofabian; 04/11/2012 a las 20:50
  #3 (permalink)  
Antiguo 05/11/2012, 02:06
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Exclamación Respuesta: Resultados de combobox

Hola grassofabian, he probado con la consulta y no me imprime ningún resultado, me aparece un "Notice: Undefined index: recordID in C:\wamp\www\...".
En la barra de direcciones me aparece localhost/Prueba/productos.php?ResultSB=Precio+mas+alto.
También he probado con POST y tampoco me imprime resultado alguno




Os dejo mi archico index.php

<?php
require_once("conexion.php");
$result="SELECT * FROM es_id_electrodomesticos ORDER BY es_id_electrodomesticos.name_id ASC";
$res=mysql_db_query($bd,$result,$con);
?>

<?php
while ($row=mysql_fetch_array($res))
{
if ($row["parent_id"] == 91) {

?>
<a href="productos.php?recordID=<?php echo $row['category_id']; ?>"><?php echo $row['name_id']?><br /></a>

<?php

}
};

?>



y el archivo productos.php

<?php
require_once("conexion.php");
?>

//*GET que imprime sin problema (proviene de index.php)*//

<?php
$id = $_GET['recordID'];
$result = "SELECT * FROM esall WHERE esall.N3z ='$id' "
or die ("problemas en consulta:".mysql_error());
$res=mysql_db_query($bd, $result, $con);
?>

//*GET que no imprime resultados (proviene del combobox del mismo archivo productos.php)*//

<?php
$ids = $_GET['ResultSB'];

?>

<?php
switch ($ids) {
case 'Precio mas alto':
$res = mysql_query("SELECT * FROM esall WHERE esall.N3z='".$id."' ORDER BY precio ASC")
or die ("problemas en consulta:".mysql_error());
break;
case 'Precio mas bajo':
$res = mysql_query("SELECT * FROM esall WHERE esall.N3z='".$id."' ORDER BY precio DESC")
or die ("problemas en consulta:".mysql_error());
break;

} ?>


<form action="productos.php" method="GET">
<p>Ordenar por: <select name="ResultSB" id="ResultSB" onChange="this.form.submit() ">
<option> </option>
<option value="Precio mas alto">Precio m&aacute;s alto</option>
<option value="Precio mas bajo">Precio m&aacute;s bajo</option>
</select></p>
</form>


<?php
while($row=mysql_fetch_array($res))
{
echo $row["SEO"];
echo $row["Precio"] . '<br>';
} ?>


Muchas gracias grassofabian y un saludo
__________________
pips
  #4 (permalink)  
Antiguo 05/11/2012, 05:28
 
Fecha de Ingreso: noviembre-2010
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: Resultados de combobox

<option value="Precio mas alto">Precio m&aacute;s alto</option>
<option value="Precio mas bajo">Precio m&aacute;s bajo</option>

En los valores del combo box no pueden haber espacios, definilos así:

Código PHP:
<option value="Precio_mas_alto">Precio m&aacute;s alto</option>
<
option value="Precio_mas_bajo">Precio m&aacute;s bajo</option
entonces el switch quedaría:

Código PHP:
switch ($ids) {
case 
'Precio_mas_alto':
$res mysql_query("SELECT * FROM esall ORDER BY precio ASC")
or die (
"problemas en consulta:".mysql_error());
break;
case 
'Precio_mas_bajo':
$res mysql_query("SELECT * FROM esall ORDER BY precio DESC")
or die (
"problemas en consulta:".mysql_error());
break;

  #5 (permalink)  
Antiguo 05/11/2012, 15:36
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Exclamación Respuesta: Resultados de combobox

Hola de nuevo grassofabian, probé con lo que me recomendaste de las dos maneras con :

1-
<?php
switch ($ids) {
case 'Precio_mas_alto':
$res = mysql_query("SELECT * FROM esall WHERE esall.N3z='".$id."' ORDER BY precio ASC")
or die ("problemas en consulta:".mysql_error());
break;
case 'Precio_mas_bajo':
$res = mysql_query("SELECT * FROM esall WHERE esall.N3z='".$id."' ORDER BY precio DESC")
or die ("problemas en consulta:".mysql_error());
break;
}?>

2-

<?php
switch ($ids) {
case 'Precio_mas_alto':
$res = mysql_query("SELECT * FROM esall ORDER BY precio ASC")
or die ("problemas en consulta:".mysql_error());
break;
case 'Precio_mas_bajo':
$res = mysql_query("SELECT * FROM esall ORDER BY precio DESC")
or die ("problemas en consulta:".mysql_error());
break;
}?>

y en ambos casos con el combo box así:

<form action="productos.php" method="GET">
<p>Ordenar por: <select name="ResultSB" id="ResultSB" onChange="this.form.submit() ">
<option> </option>
<option value="Precio_mas_alto">Precio m&aacute;s alto</option>
<option value="Precio_mas_bajo">Precio m&aacute;s bajo</option>
</select></p>
</form>


En el primer caso (1-) no me imprime nada.
En el segundo caso (2-) se imprime todo lo que tengo en la tabla.
También he probado con POST y lo mismo. Alguna ayudita más...

Muchas gracias y un saludo
__________________
pips
  #6 (permalink)  
Antiguo 05/11/2012, 16:31
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: Resultados de combobox

pero donde estas definiendo el articulo que se quiere filtrar?

es decir el:
Cita:
esall.N3z='".$id."'
en el form solo tienes el orden

ahora bien puedes evitarte un paso (el switch) haciendo tu combo de orden de esta forma

Cita:
p>Ordenar por: <select name="ResultSB" id="ResultSB" onChange="this.form.submit() ">
<option> </option>
<option value="ASC">Precio m&aacute;s alto</option>
<option value="DESC">Precio m&aacute;s bajo</option>
</select></p>
y en la siguiente pagina hacer

Cita:
$orden =$_POST ó $_GET['ResultSB'];
$res = mysql_query("SELECT * FROM esall WHERE // donde seleccionas esto ??esall.N3z='".$id."' ORDER BY precio $orden")
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #7 (permalink)  
Antiguo 05/11/2012, 17:51
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Exclamación Respuesta: Resultados de combobox

Hola PIRRUMAN y muchas gracias con las instrucciones que me has dado,he ido probando de varias maneras y se imprime la tabla entera.

Preferiría que el script fuese con switch/case y dentro del mismo archivo productos.php. Más adelante probaré con otras alternativas y sacando mis propias conclusiones.

esall.N3z='".$id."' proviene de index.php:

<a href="productos.php?recordID=<?php echo $row['category_id']; ?>"><?php echo $row['name_id']?><br /></a>

Y en productos.php tengo el $id = $_GET['recordID']; Por lo tanto N3z =category_id en diferentes tablas .Hasta aquí todo funciona a la perfeccion, el problema es cuando quiero ordenar el resultado obtenido = http://localhost/Prueba/productos.php?recordID=XXX de manera ASC o DESC.


Un saludo y gracias de nuevo
__________________
pips
  #8 (permalink)  
Antiguo 06/11/2012, 09:15
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: Resultados de combobox

ya entendi el problema..

lo que tienes son links de los productos
y un combo para el orden

el problema es que si das click a las ligas no se hace submit al formulario y cuando das submit al formulario (que es donde esta el combobox) no has seleccionado el producto.....es decir son independientes uno del otro no se envian ambas variables, estas enviando una u otra..

lo que puedes hacer es meter tus productos en un combo en vez de un listado y q seleccionen tanto el producto como el orden, asi podrias enviar ambas variables.

o si necesitas listado hacer una funcion javascript donde envie el valor seleccionado a un campo hidden y despues hacer submit a tu formulario
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”

Etiquetas: combobox, resultados-consulta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:57.