Foros del Web » Programando para Internet » PHP »

Problemas con sonsulta SQL con matriz e implode en PHP

Estas en el tema de Problemas con sonsulta SQL con matriz e implode en PHP en el foro de PHP en Foros del Web. Buenas Tardes foreros, gracias por leer mi post, voy al grano, estoy haciendo una busqueda de multiples criterios mediante un formulario hecho en DW y ...
  #1 (permalink)  
Antiguo 08/02/2009, 18:40
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Información Problemas con sonsulta SQL con matriz e implode en PHP

Buenas Tardes foreros, gracias por leer mi post, voy al grano, estoy haciendo una busqueda de multiples criterios mediante un formulario hecho en DW y que mediante POST envia las variables a una pagina de resultados PHP, pero tengo problemas ya que no domino el implode, a continuacion el error y el codigo:

El error que me sale:

Código:
Parse error: syntax error, unexpected '.' in C:\wamp\www\Activos2\resultado_responsables2.php on line 28
El codigo fuente de la pagina de resultados:

Código PHP:
<?php virtual('/Activos2/Connections/activos.php'); ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sistema de Inventario MyA</title>
</head>
<body>
<?php
$cedula 
$_POST['cedula'];
$nombre $_POST['nombre'];
$cargo $_POST['cargo'];

$cedula mysql_real_escape_string($cedula);
$nombre mysql_real_escape_string($nombre);
$cargo mysql_real_escape_string($cargo);

if(isset(
$cedula) && $cedula!="")
{
$where[] = " cedula LIKE '%".$cedula."%'";
}
else if(isset(
$nombre) && $nombre!="")
{
$where[] = " nombre LIKE '%".$nombre."%'";
}
else if(isset(
$cargo) && $cargo!="")
{
$where[] = " nombre LIKE '%".$cargo."%'";
}
else
{
echo 
"No escribio ningún criterio de búsqueda, por favor regrese y escriba alguno";
}  

$query "SELECT * FROM table WHERE ".implode(" AND ",.$where[]);  // Esta es la linde adonde tengo problemas

$result mysql_query($query);

if(!
$result)
{
    exit(
"hay un error con la consulta : ".mysql_error());
}
else
{
echo 
"<table width=100% border=1 cellspacing=1 cellpadding=1><tr bgcolor=#009900 align=center><td><div align=center>
<em><strong>C&Eacute;DULA</strong></em></div></td><td><div align=center>
<em><strong>NOMBRE</strong></em></div></td><td><div align=center>
<em><strong>CARGO</strong></em></div></td></tr>"
;
while(
$row mysql_fetch_array ($result))
{
echo 
"<TR>
<TD WIDTH=5% ALIGN=CENTER>$row[cedula]</TD>
<TD WIDTH=10% ALIGN=center>$row[nombre]</TD>
<TD WIDTH=20% ALIGN=CENTER>$row[cargo]</TD>
</TR>"
;
}
echo 
"</TABLE></form>";
}

mysql_free_result($result);
include 
"desconectarse.php"



?>
<div align="center">
  <p>&nbsp;</p>
  <p><a href="/Activos2/busqueda_responsables.php">Regresar/Nueva Búsqueda</a></p>
</div>
</body>
</html>
<?php
mysql_free_result
($result);
?>
Cualquier ayuda se agradece, siempre acudo a ustedes los sabios del foro, saludos.
  #2 (permalink)  
Antiguo 08/02/2009, 19:19
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas con sonsulta SQL con matriz e implode en PHP

Estás usando mal el implode. Lee el manual de PHP por favor. Por qué colocas el punto antes de $where[]? Qué es lo que deseas concatenar así?

  #3 (permalink)  
Antiguo 08/02/2009, 19:33
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Problemas con sonsulta SQL con matriz e implode en PHP

Ok quite el punto no me habia fijado y me quedo un error

este:

Fatal error: Cannot use [] for reading in C:\wamp\www\Activos2\resultado_responsables2.php on line 35
  #4 (permalink)  
Antiguo 08/02/2009, 19:36
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas con sonsulta SQL con matriz e implode en PHP

