Foros del Web » Programando para Internet » PHP »

problema con buscador php mysql

Estas en el tema de problema con buscador php mysql en el foro de PHP en Foros del Web. estoy haciendo un buscador con tres select para que el usuario busque por tres select distintos los selects los rellenos con datos sacado de BD ...
  #1 (permalink)  
Antiguo 06/10/2008, 16:50
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 461
Antigüedad: 22 años, 10 meses
Puntos: 1
problema con buscador php mysql

estoy haciendo un buscador con tres select para que el usuario busque por tres select distintos los selects los rellenos con datos sacado de BD mysql y funciona bien

aqui dejo los codigos

funciones.php (funcion que rellena los select de datos tomados de BD

Código PHP:
function cargar_combo($tabla,$value,$opt){
$enlace mysql_connect("localhost""us""pass") or die("No pudo conectarse : " mysql_error());
    
mysql_select_db("inmob") or die("No pudo seleccionarse la BD.");
    
$sql "select * from ".$tabla;
    
$res mysql_query($sql) or die (mysql_error());
    echo 
"<select name='$tabla' class='botones'>";
    while(
$fila mysql_fetch_assoc($res)){
        echo 
"<option value='$fila[$value]'>$fila[$opt]</option>";
    }
    echo 
"</select>";
             
mysql_close($enlace);


esta es la pagina que busca (resumida)

Código PHP:
<?php include("funciones.php"); ?>

<form action="change_prop.php" method="post">Buscar la propiedad a modificar o eliminar</td>
            </tr>
            <tr>
              <td width="27%" height="30"><span class="title_comp">Codigo:</span>&nbsp;<?php cargar_combo('inmueble','codigo','id_inmueble');?></td>
              <td width="25%"><span class="title_comp">Tipo:</span>&nbsp;<?php cargar_combo("inmueble","tipo","tipo");?></td>
              <td width="30%"><span class="title_comp">Operacion:&nbsp;</span> <?php cargar_combo("inmueble","operacion","operacion");?></td>
              <td width="18%"><label>
                <input type="submit" name="button" id="button" value="buscar" />
              </label></td>
            </tr>
            <tr>
              <td colspan="4"></form><?
if ($_POST['button'])
{
// Tomamos el valor ingresado
$codigo $_POST['codigo'];
$tipo $_POST['tipo'];
$operacion $_POST['operacion'];

// Si está vacío, lo informamos, sino realizamos la búsqueda
if(empty($codigo))
if(empty(
$tipo))
if(empty(
$operacion))

{
echo 
"No se ha ingresado una cadena a buscar";
}else{
// Conexión a la base de datos y seleccion de registros
$con=mysql_connect("localhost","uss","pass");
$sql "SELECT * FROM inmueble WHERE id_inmueble like '%$codigo%' tipo like '%$tipo%' operacion like '%$operacion%'";
mysql_select_db("inmob"$con);

$result mysql_query($sql$con);

// Tomamos el total de los resultados
$total mysql_num_rows($result);

// Imprimimos los resultados
if ($row mysql_fetch_array($result)){
echo 
"Resultados para: <b>$buscar</b>";
do {
?>
<?=$row
['id_inmueble'];?><?=$row['tipo'];?><?=$row['operacion'];?></a></b></p>
<?
} while ($row mysql_fetch_array($result));
echo 
"<p>Resultados: $total</p>";
echo 
'<td>'.$row["tipo"].'</td></tr>';
} else {
// En caso de no encontrar resultados
echo "No se encontraron resultados";
}
}
}
?>
los select los rellena bien solo que al darle "buscar " me pone

No se ha ingresado una cadena a buscar
__________________
Marcelo Acampora
mi pagina web personal
www.destinitytravel.com
  #2 (permalink)  
Antiguo 06/10/2008, 17:55
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 18 años, 4 meses
Puntos: 19
Respuesta: problema con buscador php mysql

Cuesta algo mantener el codigo tabulado y organizado???
Realmente CREO QUE NO!

Código PHP:
<?php include("funciones.php"); ?>

<form action="change_prop.php" method="post">Buscar la propiedad a modificar o eliminar</td>
            </tr>
            <tr>
              <td width="27%" height="30"><span class="title_comp">Codigo:</span>&nbsp;<?php cargar_combo('inmueble','codigo','id_inmueble');?></td>
              <td width="25%"><span class="title_comp">Tipo:</span>&nbsp;<?php cargar_combo("inmueble","tipo","tipo");?></td>
              <td width="30%"><span class="title_comp">Operacion:&nbsp;</span> <?php cargar_combo("inmueble","operacion","operacion");?></td>
              <td width="18%"><label>
                <input type="submit" name="button" id="button" value="buscar" />
              </label></td>
            </tr>
            <tr>
              <td colspan="4"></form><?
if ($_POST['button'])
{
    
// Tomamos el valor ingresado
    
$codigo $_POST['codigo'];
    
$tipo $_POST['tipo'];
    
$operacion $_POST['operacion'];

    
//TODO ESTO ESTA AL RE PEDO!!!!!!!!!!!!
    //if(empty($codigo))
    //    if(empty($tipo))
    //    if(empty($operacion)) {
    
if(empty($codigo) || empty($tipo) || empty($operacion)){
            echo 
"No se ha ingresado una cadena a buscar";
    } else {
        
// Conexión a la base de datos y seleccion de registros
        
$con=mysql_connect("localhost","uss","pass");
        
$sql "SELECT * FROM inmueble WHERE id_inmueble like '%$codigo%' tipo like '%$tipo%' operacion like '%$operacion%'";
        
mysql_select_db("inmob"$con);
        
        
$result mysql_query($sql$con);
        
        
// Tomamos el total de los resultados
        
$total mysql_num_rows($result);
        
        
// Imprimimos los resultados
        
        //ESTA NO ES UNA FORMA DE COMPROBAR SI HUBIERON RESULTADOS O NO
        //LA FORMA CORRECTA ES USANDO UNA FUNCION QUE DEVUELVA LA CANTIDAD DE FILAS
        //if ($row = mysql_fetch_array($result)){
        //EJEMPLO:
        
if(mysql_num_rows($result) > 0){
            echo 
"Resultados para: <b>$buscar</b>";
            do {
?>
<?=$row
['id_inmueble'];?><?=$row['tipo'];?><?=$row['operacion'];?></a></b></p>
<?
            
} while ($row mysql_fetch_array($result));
            echo 
"<p>Resultados: $total</p>";
            echo 
'<td>'.$row["tipo"].'</td></tr>';
        } else {
            
// En caso de no encontrar resultados
            
echo "No se encontraron resultados";
        }
    }
}
?>
Ahora asi podrias notar que tenias IF's dando vuelta por cualquier lado sin sentido alguno!... hasta hay uno que nisiquiera tiene codigo asignado! ni una llave abierta...

Bueno en fin. me di cuenta tabulando tu codigo ;)
Presta atencion a los comentarios que deje en el codigo con las modificaciones

Saludos! para la proxima se mas prolijo! te va a ayudar mucho a vos mismo! y al resto! en tus dudas
  #3 (permalink)  
Antiguo 06/10/2008, 19:36
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 461
Antigüedad: 22 años, 10 meses
Puntos: 1
Respuesta: problema con buscador php mysql

Gracias korg si estaba muyyy desordenado

pero no funciona pone :

"No se ha ingresado una cadena a buscar"

debe ser que no pasan las variables q podra ser?
__________________
Marcelo Acampora
mi pagina web personal
www.destinitytravel.com
  #4 (permalink)  
Antiguo 07/10/2008, 11:25
Avatar de korg1988  
Fecha de Ingreso: junio-2006
Ubicación: Santa Fe, Argentina
Mensajes: 825
Antigüedad: 18 años, 4 meses
Puntos: 19
De acuerdo Respuesta: problema con buscador php mysql

ahora que me doy cuenta tu formulario de ahi esta totalmente roto!
Ahi lo repare, fijate los cambios
Código PHP:
<?php include("funciones.php"); ?>

<form action="change_prop.php" method="post">
    <table>
        <tr>
            <td>Buscar la propiedad a modificar o eliminar</td>
        </tr>
        <tr>
          <td width="27%" height="30"><span class="title_comp">Codigo:</span>&nbsp;<?php cargar_combo('inmueble','codigo','id_inmueble');?></td>
          <td width="25%"><span class="title_comp">Tipo:</span>&nbsp;<?php cargar_combo("inmueble","tipo","tipo");?></td>
          <td width="30%"><span class="title_comp">Operacion:&nbsp;</span> <?php cargar_combo("inmueble","operacion","operacion");?></td>
          <td width="18%"><input type="submit" name="button" id="button" value="buscar" /></td>
        </tr>
    </table>
</form>
<?
if ($_POST['button'])
{
    
// Tomamos el valor ingresado
    
$codigo $_POST['codigo'];
    
$tipo $_POST['tipo'];
    
$operacion $_POST['operacion'];

    
//TODO ESTO ESTA AL RE PEDO!!!!!!!!!!!!
    //if(empty($codigo))
    //    if(empty($tipo))
    //    if(empty($operacion)) {
    
if(empty($codigo) || empty($tipo) || empty($operacion)){
            echo 
"No se ha ingresado una cadena a buscar";
    } else {
        
// Conexión a la base de datos y seleccion de registros
        
$con=mysql_connect("localhost","uss","pass");
        
$sql "SELECT * FROM inmueble WHERE id_inmueble like '%$codigo%' tipo like '%$tipo%' operacion like '%$operacion%'";
        
mysql_select_db("inmob"$con);
        
        
$result mysql_query($sql$con);
        
        
// Tomamos el total de los resultados
        
$total mysql_num_rows($result);
        
        
// Imprimimos los resultados
        
        //ESTA NO ES UNA FORMA DE COMPROBAR SI HUBIERON RESULTADOS O NO
        //LA FORMA CORRECTA ES USANDO UNA FUNCION QUE DEVUELVA LA CANTIDAD DE FILAS
        //if ($row = mysql_fetch_array($result)){
        //EJEMPLO:
        
if(mysql_num_rows($result) > 0){
            echo 
"Resultados para: <b>$buscar</b>";
            do {
?>
<?=$row
['id_inmueble'];?><?=$row['tipo'];?><?=$row['operacion'];?></a></b></p>
<?
            
} while ($row mysql_fetch_array($result));
            echo 
"<p>Resultados: $total</p>";
            echo 
'<td>'.$row["tipo"].'</td></tr>';
        } else {
            
// En caso de no encontrar resultados
            
echo "No se encontraron resultados";
        }
    }
}
?>
AH Y OTRA COSA

En que lugar tenes los campos??? (INPUT) tipo, codigo y operacion???

Saludos
  #5 (permalink)  
Antiguo 07/10/2008, 12:27
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: problema con buscador php mysql

Por que no nos muestras el codigo html generado ANTES de enviar el formulario, es decir, con los select impresos. Me da la sensación, que hay algun fallo en la funcion que usas para cargar los comobobox, pero no estoy seguro.
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:09.