Foros del Web » Programando para Internet » PHP »

Paginar un valor dentro de una consulta

Estas en el tema de Paginar un valor dentro de una consulta en el foro de PHP en Foros del Web. Hola amigos, En una página que me muestra los detalles de un artículo Código PHP: <?  $Con = mysql_connect ( "mysql..." , "xxxx" , "xxx" ...
  #1 (permalink)  
Antiguo 27/07/2006, 14:50
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 14 años, 2 meses
Puntos: 0
Paginar un valor dentro de una consulta

Hola amigos,

En una página que me muestra los detalles de un artículo

Código PHP:
<? 
$Con
=mysql_connect("mysql...","xxxx","xxx");
mysql_select_db("zzzz");
$sql="SELECT * FROM productos WHERE orden='".$_GET["orden"]."'";
$result=$result_query=mysql_query(($sql),$Con);
$result=mysql_fetch_array($result_query);
?>

Nombre de producto
<? echo $result["nombre"]; ?>
La etiqueta <? echo $result["nombre"]; ?> me muestra el nombre del producto "Ejemplito". Dentro de esta página quiero hacer además un paginado que muestre donde aparece el producto "Ejemplito" dentro del campo "compatibles", que se encuentra a su vez dentro de otra tabla de la base de datos (la tabla "ramas").

Les pongo un ejemplo de como he conseguido hacerlo de forma estática (Es decir, siempre me mostraría los productos compatibles con el producto "Ejemplito", en vez de hacerlo con los nombres de los diversos productos de la tabla

Código PHP:
<? 
$db
=mysql_connect("mysql....","xxx","xxxx"); 

$sql"SELECT * FROM ramas WHERE compatibles LIKE   '%Ejemplito%'    ORDER BY orden DESC "

$qry mysql_db_query('qaf246',$sql,$db); 
while (
$row=mysql_fetch_array($qry)){ 
echo 
" <a href='productos2.php?orden=".$row['orden']."' target='_top'>".$row['nombre']."</a><br>";

?>
Como digo, lo que busco es, donde pone '%Ejemplito%', el conseguir que aparezca el nombre del producto de la ficha en que me encuentro.

Muchas gracias desde ya :)
  #2 (permalink)  
Antiguo 27/07/2006, 17:17
 
Fecha de Ingreso: junio-2002
Mensajes: 751
Antigüedad: 15 años, 6 meses
Puntos: 22
$sql= "SELECT * FROM ramas WHERE compatibles LIKE '%" . $result["nombre"] . "%' ORDER BY orden DESC ";
  #3 (permalink)  
Antiguo 29/07/2006, 07:17
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 14 años, 2 meses
Puntos: 0
Gracias, funciona perfectamente :D

Última edición por David224; 29/07/2006 a las 07:38
  #4 (permalink)  
Antiguo 30/07/2006, 12:22
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 14 años, 2 meses
Puntos: 0
Aprovechando esta misma consulta: ¿cómo sería hacer lo mismo pero al revés.

Es decir, paginar un campo en función de si el nombre de dicho producto se encuentra en la lista de productos compatibles con las ramas de la otra tabla?

Estoy probando con esto pero no me pagina nada, seguro que se me escapa algo :S

Código PHP:
  $sql"SELECT * FROM ramas WHERE '"$result["Ejemplito"] ."' LIKE  \"%producto%\"  ORDER BY orden DESC "
Es básicamente el proceso anterior pero a la inversa...
  #5 (permalink)  
Antiguo 30/07/2006, 13:51
 
Fecha de Ingreso: junio-2002
Mensajes: 751
Antigüedad: 15 años, 6 meses
Puntos: 22
Si lees la sentencia SQL tal cual, le estás diciendo que seleccione todos los campos de ramas donde $result["Ejemplito"] (que al parecer es igual a nada ya que el campo Ejemplito no existe, en su lugar sería nombre) sea como producto (aquí producto no es una variable, es una simple cadena de texto y por eso no te encuentra nada, debes usar $result["nombre"])...

Después del WHERE debes indicar el campo que quieres comparar no su contenido, por tanto en lugar de $result["Ejemplito"] iría "nombre" (sin las comillas) y en lugar de "%producto%" el $result['nombre'] como en el ejemplo anterior.
  #6 (permalink)  
Antiguo 30/07/2006, 14:18
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 14 años, 2 meses
Puntos: 0
Creo que me confundí en la explicación... El problema lo tengo en que $result['nombre'] contiene más palabras que "producto", es decir, el campo de la tabla que quiero que muestre, está incluido dentro del téxo de producto.

¿hay alguna manera de sacarlo con alguna sentencia que no sea LIKE por ejemplo?.
  #7 (permalink)  
Antiguo 30/07/2006, 14:46
 
Fecha de Ingreso: junio-2002
Mensajes: 751
Antigüedad: 15 años, 6 meses
Puntos: 22
¿?
Ejemplo:
$result['nombre'] (pongamos que es 'asado con patatas y verduras')
El campo producto contiene 'patatas'.

$sql= "SELECT * FROM ramas WHERE producto LIKE %" . $result['nombre'] . "% ORDER BY orden DESC ";

o utilizar expresiones regulares (REGEXP) o funciones como INSTR()
(más info en http://dev.mysql.com/doc/refman/5.0/es/index.html)

Salu2
  #8 (permalink)  
Antiguo 30/07/2006, 15:55
 
Fecha de Ingreso: octubre-2003
Ubicación: Santander
Mensajes: 236
Antigüedad: 14 años, 2 meses
Puntos: 0
Discúlpame, tengo un domingo bastante espeso :(

Te pongo un nuevo ejemplo, espero que mejor;

tabla1 dentro tiene el campo producto1
tabla2 dentro tiene el campo producto2

Nos encontramos en una página de resultados de la tabla2. Busco que, dentro de una página de resultados de la tabla2, muestre un listado de productos en las que se encuentra el producto1. Por lo tanto, el select lo tenemos que hacer a la "tabla1". El campo "producto2" (el que se muestra en la página de resultados en la que nos encontramos de la tabla2) es de texto y contiene una lista de nombres, dentro de la cual se encuentra el nombre del "producto1".

Lo que quiero es que me muestre todos los productos del campo "producto1" de la tabla1, que se encuentren en la lista de productos del campo "producto2" de la tabla2 del producto en el que nos encontramos.

El código que tengo actualmente es este, pero no me muestra nada -tampoco me da error-.

Código PHP:
$sql"SELECT * FROM tabla1 WHERE '" $result['producto2'] . "' LIKE '%producto1%'  ORDER BY producto1 ASC "

P.D. Disculpar por la redundancia...
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 10:18.