Sabes inglés? Sería bueno que estudiases y tuvieses al menos nociones básicas, ya que la programación generalmente usa el inglés como lenguaje base.

Ese error es debido a que pones $where[], y esa sintaxis sólo se usa cuando quieres agregar elementos al final de un array (Reemplaza a array_push()). En el implode quieres juntar los elementos de $where no? Los [] están de más.

  #5 (permalink)  
Antiguo 08/02/2009, 19:48
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Problemas con sonsulta SQL con matriz e implode en PHP

Normalmente uso Dreamweaver pero estoy estancado en la parte de busquedas, he investigado por el inter varios codigos y nada, y si se ingles, se de los manuales, pero lo que no tengo es mucho tiempo, por eso recurri a ustedes.

Y lo que quiero es que dependiendo de los valores que me envien desde el formulario, me construya la sentencia SQL, el problema es que solo acepta un Solo WHERE.

Por eso vie este codigo de aqui:

http://www.desarrolloweb.com/faq/mul...a-con-php.html

Que es el que mas creo o creia que solucionaba mis problemas de busquedas en php.
  #6 (permalink)  
Antiguo 08/02/2009, 20:10
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Problemas con sonsulta SQL con matriz e implode en PHP

Ok, luego de leer un poco, modifique el codigo, espero este bien, no lo se, porque cada vez que se va a ejecutar el script me tumba el Apache, que les parece?

Código PHP:
<?php virtual('/Activos2/Connections/activos.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sistema de Inventario MyA</title>
</head>
<body>
<?php
$cedula 
$_POST['cedula'];
$nombre $_POST['nombre'];
$cargo $_POST['cargo'];

$cedula mysql_real_escape_string($cedula);
$nombre mysql_real_escape_string($nombre);
$cargo mysql_real_escape_string($cargo);

if(
$cedula="")

$where_cedula "%";
}
if(
$nombre="")

$where_nombre "%";
}
if(
$cargo="")

$where_cargo "%";
}

if(isset(
$cedula) && $cedula!="")
{
$where_cedula " cedula LIKE '%".$cedula."%'";
}
if(isset(
$nombre) && $nombre!="")
{
$where_nombre " nombre LIKE '%".$nombre."%'";
}
if(isset(
$cargo) && $cargo!="")
{
$where_cargo " nombre LIKE '%".$cargo."%'";
}

$where_array = array($where_cedula$where_nombre$where_cargo);
$where implode(" AND "$where_array);

$query "SELECT * FROM responsable WHERE ".$where." ORDER BY cedula";  // Esta es la linde adonde tengo problemas

$result mysql_query($query);

if(!
$result)
{
    exit(
"hay un error con la consulta : ".mysql_error());
}
else
{
echo 
"<table width=100% border=1 cellspacing=1 cellpadding=1><tr bgcolor=#009900 align=center><td><div align=center>
<em><strong>C&Eacute;DULA</strong></em></div></td><td><div align=center>
<em><strong>NOMBRE</strong></em></div></td><td><div align=center>
<em><strong>CARGO</strong></em></div></td></tr>"
;
while(
$row mysql_fetch_array ($result))
{
echo 
"<TR>
<TD WIDTH=5% ALIGN=CENTER>$row[cedula]</TD>
<TD WIDTH=10% ALIGN=center>$row[nombre]</TD>
<TD WIDTH=20% ALIGN=CENTER>$row[cargo]</TD>
</TR>"
;
}
echo 
"</TABLE></form>";
}

mysql_free_result($result);
include 
"desconectarse.php"



?>
<div align="center">
  <p>&nbsp;</p>
  <p><a href="/Activos2/busqueda_responsables.php">Regresar/Nueva Búsqueda</a></p>
</div>
</body>
</html>
<?php
mysql_free_result
($result);
?>
  #7 (permalink)  
Antiguo 08/02/2009, 20:17
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problemas con sonsulta SQL con matriz e implode en PHP

Sugiero reemplazar:
Código PHP:
if($cedula="")

$where_cedula "%";
}
if(
$nombre="")

$where_nombre "%";
}
if(
$cargo="")

$where_cargo "%";
}

