Foros del Web » Programando para Internet » PHP »

problema al enviar variable de una pagina a otra

Estas en el tema de problema al enviar variable de una pagina a otra en el foro de PHP en Foros del Web. Buenas, a ver si me podeis ayudar con el problema que tengo. Tengo una pagina con un menu lateral en el que se muestran las ...
  #1 (permalink)  
Antiguo 08/08/2010, 05:55
 
Fecha de Ingreso: agosto-2010
Mensajes: 14
Antigüedad: 13 años, 8 meses
Puntos: 1
Pregunta problema al enviar variable de una pagina a otra

Buenas, a ver si me podeis ayudar con el problema que tengo.

Tengo una pagina con un menu lateral en el que se muestran las marcas de los productos.
Lo que quiero es que al hacer clic en una de las marcas me muestre los productos que haya en la base de datos con esa marca.
Lo que llevo hecho es esto:

Pagina del indice:
Código:
<?php
	$db = mysql_connect ('localhost', 'root', '') or die ('no puede conectar a la base de datos');
	mysql_select_db ('satclima', $db) or die ('no se puede conectar a db');
	$query = 'SELECT * FROM marca ORDER BY nombre_marca ASC';
	$result = mysql_query ($query, $db) or die (mysql_error($db));
	while( $row= mysql_fetch_assoc($result))
	{
		
		echo "<li><a href=\"aire.php?cat=".utf8_encode($row["id_marca"])."\">";
		echo utf8_encode($row["nombre_marca"]);
		echo "</a></li>";
	}
?>
Supuestamente deberia asigar el valor la marca en la variable $cat

Y ahora la pagina del producto:

Código:
  <?php
	
	
	$query = 'SELECT id_aire, nombre_aire, precio, nombre_marca FROM aires, marca WHERE aires.idmarca = marca.id_marca AND
	aires.idmarca = $cat';
	
	
	$result = mysql_query ($query, $db) or die (mysql_error($db));
	
	$i=1;
	while ($row = mysql_fetch_assoc($result))
	{
		if ($i%2!=0)
			{echo "<div id=\"divpar\">";
			 echo "<p class=\"divnombre\">".$row["nombre_aire"]."</p>";
			 echo "<p class=\"divmarca\">".$row["nombre_marca"]."</p>";
			 echo "<p class=\"divprecio\">".$row["precio"]." €</p>";
			 echo "</div>";
			 }
		else
			{echo "<div id=\"divimpar\">";
			 echo "<p class=\"divnombre\">".$row["nombre_aire"]."</p>";
			 echo "<p class=\"divmarca\">".$row["nombre_marca"]."</p>";
			 echo "<p class=\"divprecio\">".$row["precio"]." €</p>";
			 echo "</div>";
			}
	$i++;
	
	
	}

?>
Esta deberia recibir el valor en la variable $cat.
Entonces al poner : aires.idmarca = $cat'; me muestre la marca que corresponde.

El error que me sale es este:

Unknown column '$cat' in 'where clause'
  #2 (permalink)  
Antiguo 08/08/2010, 08:05
 
Fecha de Ingreso: mayo-2010
Ubicación: Antioquia
Mensajes: 11
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: problema al enviar variable de una pagina a otra

Hola, al parecer estas consultando dos bases tablas al mismo tiempo, entonces debes hacer alucion a que tabla le corresponde cada campo es decir:

Código PHP:
$query 'SELECT NOMBRETABLA.id_aire, NOMBRETABLA.nombre_aire, NOMBRETABLA.precio, NOMBRETABLA.nombre_marca FROM aires, marca WHERE aires.idmarca = marca.id_marca AND
    aires.idmarca = $cat'

Me parece que ese es el error, o si no, prueba dandole un valor fijo a la variable $cat para descartar que alla un problema al tu pasarla por la url.
  #3 (permalink)  
Antiguo 08/08/2010, 08:55
 
Fecha de Ingreso: agosto-2010
Mensajes: 14
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: problema al enviar variable de una pagina a otra

Si le asigno un valor fijo funciona, por ejemplo, si cambio $cat por 1

Código PHP:
Ver original
  1. $query = 'SELECT NOMBRETABLA.id_aire, NOMBRETABLA.nombre_aire, NOMBRETABLA.precio, NOMBRETABLA.nombre_marca FROM aires, marca WHERE aires.idmarca = marca.id_marca AND
  2.    aires.idmarca = 1';

Me muestra en pantalla correctamente todos los productos de la marca con id=1.

El problema es que no me reconoce $cat como una variable sino que la busca como una tabla de mysql.
  #4 (permalink)  
