Foros del Web » Programando para Internet » PHP »

Problemas de consultas MySQL en PHP

Estas en el tema de Problemas de consultas MySQL en PHP en el foro de PHP en Foros del Web. Buenos días, Tengo un problema con unas consultas que no me funcionan en PHP , pero si las ejecuto en Mysql funcionan bien, les detallo ...
  #1 (permalink)  
Antiguo 07/09/2012, 09:40
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Problemas de consultas MySQL en PHP

Buenos días,

Tengo un problema con unas consultas que no me funcionan en PHP, pero si las ejecuto en Mysql funcionan bien, les detallo como esta el caso:

Tengo 6 tablas, las cuales son:

Tabla menu:
id_menu nombre

Tabla marca
id_marca marca

Tabla marca_coche
id_mcoche marca_coche

Tabla modelo
id_modelo modelo

Tabla submodelos
id_submodelo submodelo

Tabla productos
id_productos codigo_barras nombre caracteristicas id_menu anio marca marca_coche modelo submodelo version

Donde, en la tabla productos, los campos de id_menu, marca, marca_coche, modelo y submodelo están ligados con las tablas anteriores por el id.

Ahora me iré por partes porque no quiero confundirlos. Son tres consultas que puedo hacer en la página de productos.php.

La primera trata así: Si desde cualquier otra sección diferente a productos.php, le doy click en un menú para ir hacia esa página, sucede esto:

http://localhost/eyg/productos.php?menu=3

es decir, se configura la variable "menu" al valor correspondiente a la tabla menu por el id, en este caso fue 3.

y se ejecuta el siguiente script:

Código PHP:
<?php
            
var_dump
($_GET);          
$idmenu $_GET['menu'];
$marcaGet $_GET['marca'];
$marcaChe $_GET['marca_coche'];
        
if(isset(
$idmenu)) {
    
$selectBusqueda "Select id_menu, codigo_barras, nombre, anio, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio, 
                            Group_Concat(Distinct anio Order by anio Desc Separator ', ') as anio_concatenado
                            From productos as prod
                            Left Join marca as marca On (id_marca = prod.marca)
                            Left Join marca_coche as mcoche On (id_mcoche = prod.marca_coche)
                            Left Join modelo as model On (id_modelo = prod.modelo)
                            Left Join submodelos as sub On (id_submodelo = prod.submodelo)
                            WHERE id_menu = $idmenu
                            Group By codigo_barras, nombre, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio"
;
                            
     
$queryBusqueda=mysql_query($selectBusqueda);
     
$numRegistros=@mysql_num_rows($queryBusqueda);
             
}
Hasta aquí, todo va bien. Sin embargo, si en el menu, selecciono la marca o el modelo se envía lo siguiente:

http://localhost/eyg/productos.php?m...ca_coche=ACURA

intenté hacer esto para obtener la consulta ahora con la marca y el menu