if(isset(
$cedula) && $cedula!="")
{
$where_cedula " cedula LIKE '%".$cedula."%'";
}
if(isset(
$nombre) && $nombre!="")
{
$where_nombre " nombre LIKE '%".$nombre."%'";
}
if(isset(
$cargo) && $cargo!="")
{
$where_cargo " nombre LIKE '%".$cargo."%'";

Por:
Código PHP:
$where_array  = array();

if(isset(
$cedula) && $cedula!="")
{
$where_array[] = " cedula LIKE '%".$cedula."%'";
}
if(isset(
$nombre) && $nombre!="")
{
$where_array[] = " nombre LIKE '%".$nombre."%'";
}
if(isset(
$cargo) && $cargo!="")
{
$where_array[] = " nombre LIKE '%".$cargo."%'";

Edito: solo falta analizar si hay algun filtro a activar:

Código PHP:
// Si tiene algun filtro, se incluye WHERE y los filtros, de lo contrario, nada
$where = (count($where_array) > 0) ? 'WHERE ' implode(" AND "$where_array) : '';
$query "SELECT * FROM responsable $where ORDER BY cedula"
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 08/02/2009, 20:25
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Problemas con sonsulta SQL con matriz e implode en PHP

Sigo con el mismo problema, se sigue cerrando el apache cuando ejecuto el script
  #9 (permalink)  
Antiguo 08/02/2009, 20:36
 
Fecha de Ingreso: diciembre-2008
Ubicación: http://www.solucionesrios.tk/
Mensajes: 413
Antigüedad: 15 años, 4 meses
Puntos: 19
Respuesta: Problemas con sonsulta SQL con matriz e implode en PHP

Ok amigos muchas gracias, ya solvente de la siguiente forma, a continuación les pego el còdigo:

Código PHP:
<?php include "conectarse.php"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sistema de Inventario MyA</title>
</head>
<body>
<p>&nbsp;</p>
<p>
 <center> <?php
$cedula 
$_POST['cedula'];
$nombre $_POST['nombre'];
$cargo $_POST['cargo'];

$cedula mysql_real_escape_string($cedula);
$nombre mysql_real_escape_string($nombre);
$cargo mysql_real_escape_string($cargo);

if(
$cedula!="")
{
$where_cedula "cedula LIKE '%".$cedula."%'";
}
else
{
$where_cedula "cedula LIKE '%'";
}
if(
$nombre!="")
{
$where_nombre " nombre LIKE '%".$nombre."%'";
}
else
{
$where_nombre "nombre LIKE '%'";
}
if(
$cargo!="")
{
$where_cargo " cargo LIKE '%".$cargo."%'";
}
else
{
$where_cargo "cargo LIKE '%'";
}

$where_array = array($where_cedula$where_nombre$where_cargo);
$where implode(" AND "$where_array);

$query "SELECT * FROM responsable WHERE ".$where." ORDER BY cedula";  // Esta es la linde adonde tengo problemas

$result mysql_query($query);

if(!
$result)
{
    exit(
"hay un error con la consulta : ".mysql_error());
}
else
{
echo 
"<table width=100% border=1 cellspacing=1 cellpadding=1><tr bgcolor=#009900 align=center><td><div align=center>
<em><strong>C&Eacute;DULA</strong></em></div></td><td><div align=center>
<em><strong>NOMBRE</strong></em></div></td><td><div align=center>
<em><strong>CARGO</strong></em></div></td></tr>"
;
while(
$row mysql_fetch_array ($result))
{
echo 
"<TR>
<TD WIDTH=5% ALIGN=CENTER>$row[cedula]</TD>
<TD WIDTH=10% ALIGN=center>$row[nombre]</TD>
<TD WIDTH=20% ALIGN=CENTER>$row[cargo]</TD>
</TR>"
;
}
echo 
"</TABLE></form>";
}

mysql_free_result($result);
include 
"desconectarse.php"



?></center>
</p>
<div align="center">
  <p>&nbsp;</p>
  <p><a href="/Activos2/busqueda_responsables.php">Regresar/Nueva Búsqueda</a></p>
</div>
</body>
</html>
Espero a alguien le sirva.

Saludos
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 09:25.