Antiguo 08/08/2010, 09:31
 
Fecha de Ingreso: mayo-2010
Ubicación: Antioquia
Mensajes: 11
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: problema al enviar variable de una pagina a otra

Bueno amigo, entonces viendo nuevamente tu post, veo que no muestras como recuperas el valor de la variable que esta en la url, es decir, que el codigo te quedaria asi recuperando el valor de la url:

Código PHP:
 <?php
        
//RECUPERANDO LA VARIABLE QUE ESTA EN LA URL
    
$cat=$_GET['cat'];
    
    
$query 'SELECT id_aire, nombre_aire, precio, nombre_marca FROM aires, marca WHERE aires.idmarca = marca.id_marca AND
    aires.idmarca = $cat'
;
    
    
    
$result mysql_query ($query$db) or die (mysql_error($db));
    
    
$i=1;
    while (
$row mysql_fetch_assoc($result))
    {
        if (
$i&#37;2!=0)
            
{echo "<div id=\"divpar\">";
             echo 
"<p class=\"divnombre\">".$row["nombre_aire"]."</p>";
             echo 
"<p class=\"divmarca\">".$row["nombre_marca"]."</p>";
             echo 
"<p class=\"divprecio\">".$row["precio"]." €</p>";
             echo 
"</div>";
             }
        else
            {echo 
"<div id=\"divimpar\">";
             echo 
"<p class=\"divnombre\">".$row["nombre_aire"]."</p>";
             echo 
"<p class=\"divmarca\">".$row["nombre_marca"]."</p>";
             echo 
"<p class=\"divprecio\">".$row["precio"]." €</p>";
             echo 
"</div>";
            }
    
$i++;
    
    
    }

?>
O intenta hacerlos asi:

Código PHP:
 <?php
        
//RECUPERANDO LA VARIABLE QUE ESTA EN LA URL
    
$cat=$_GET['cat'];
    
    
$query "SELECT id_aire, nombre_aire, precio, nombre_marca FROM aires, marca WHERE aires.idmarca = marca.id_marca AND
    aires.idmarca = '$cat'"
;
    
    
    
$result mysql_query ($query$db) or die (mysql_error($db));
    
    
$i=1;
    while (
$row mysql_fetch_assoc($result))
    {
        if (
$i%2!=0)
            {echo 
"<div id=\"divpar\">";
             echo 
"<p class=\"divnombre\">".$row["nombre_aire"]."</p>";
             echo 
"<p class=\"divmarca\">".$row["nombre_marca"]."</p>";
             echo 
"<p class=\"divprecio\">".$row["precio"]." €</p>";
             echo 
"</div>";
             }
        else
            {echo 
"<div id=\"divimpar\">";
             echo 
"<p class=\"divnombre\">".$row["nombre_aire"]."</p>";
             echo 
"<p class=\"divmarca\">".$row["nombre_marca"]."</p>";
             echo 
"<p class=\"divprecio\">".$row["precio"]." €</p>";
             echo 
"</div>";
            }
    
$i++;
    
    
    }

?>

Prueba y me cuentas como te fue.
Salu2

Última edición por alviz; 08/08/2010 a las 09:40
  #5 (permalink)  
Antiguo 08/08/2010, 14:25
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Respuesta: problema al enviar variable de una pagina a otra

Cita:
Iniciado por Maydur Ver Mensaje
Si le asigno un valor fijo funciona, por ejemplo, si cambio $cat por 1

Código PHP:
Ver original
  1. $query = 'SELECT NOMBRETABLA.id_aire, NOMBRETABLA.nombre_aire, NOMBRETABLA.precio, NOMBRETABLA.nombre_marca FROM aires, marca WHERE aires.idmarca = marca.id_marca AND
  2.    aires.idmarca = 1';

Me muestra en pantalla correctamente todos los productos de la marca con id=1.

El problema es que no me reconoce $cat como una variable sino que la busca como una tabla de mysql.
Estas usando comillas simples para delimitar cadenas, y cuando haces eso las variables no se reemplazan. Tenes que usar comillas dobles.

Mira aca:
http://www.forosdelweb.com/f18/como-...s-bien-588701/

Saludos!
  #6 (permalink)  
Antiguo 09/08/2010, 02:43
 
Fecha de Ingreso: agosto-2010
Mensajes: 14
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: problema al enviar variable de una pagina a otra

Ya me funciona bien, la solucion era agregarle
$cat=$_GET['cat'];
y poner la cadena con comillas dobles.

Mil gracias^^

Etiquetas: enviar, variables
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 16:39.