Código PHP:
elseif(isset($idmenu) and isset($marcaGet)) {
    
$selectBusqueda "Select id_menu, codigo_barras, nombre, anio, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio, 
                            Group_Concat(Distinct anio Order by anio Desc Separator ', ') as anio_concatenado
                            From productos as prod
                            Left Join marca as marca On (id_marca = prod.marca)
                            Left Join marca_coche as mcoche On (id_mcoche = prod.marca_coche)
                            Left Join modelo as model On (id_modelo = prod.modelo)
                            Left Join submodelos as sub On (id_submodelo = prod.submodelo)
                            WHERE id_menu = $idmenu
                            and marca.marca = $marcaGet
                            Group By codigo_barras, nombre, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio"
;
                            
    
$queryBusqueda=mysql_query($selectBusqueda);
    
$numRegistros=@mysql_num_rows($queryBusqueda);
                     

Sin embargo la consulta ya no funciona, es decir, al parecer nunca entra en el segundo if (elseif). La segunda consulta, así como la primera funciona bien en MySql, el problema radica cuando llevo la información a PHP.

Esta es sólo la primera de tres secciones de búsqueda, pero por el momento sólo pongo aquí la primera. ¿alguien tiene alguna idea de en que estoy equivocándome?

De antemano agradezco sus comentarios. Saludos.

Por cierto! No puse el código donde se muestra la información en la página porque trae la información de acuerdo a la consulta, es decir la trae bien, el problema es que la segunda consulta no esta siendo ejecutada.
  #2 (permalink)  
Antiguo 07/09/2012, 09:57
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Problemas de consultas MySQL en PHP

Si alguien respondió antes de que escriba esta respuesta, olvídese de pensar en la solución. En esta sección encontré que el horror (por no decir error), era que en la variable $marcaGet o $marcaChe deben ir entre comillas :(

Además lo deje de esta forma:

Código PHP:
<?php
            
$idmenu     
$_GET['menu'];
$marcaGet     $_GET['marca'];
$marcaChe    $_GET['marca_coche'];
$bandera     0;
            
if(isset(
$idmenu)) { $bandera 1; }
if (isset(
$idmenu) and isset($marcaGet)) { $bandera 2; }
if (isset(
$idmenu) and isset($marcaGet) and isset($marcaChe)) { $bandera 3; }
                
if(
$bandera == 1) {
    
$selectBusqueda "Select id_menu, codigo_barras, nombre, anio, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio, 
                            Group_Concat(Distinct anio Order by anio Desc Separator ', ') as anio_concatenado
                            From productos as prod
                            Left Join marca as marca On (id_marca = prod.marca)
                            Left Join marca_coche as mcoche On (id_mcoche = prod.marca_coche)
                            Left Join modelo as model On (id_modelo = prod.modelo)
                            Left Join submodelos as sub On (id_submodelo = prod.submodelo)
                            WHERE id_menu = $idmenu
                            Group By codigo_barras, nombre, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio"
;
                            
     
$queryBusqueda=mysql_query($selectBusqueda);
     
$numRegistros=@mysql_num_rows($queryBusqueda);
}
            
if(
$bandera == 2) {
    
$selectBusqueda "Select id_menu, codigo_barras, nombre, anio, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio, 
                            Group_Concat(Distinct anio Order by anio Desc Separator ', ') as anio_concatenado
                            From productos as prod
                            Left Join marca as marca On (id_marca = prod.marca)
                            Left Join marca_coche as mcoche On (id_mcoche = prod.marca_coche)
                            Left Join modelo as model On (id_modelo = prod.modelo)
                            Left Join submodelos as sub On (id_submodelo = prod.submodelo)
                            WHERE id_menu = $idmenu
                            and marca.marca = '$marcaGet'
                            Group By codigo_barras, nombre, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio"
;
                            
     
$queryBusqueda=mysql_query($selectBusqueda);
     
$numRegistros=@mysql_num_rows($queryBusqueda);
}
            
if(
$bandera == 3) {
    
$selectBusqueda "Select id_menu, codigo_barras, nombre, anio, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio, 
                            Group_Concat(Distinct anio Order by anio Desc Separator ', ') as anio_concatenado
                            From productos as prod
                            Left Join marca as marca On (id_marca = prod.marca)
                            Left Join marca_coche as mcoche On (id_mcoche = prod.marca_coche)
                            Left Join modelo as model On (id_modelo = prod.modelo)
                            Left Join submodelos as sub On (id_submodelo = prod.submodelo)
                            WHERE id_menu = $idmenu
                            and marca.marca = '$marcaGet'
                            and mcoche.marca_coche = '$marcaChe'
                            Group By codigo_barras, nombre, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio"
;
                            
     
$queryBusqueda=mysql_query($selectBusqueda);
     
$numRegistros=@mysql_num_rows($queryBusqueda);
}
            
            

?>
Trato de ver si la segunda sección es por esto mismo. Saludos!!
  #3 (permalink)  
Antiguo 07/09/2012, 10:01
Avatar de antoniopol  
Fecha de Ingreso: agosto-2012
Ubicación: Valladolid
Mensajes: 114
Antigüedad: 12 años, 2 meses
Puntos: 21
Respuesta: Problemas de consultas MySQL en PHP

Yo probaría primero a realizar un echo dentro de ese elseif para saber si entra o no, por que en principio debería de entrar, y si entra el siguiente paso sería realizar un echo de la consulta para saber si es la misma que has probado directamente en MySql
__________________
>> Blog de desarrollo web.
>> @antoniopol06 amante de la Web =D
  #4 (permalink)  
Antiguo 07/09/2012, 10:13
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Problemas de consultas MySQL en PHP

Si, de echo si realicé esa prueba. Coloqué un echo que sólo imprimiera cualquier cosa y nunca llegó. Incluso puse una variable con un valor "x" y en una sección donde dice "Lo sentimos la búsqueda que realizaste no encontró ningún producto con esas características" coloqué antes y después la variable para ver si imprimía algo pero no sucedió nada. Por ello realicé este cambio.
  #5 (permalink)  
Antiguo 07/09/2012, 10:53
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Problemas de consultas MySQL en PHP

Bueno, el segundo caso es el siguiente, el cuál no he podido hacer que funcione completo hasta este momento que funcionan 3 de los 6 filtros.

Yo tengo en la página principal una buscador que hace lo siguiente: busca por Año, Producto, Marca, Modelo, Submodelo y Versión.

Siguiendo la línea del código anterior hice esto:

Código PHP:
if (isset($_POST['buscarAvz'])) {
    
            
$producto     $_POST['producto'];
            
$marca         $_POST['marca'];
            
$modelo        $_POST['modelo'];
            
$submodelo    $_POST['submodelo'];
            
$version    $_POST['version'];
            
$anio        $_POST['anio'];
            
$flag        0;

            if(
$producto 0) { $flag 1; }
            if(
$producto and $marca 0) { $flag 2; }
            if(
$producto and $marca and $modelo 0) { $flag 3; }
            if(
$producto and $marca and $modelo and $submodelo 0) { $flag 4; }
            if(
$producto and $marca and $modelo and $version != "" ) { $flag 5; }
            
            if(
$flag == 1) {
                
                
$selectBusqueda "Select codigo_barras, nombre, anio, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio, Group_Concat(Distinct anio Order by anio Desc Separator ', ') as anio_concatenado
                                From productos as prod
                                Left Join marca as marca On (id_marca = prod.marca)
                                Left Join marca_coche as mcoche On (id_mcoche = prod.marca_coche)
                                Left Join modelo as model On (id_modelo = prod.modelo)
                                Left Join submodelos as sub On (id_submodelo = prod.submodelo)
                                WHERE prod.marca = '$_POST[producto]' 
                                Group By codigo_barras, nombre, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio"
;                       
                               
                               
                
$queryBusqueda=mysql_query($selectBusqueda);
                
$numRegistros=mysql_num_rows($queryBusqueda);
                
            }
            
            if(
$flag == 2) {
                
                
$selectBusqueda "Select codigo_barras, nombre, anio, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio, Group_Concat(Distinct anio Order by anio Desc Separator ', ') as anio_concatenado
                                From productos as prod
                                Left Join marca as marca On (id_marca = prod.marca)
                                Left Join marca_coche as mcoche On (id_mcoche = prod.marca_coche)
                                Left Join modelo as model On (id_modelo = prod.modelo)
                                Left Join submodelos as sub On (id_submodelo = prod.submodelo)
                                WHERE prod.marca = '$_POST[producto]' 
                                and prod.marca_coche = '$_POST[marca]'
                                Group By codigo_barras, nombre, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio"
;                       
                               
                               
                
$queryBusqueda=mysql_query($selectBusqueda);
                
$numRegistros=mysql_num_rows($queryBusqueda);
                
            }
            
            if(
$flag == 3) {
                
                
$selectBusqueda "Select codigo_barras, nombre, anio, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio, Group_Concat(Distinct anio Order by anio Desc Separator ', ') as anio_concatenado
                                From productos as prod
                                Left Join marca as marca On (id_marca = prod.marca)
                                Left Join marca_coche as mcoche On (id_mcoche = prod.marca_coche)
                                Left Join modelo as model On (id_modelo = prod.modelo)
                                Left Join submodelos as sub On (id_submodelo = prod.submodelo)
                                WHERE prod.marca = '$_POST[producto]' 
                                and prod.marca_coche = '$_POST[marca]'
                                and prod.modelo = '$_POST[modelo]'
                                Group By codigo_barras, nombre, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio"
;                       
                               
                               
                
$queryBusqueda=mysql_query($selectBusqueda);
                
$numRegistros=mysql_num_rows($queryBusqueda);
                
            }
            
            if(
$flag == 4) {
                
                
$selectBusqueda "Select codigo_barras, nombre, anio, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio, Group_Concat(Distinct anio Order by anio Desc Separator ', ') as anio_concatenado
                                From productos as prod
                                Left Join marca as marca On (id_marca = prod.marca)
                                Left Join marca_coche as mcoche On (id_mcoche = prod.marca_coche)
                                Left Join modelo as model On (id_modelo = prod.modelo)
                                Left Join submodelos as sub On (sub.id_submodelo = prod.submodelo)
                                WHERE prod.marca = '$_POST[producto]' 
                                and prod.marca_coche = '$_POST[marca]'
                                and prod.modelo = '$_POST[modelo]'
                                and prod.submodelo = '$_POST[submodelo]'
                                Group By codigo_barras, nombre, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio"
;                       
                               
                               
                
$queryBusqueda=mysql_query($selectBusqueda);
                
$numRegistros=mysql_num_rows($queryBusqueda);
                
            }
            
            if(
$flag == 5) {
                
                
$selectBusqueda "Select codigo_barras, nombre, anio, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio, Group_Concat(Distinct anio Order by anio Desc Separator ', ') as anio_concatenado
                                From productos as prod
                                Left Join marca as marca On (id_marca = prod.marca)
                                Left Join marca_coche as mcoche On (id_mcoche = prod.marca_coche)
                                Left Join modelo as model On (id_modelo = prod.modelo)
                                Left Join submodelos as sub On (id_submodelo = prod.submodelo)
                                WHERE prod.marca = '$_POST[producto]' 
                                and prod.marca_coche = '$_POST[marca]'
                                and prod.modelo = '$_POST[modelo]'
                                and prod.submodelo = '$_POST[submodelo]'
                                and version = '$_POST[version]'
                                Group By codigo_barras, nombre, caracteristicas, marca.marca, mcoche.marca_coche, model.modelo, sub.submodelo, version, precio"
;                       
                               
                               
                
$queryBusqueda=mysql_query($selectBusqueda);
                
$numRegistros=mysql_num_rows($queryBusqueda);
                
            }        

la forma en que hago que se carguen los combobox's de búsqueda es mediante Javascript de esta forma:

Código:
$(document).ready(function(){
        $("#producto").change(function(event){
            var id = $("#producto").find(':selected').val();
            $("#marca").load('producto.php?id='+id);
        });
		
		 $("#marca").change(function(event){
            var idm = $("#marca").find(':selected').val();
            $("#modelo").load('producto2.php?idm='+idm);
        });
		
		$("#modelo").change(function(event){
            var idml = $("#modelo").find(':selected').val();
            $("#submodelo").load('producto3.php?idml='+idml);
        });
    });

Ahora, el flag 1 al 3 funcionan perfectamente, es decir, cuando selecciono por Producto, Producto+Marca, Producto+Marca+Modelo. Sin embargo cuando hago la selección de búsqueda por Producto+Marca+Modelo+Submodelo ya no funciona, ni siquiera entra en el flag 4 y consecuentemente a los flags más altos tampoco entra.

¿Alguna idea sobre esto?
  #6 (permalink)  
Antiguo 07/09/2012, 10:53
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años, 6 meses
Puntos: 27
Respuesta: Problemas de consultas MySQL en PHP

Pongo aquí el HTML, no me dejó el diálogo anterio :P

y el form es este:

Código HTML:
<!-- Sección de búsqueda por filtros -->
 	<div style="margin-left:10px">
    	<form action="productos.php?" method="post" name="form_busc2">
            <!-- Area para el año -->
                <select name="anio" id="anio" style="width:150px; margin-left:8px; margin-bottom:8px;">
                    <option> -- Año -- </option>
                    <?php 	$sqlAnio = mysql_query("Select DISTINCT anio from productos Order By anio DESC "); 
                            $i = 0;
                            while($rowSqlAnio = mysql_fetch_array($sqlAnio)) { 
                    ?>
                    <option value="<?php echo $rowSqlAnio['anio']; ?>"><?php echo $rowSqlAnio['anio']; ?></option>
                    <?php 	$i++; }  ?>
                </select>
                <br />
            <!-- Fin area año -->
            
            <!-- Area para el Producto -->
                    <select name="producto" id="producto" style="width:150px; margin-left:8px; margin-bottom:8px;">
                        <option> -- Producto -- </option>
                        <?php 	$sqlProd = mysql_query("Select id_marca, marca from marca Order By marca"); 
                                while($rowSqlProd = mysql_fetch_array($sqlProd)) { 
                        ?>
                        <option value="<?php echo $rowSqlProd['id_marca']; ?>"><?php echo $rowSqlProd['marca']; ?></option>
                        <?php 	}  ?>
                    </select>
                <br />
            <!-- Fin area producto -->
            
            <!-- Area para Marca -->
                    <select name="marca" id="marca" style="width:150px; margin-left:8px; margin-bottom:8px;"></select><br />
            <!-- Fin area marca --> 
            
            <!-- Area para Modelo -->
                    <select name="modelo" id="modelo" style="width:150px; margin-left:8px; margin-bottom:8px;"></select><br />
            <!-- Fin area modelo --> 
            
            <!-- Area para Submodelo -->
                    <select name="submodelo" id="submodelo" style="width:150px; margin-left:8px; margin-bottom:8px;"></select><br />
            <!-- Fin area submodelo -->       
            
             <!-- Area para Version -->
                    <select name="version" id="version" style="width:150px; margin-left:8px; margin-bottom:8px;">
                        <option> -- Version -- </option>
                        <?php 	$i = 0; $sqlProd = mysql_query("Select DISTINCT version from productos Order By version"); 
                                while($rowSqlProd = mysql_fetch_array($sqlProd)) { 
                        ?>
                        <option value="<?php echo $rowSqlProd['version']; ?>"><?php echo $rowSqlProd['version']; ?></option>
                        <?php $i++;	}  ?>
                    </select><br />
            <!-- Fin area version -->                
        	
            <input type="submit" name="buscarAvz" id="buscar" value="Buscar" style="margin-top:25px; margin-bottom:25px; margin-left:95px;">
        	
    	</form>    
    </div>
 	<!-- Fin Sección Búsqueda --> 

Etiquetas: mysql, registro, sql, tabla, 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 22:27.