Foros del Web » Programando para Internet » PHP »

ayuda con codigo

Estas en el tema de ayuda con codigo en el foro de PHP en Foros del Web. tengo un problema, en el siguiente codigo php, lo que debe de hacer es realizar una busqueda flitrada en base a 3 cajas de texto ...
  #1 (permalink)  
Antiguo 02/07/2009, 11:55
 
Fecha de Ingreso: marzo-2009
Mensajes: 163
Antigüedad: 15 años, 1 mes
Puntos: 0
ayuda con codigo

tengo un problema, en el siguiente codigo php, lo que debe de hacer es realizar una busqueda flitrada en base a 3 cajas de texto que ahi ustedes veran los nombres $bus_nom $bus_apelpat $bus_apelmat pero en el codigo que hago no me realiza el filtro cuando supuestamente se debe de filtrar...mi query me manda TODOS los campos y no los que tengan parecido con la unica caja de texto que se envio..saludos....gracias por su ayuda

Código PHP:
<?php
$bus_nombre
='\''.$_POST['nombre'].'\'';
$bus_apelpat='\''.$_POST['apellido_pat'].'\'';
$bus_apelmat='\''.$_POST['apellido_mat'].'\'';

    if(isset(
$_POST['buscar']))
    {
        unset(
$where);
        
$and=" AND";
        
$c=0;
        
$array = array($bus_nom$bus_apelpat$bus_apelmat);
        
        
$max=count($array);    
        for(
$i=0$i<$max$i++){
        echo 
" $array[0]";
            if((
$_POST[$array[$i]])!=''){
                if(
$c>0)
                    
$union=$and;
                else
                    
$union="";
                
$where.=" $union ".$array[$i]."=".$_POST[$array[$i]]."";
                
$c++;
                
            }
        }
        if(
$c>0)
            
$where="WHERE $where";
        
        
//$query= "SELECT * FROM `cliente_datos` $where ";
        //$resultados = mysql_query($query,$db);
        
        
$query 'SELECT * FROM cliente_datos $where ';
        
$result mysql_query($query) or die ('Error in query: $query. ' mysql_error());
        echo 
" $query " ;
          if (
mysql_num_rows($result) > 0)
        {

            echo 
'<table width=100% cellpadding=0 cellspacing=0 border=1>';
            echo
                 
'<tr><td><b>Folio</b></td><td><b>Nombre</b></td><td><b>Apellido Paterno</b></td><td><b>Apellido Materno</b></td><td></tr>';
// iterate over record set
// print each field
            
while($row mysql_fetch_row($result))
            {
                echo 
'<tr>';
                echo 
'<td>' $row[0] . '</td>';
                echo 
'<td>' $row[1] . '</td>';
                echo 
'<td>' $row[2] . '</td>';
                echo 
'<td>' $row[3] . '</td>';
                echo 
'</tr>';
            }
            echo 
'</table>';
        }
        
    }
    include 
"cerrar_conexion.php";
?>
  #2 (permalink)  
Antiguo 02/07/2009, 12:02
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 3 meses
Puntos: 46
Respuesta: ayuda con codigo

puedes intentar con un query direfente, algo como esto

SELECT * FROM cliente_datos where nombre like("%$nom%") or paterno like("%$paterno%") or materno like("%$materno%")

suerte y espero te sirva
  #3 (permalink)  
Antiguo 02/07/2009, 12:09
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
De acuerdo Respuesta: ayuda con codigo

BUENAS YO LO HARIA ASI


Código PHP:
$bus_nombre='\''.$_POST['nombre'].'\''// validar que se ingresen mas de 1 caracter si o si
$bus_apelpat='\''.$_POST['apellido_pat'].'\'';
$bus_apelmat='\''.$_POST['apellido_mat'].'\'';

    if(isset(
$_POST['buscar'])){
        
            if (
strlen($bus_nombre)>0) {
                
$where .= " campo_nombre like '"$bus_nombre."'";
            }
            if (
strlen($bus_apelpat)>0) {
                
$where .= " and campo_apellido like '"$bus_apelpat."'";
            }
            if (
strlen($bus_apelmat)>0) {
                
$where .= " and campo_apelmat like '"$bus_apelmat."'";
            }
        
      
        
//$query= "SELECT * FROM `cliente_datos` $where ";
        //$resultados = mysql_query($query,$db);
        
        
$query 'SELECT * FROM cliente_datos  WHERE'.$where.'';
        
$result mysql_query($query) or die ('Error in query: $query. ' mysql_error());
        
          if (
mysql_num_rows($result) > 0) {

            echo 
'<table width=100% cellpadding=0 cellspacing=0 border=1>';
            echo
                 
'<tr><td><b>Folio</b></td><td><b>Nombre</b></td><td><b>Apellido Paterno</b></td><td><b>Apellido Materno</b></td><td></tr>';
// iterate over record set
// print each field
            
while($row mysql_fetch_row($result))
            {
                echo 
'<tr>';
                echo 
'<td>' $row[0] . '</td>';
                echo 
'<td>' $row[1] . '</td>';
                echo 
'<td>' $row[2] . '</td>';
                echo 
'<td>' $row[3] . '</td>';
                echo 
'</tr>';
            }
            echo 
'</table>';
        }
// FIN if (mysql_num_rows($result) > 0) {
        
     
        
// FIN if(isset($_POST['buscar'])){ 
    
include "cerrar_conexion.php"
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #4 (permalink)  
Antiguo 06/07/2009, 09:20
 
Fecha de Ingreso: marzo-2009
Mensajes: 163
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: ayuda con codigo

que tal oye aldo1982 le intente de tu manera y me dice lo siguiente
"Error in query: $query. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mario'' and cliente_apelpat like '''' and cliente_apelmat like ''''' at line 1"...a que se debe este error?

y lair en la primera forma de la manera que modifique la consulta me imprime lo siguiente....
SELECT * FROM cliente_datos WHERE cliente_nombre LIKE ("%bus_nombre%") AND cliente_apelpat like ("%$bus_apelpat%") AND cliente_apelmat like ("%$bus_apelmat%")

creo que ahi hay problema de variables =S
  #5 (permalink)  
Antiguo 06/07/2009, 17:24
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 3 meses
Puntos: 46
Respuesta: ayuda con codigo

entonces rompe la cadena y concatenas la variable:

'SELECT * FROM cliente_datos where nombre like("%'.$nom.'%") or paterno like("%'.$paterno.'%") or materno like("%'.$materno.'%")'

prueba con algo como eso, cualquiero cosa avisanos
  #6 (permalink)  
Antiguo 06/07/2009, 17:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ayuda con codigo

NOTA que las comillas a emplear deben ser sencillas....

Código:
... WHERE nombre LIKE '%mario%' ...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 15:53.