Espacios en blanco en PHP
Hola
Estoy desarrollando un buscador en PHP el cual consulta una BBDD SQL. Para elegir los datos a buscar utilizo un menu desplegable. El problema empieza cuando el menu desplegable, que extrae los datos de un campo de la base de datos, muestra algún "value" compuesto por dos palabras. Al apretar el botón de "buscar" no devuelve ningún resultado. Si hago la misma consulta en SQL directamente, si encuentra resultados.
¿Alguien tiene idea cómo puedo resolver esto?
Desde ya muchas gracias.
Saludos
Estoy desarrollando un buscador en PHP el cual consulta una BBDD SQL. Para elegir los datos a buscar utilizo un menu desplegable. El problema empieza cuando el menu desplegable, que extrae los datos de un campo de la base de datos, muestra algún "value" compuesto por dos palabras. Al apretar el botón de "buscar" no devuelve ningún resultado. Si hago la misma consulta en SQL directamente, si encuentra resultados.
¿Alguien tiene idea cómo puedo resolver esto?
Desde ya muchas gracias.
Saludos
1 respuesta
Respuesta de abetop
1
1
abetop, Llevo trabajando con ordenadores desde 1995, siempre he mostrado...
Si la consulta funciona directamente pero no desde la página, está claro que no se transcribe correctamente del formulario al script del server, revisa el código y asegurate que pones las ' ' para delimitar todos los campos, no sea que encuentras: nombre=perez garcía pero pasa la consulta como: nombre=perez ignorando el resto.
Hola abetop!
El problema es que la consulta la hago por medio de una variable.
El select se llama 'rubro' y el campo 'rubro'
Entonces la consulta me queda asi:
SELECT * FROM bbdd WHERE rubro = '$rubro' ORDER BY rubro ASC;
¿Puede qué el problema sea la variable?
Saludos
El problema es que la consulta la hago por medio de una variable.
El select se llama 'rubro' y el campo 'rubro'
Entonces la consulta me queda asi:
SELECT * FROM bbdd WHERE rubro = '$rubro' ORDER BY rubro ASC;
¿Puede qué el problema sea la variable?
Saludos
Intenta con eso:
Entiendo que la consulta la tienes así:
"SELECT * FROM bbdd WHERE rubro = '$rubro' ORDER BY rubro ASC";
cambia a esto:
"SELECT * FROM bbdd WHERE rubro = '".$rubro."' ORDER BY rubro ASC";
Simplemente intento que tome el valor contenido en $rubro en lugar de $rubro como literal.
Ya dirás que tal.
Entiendo que la consulta la tienes así:
"SELECT * FROM bbdd WHERE rubro = '$rubro' ORDER BY rubro ASC";
cambia a esto:
"SELECT * FROM bbdd WHERE rubro = '".$rubro."' ORDER BY rubro ASC";
Simplemente intento que tome el valor contenido en $rubro en lugar de $rubro como literal.
Ya dirás que tal.
Hola abetop!
Hice lo que me sugeriste pero no dio resultado.
Si quieres te mando por email el código completo (no es largo) para que puedas ver todo o si no lo puedo pegar acá.
Saludos
Hice lo que me sugeriste pero no dio resultado.
Si quieres te mando por email el código completo (no es largo) para que puedas ver todo o si no lo puedo pegar acá.
Saludos
¡Hola! Acá te dejo el código.
Saludos
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="shortcut icon" href="http://127.0.0.1/favicon.ico">
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>www.tunegocio.com.ar</title>
<style type="text/css">
<!--
.style2 {
font-family: Verdana;
font-size: xx-small;
}
.style3 {font-family: Verdana}
-->
</style>
</head>
<body onLoad="document.getElementById('cursor').focus()">
<?php
// Me conecto a la base de datos
$link = mysql_connect("127.0.0.1", "xxxxxx", "xxxxxxx");
mysql_select_db("midb", $link);
?>
<!--Menu de selección-->
<td height="19">
<table width="100%" border="0">
<tr>
<td>
<div align="center"><a href="index.php"><img src="imagenes/logo_lupa4.png" width="226" height="130" border="0"></a></div>
</td>
</tr>
<table width="100%" border="0" bgcolor=#FF7F00>
<form method="post" action="bus_rubro.php" >
<tr>
<td>
<div align="center"><FONT COLOR=ffffff FONT FACE=verdana> Rubro </FONT>
<select name="rubro" size="1" id="cursor">
<option value="rubro">RUBRO</option>
<?
// Consulta para mostrar los rubros
$qry = mysql_query("SELECT rubro FROM comercios GROUP BY rubro ASC",$link);
while($row = mysql_fetch_array ( $qry ) ){
echo "<option value=".$row['rubro'].">".$row['rubro']."</option>";
}
?>
</select>
<button type="submit" name="buscar" value="buscar"> Buscar </button>
</div>
</form></td>
</tr>
</table>
</body>
<?
//Sentencia de la búsqueda a efectuar en la tabla para calcular el número de páginas a mostrar
if(!isset($pag)) $pag = 1; // Por defecto, pagina 1
$consulta = mysql_query("SELECT COUNT(*) FROM comercios WHERE rubro = '".$rubro."' ORDER BY calle", $link);
list($total) = mysql_fetch_row($consulta);
$tampag = 15;
$reg1 = ($pag-1) * $tampag;
//Sentencia de la búsqueda a efectuar en la tabla para obtener los registros solicitados por el usuario
$consulta = mysql_query("SELECT nombre, calle, desde, hasta, numero, rubro, telefono, horario, localidad FROM comercios WHERE rubro = '".$rubro"' ORDER BY calle ASC LIMIT $reg1, $tampag", $link);
/******************************************************/
/* Funcion paginar
* actual: Página actual
* total: Total de registros
* por_pagina: Registros por pagina
* enlace: Texto del enlace
* Devuelve un texto que representa la paginacion
*/
function paginar($actual, $total, $por_pagina, $enlace) {
$total_paginas = ceil($total/$por_pagina);
$anterior = $actual - 1;
$posterior = $actual + 1;
if ($actual>1)
$texto = "<FONT FACE=verdana><a href=\"$enlace$anterior\">«</a></FONT> ";
else
$texto = "<b><FONT FACE=verdana>«</FONT></b> ";
for ($i=1; $i<$actual; $i++)
$texto .= "<FONT FACE=verdana><a href=\"$enlace$i\">$i</a></FONT> ";
$texto .= "<b><FONT COLOR=FF7F00 FONT FACE=verdana>$actual</FONT></b> ";
for ($i=$actual+1; $i<=$total_paginas; $i++)
$texto .= "<FONT FACE=verdana><a href=\"$enlace$i\">$i</a></FONT> ";
if ($actual<$total_paginas)
$texto .= "<FONT FACE=verdana><a href=\"$enlace$posterior\">»</a></FONT>";
else
$texto .= "<b><FONT FACE=verdana>»</FONT></b>";
return $texto;
}
Saludos
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="shortcut icon" href="http://127.0.0.1/favicon.ico">
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>www.tunegocio.com.ar</title>
<style type="text/css">
<!--
.style2 {
font-family: Verdana;
font-size: xx-small;
}
.style3 {font-family: Verdana}
-->
</style>
</head>
<body onLoad="document.getElementById('cursor').focus()">
<?php
// Me conecto a la base de datos
$link = mysql_connect("127.0.0.1", "xxxxxx", "xxxxxxx");
mysql_select_db("midb", $link);
?>
<!--Menu de selección-->
<td height="19">
<table width="100%" border="0">
<tr>
<td>
<div align="center"><a href="index.php"><img src="imagenes/logo_lupa4.png" width="226" height="130" border="0"></a></div>
</td>
</tr>
<table width="100%" border="0" bgcolor=#FF7F00>
<form method="post" action="bus_rubro.php" >
<tr>
<td>
<div align="center"><FONT COLOR=ffffff FONT FACE=verdana> Rubro </FONT>
<select name="rubro" size="1" id="cursor">
<option value="rubro">RUBRO</option>
<?
// Consulta para mostrar los rubros
$qry = mysql_query("SELECT rubro FROM comercios GROUP BY rubro ASC",$link);
while($row = mysql_fetch_array ( $qry ) ){
echo "<option value=".$row['rubro'].">".$row['rubro']."</option>";
}
?>
</select>
<button type="submit" name="buscar" value="buscar"> Buscar </button>
</div>
</form></td>
</tr>
</table>
</body>
<?
//Sentencia de la búsqueda a efectuar en la tabla para calcular el número de páginas a mostrar
if(!isset($pag)) $pag = 1; // Por defecto, pagina 1
$consulta = mysql_query("SELECT COUNT(*) FROM comercios WHERE rubro = '".$rubro."' ORDER BY calle", $link);
list($total) = mysql_fetch_row($consulta);
$tampag = 15;
$reg1 = ($pag-1) * $tampag;
//Sentencia de la búsqueda a efectuar en la tabla para obtener los registros solicitados por el usuario
$consulta = mysql_query("SELECT nombre, calle, desde, hasta, numero, rubro, telefono, horario, localidad FROM comercios WHERE rubro = '".$rubro"' ORDER BY calle ASC LIMIT $reg1, $tampag", $link);
/******************************************************/
/* Funcion paginar
* actual: Página actual
* total: Total de registros
* por_pagina: Registros por pagina
* enlace: Texto del enlace
* Devuelve un texto que representa la paginacion
*/
function paginar($actual, $total, $por_pagina, $enlace) {
$total_paginas = ceil($total/$por_pagina);
$anterior = $actual - 1;
$posterior = $actual + 1;
if ($actual>1)
$texto = "<FONT FACE=verdana><a href=\"$enlace$anterior\">«</a></FONT> ";
else
$texto = "<b><FONT FACE=verdana>«</FONT></b> ";
for ($i=1; $i<$actual; $i++)
$texto .= "<FONT FACE=verdana><a href=\"$enlace$i\">$i</a></FONT> ";
$texto .= "<b><FONT COLOR=FF7F00 FONT FACE=verdana>$actual</FONT></b> ";
for ($i=$actual+1; $i<=$total_paginas; $i++)
$texto .= "<FONT FACE=verdana><a href=\"$enlace$i\">$i</a></FONT> ";
if ($actual<$total_paginas)
$texto .= "<FONT FACE=verdana><a href=\"$enlace$posterior\">»</a></FONT>";
else
$texto .= "<b><FONT FACE=verdana>»</FONT></b>";
return $texto;
}
Me falto esto:
//Resultados a paginar y construcción de la tabla en la que se mostraran los resultados
if ($row = mysql_fetch_array($consulta)) {
echo "
<table width= 100% border = '0'>
\n";
echo "
<tr>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Nombre</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Calle</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Entre</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Y</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Número</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Rubro</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Teléfono</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Horario</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Localidad</FONT></td>
</tr>
\n";
do {
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["nombre"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["calle"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["desde"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["hasta"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["numero"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["rubro"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["telefono"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["horario"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["localidad"]."</FONT></td>
</tr>
\n";
} while ($row = mysql_fetch_array($consulta));
mysql_free_result($consulta);
echo "
</table>
\n";
//Llamado a la función "paginar" para mostrar los links de las páginas
echo paginar ($pag, $total, $tampag, "bus_avan.php?pag=");
echo "<br>";
//Muestra, a pie de página, el total de resultados obtenidos
$resultados=" Resultados encontrados: ";
if ($total > 0)
echo "
<table width= 100% border = '0'>
\n";
{
echo "
<td align=center <FONT FACE=verdana>$resultados</FONT>";
echo "<FONT COLOR=FF7F00 FONT FACE=verdana>$total</FONT></td>
";
}
echo "
</table>
\n";
//Si no hay resultados en la busqueda...
} else {
echo "
<table width = 100% border ='0'>
\n";
echo "
<tr>
<td align=center bgcolor=#FF7F00 <FONT COLOR=000000 FONT SIZE=5 FONT FACE=verdana>No se han encontrado registros</FONT></td>
</tr>
\n";
echo "
</table>
\n";
}
?>
</body>
</html>
//Resultados a paginar y construcción de la tabla en la que se mostraran los resultados
if ($row = mysql_fetch_array($consulta)) {
echo "
<table width= 100% border = '0'>
\n";
echo "
<tr>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Nombre</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Calle</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Entre</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Y</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Número</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Rubro</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Teléfono</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Horario</FONT></td>
<td align=center bgcolor=#FF7F00 <FONT COLOR=ffffff FONT FACE=verdana>Localidad</FONT></td>
</tr>
\n";
do {
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["nombre"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["calle"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["desde"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["hasta"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["numero"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["rubro"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["telefono"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["horario"]."</FONT></td>
\n";
echo "
<td align=center bgcolor=#FFee99 <FONT FACE=verdana>".$row["localidad"]."</FONT></td>
</tr>
\n";
} while ($row = mysql_fetch_array($consulta));
mysql_free_result($consulta);
echo "
</table>
\n";
//Llamado a la función "paginar" para mostrar los links de las páginas
echo paginar ($pag, $total, $tampag, "bus_avan.php?pag=");
echo "<br>";
//Muestra, a pie de página, el total de resultados obtenidos
$resultados=" Resultados encontrados: ";
if ($total > 0)
echo "
<table width= 100% border = '0'>
\n";
{
echo "
<td align=center <FONT FACE=verdana>$resultados</FONT>";
echo "<FONT COLOR=FF7F00 FONT FACE=verdana>$total</FONT></td>
";
}
echo "
</table>
\n";
//Si no hay resultados en la busqueda...
} else {
echo "
<table width = 100% border ='0'>
\n";
echo "
<tr>
<td align=center bgcolor=#FF7F00 <FONT COLOR=000000 FONT SIZE=5 FONT FACE=verdana>No se han encontrado registros</FONT></td>
</tr>
\n";
echo "
</table>
\n";
}
?>
</body>
</html>
while($row = mysql_fetch_array ( $qry ) ){
echo "<option value=".$row['rubro'].">".$row['rubro']."</option>";
}
cambia a --------->
while($row = mysql_fetch_array ( $qry ) ){
echo "<option value='".$row['rubro']."'>".$row['rubro']."</option>";
}
Parece un problema de delimitacion de cadenas, eso imprime algo como:
<option value=Paco>Paco</option>
Lo cual para Paco esta muy bien pero...
<option value=Paco Porras>Paco Porras</option>
Puede darte el problema de que intenta buscar sólo Paco ignorando el resto.
Intenta y dime que tal.
echo "<option value=".$row['rubro'].">".$row['rubro']."</option>";
}
cambia a --------->
while($row = mysql_fetch_array ( $qry ) ){
echo "<option value='".$row['rubro']."'>".$row['rubro']."</option>";
}
Parece un problema de delimitacion de cadenas, eso imprime algo como:
<option value=Paco>Paco</option>
Lo cual para Paco esta muy bien pero...
<option value=Paco Porras>Paco Porras</option>
Puede darte el problema de que intenta buscar sólo Paco ignorando el resto.
Intenta y dime que tal.
- Compartir respuesta
- Anónimo
ahora mismo