Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] quien me explica este query

Estas en el tema de quien me explica este query en el foro de PHP en Foros del Web. <?php $smrTipo=0; $smrMarca=0; if ( isset( $_POST['marcaID']) ) { $smrMarca=$_POST['marcaID']; } if ( isset( $_POST['tipoID']) ) { $smrTipo=$_POST['tipoID']; } $criterios = ""; if ( $smrTipo!=0) ...
  #1 (permalink)  
Antiguo 12/02/2013, 19:33
Avatar de CMushroom  
Fecha de Ingreso: diciembre-2011
Ubicación: Morelos
Mensajes: 99
Antigüedad: 12 años, 4 meses
Puntos: 1
Pregunta quien me explica este query

<?php
$smrTipo=0;
$smrMarca=0;
if ( isset( $_POST['marcaID']) )
{
$smrMarca=$_POST['marcaID'];
}
if ( isset( $_POST['tipoID']) )
{
$smrTipo=$_POST['tipoID'];
}
$criterios = "";
if ( $smrTipo!=0)
{
$criterios .= " and t.tipoID = ".$smrTipo." ";
}
if ( $smrMarca!=0)
{
$criterios .= " and m.marcaID = ".$smrMarca." ";
}

$query_rsResultados = sprintf("SELECT p.productoID, p.producto, p.copete, m.marca, t.tipo FROM productos p inner join marcas m on p.marcaID=m.marcaID inner join tipos t on p.tipoID=t.tipoID WHERE ( p.producto LIKE '%%%s%%' or m.marca LIKE '%%%s%%' or t.tipo LIKE '%%%s%%' ) ".$criterios, $colname_rsResultados, $colname_rsResultados, $colname_rsResultados);
?>
  #2 (permalink)  
Antiguo 12/02/2013, 19:52
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: quien me explica este query

No es más que un inner join de las tablas productos, marcas y tipos, al cual se le aplican 3 likes.
Por algún motivo, para unir a la query , lo que hay en la variable $criterios, se hace a través de concatenación de cadenas.
Pero, para especificar el contenido de los likes, se hace con sprintf, lo cual lleva al problema de escapear los %, para diferenciar los usados por like, y los usados por sprintf, quedando esa sintaxis tan llamativa.Podría usarse concatenación de cadenas, y no quedaría tan "aparatoso".

Etiquetas: query, resultados, select
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:03.