Responder
Ayuda en Buscador php con SELECT where AND MYSQL
Haz clic para ver el perfil del usuario

Usuario Novato
Usuario Novato

#1

Muy buenas. Me estoy volviendo loco para conseguir que me funcione un buscador que debe tomar los valores de un form select para mostrar los resultados de la búsqueda de la base de datos en pantalla.

Por favor ayuda, estoy más perdido que un gramo de silicona en el cuerpo de Belén Esteban.

Creo que el problema está en la parte WHERE (categoria = '$categoria') AND (provincia = '$provincia') pero no se como resolverlo.

El Código es este:

PRIMERO EL FORMULARIO DEL BUSCADOR

<select name = "categoria" >
<option selected value= "vestidos">Vestidos de Novia </option>
<option value="peinados">Peinados de novia </option>
<option value="belleza">Belleza </option>
</select>
<SELECT name = "provincia" >
<option selected value="profesional/index.php?bodas,a,coru,a&categ=83">Acoruña
<option value="alava">Álava
<option value="albacete">Albacete
<option value="alicante">Alicante
<option value="almeria">Almería
<option value="asturias">Asturias
<option value="avila">Ávila
<option value="badajoz">Badajoz
</SELECT>
<input type="submit" name="enviar" value="Enviar:" /></th>

AHORA EL CÓDIGO PHP QUE CONSULTA LA BASE DE DATOS

<?
$categoria=$_POST[categoria];
$provincia=$_POST[provincia];
include "conecta_bbdd.php";
//Ejecutamos la sentencia SQL
$result=mysql_query("SELECT * FROM qlweb_sites WHERE (categoria = '$categoria') AND (provincia = '$provincia') ORDER BY link_type DESC");
//Mostramos los registros
while ($row=mysql_fetch_array($result))
{

AHORA MUESTRO EN PANTALLA EL RESULTADO

//inicio del bucle
echo '<table border="1" cellspacing="0" cellpadding="0" width="500" bgcolor="#FEF4F1">';
echo '<tbody>' ;
echo '<tr>' ;
echo '<td rowspan="2" align="right" valign="top"><img src="http://planeatuboda.net/imagenes/ico-ramo.png" alt="" /></td>' ;
echo '<td width="98%" align="left" valign="top">' ;
echo '<div><a href="'.$row["url"].'"><strong>'.$row["title"].'</strong></a></div></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td align="left" valign="top">' ;
echo '<div>' .$row["poblacion"]. '(' .$row["provincia"]. ')</div></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td colspan="4">' ;
echo '<div>' ;
echo '<table cellspacing="2" cellpadding="0" align="left">' ;
echo '<tbody>' ;
echo '<tr>' ;
echo '<td colspan="2" align="left" valign="middle">' ;
echo '<div><a href="'.$row["url"].'"><img src="'.$row["foto"].'" alt="logo" width="105" height="85" /></a></div></td>' ;
echo '</tr>' ;
echo '</tbody>' ;
echo '</table>' ;
echo '</div>' ;
echo '<div align="left" style="font-size: 10px;">'.$row["description"].'<a href="'.$row["url"].'"><img src="vermasrojo.jpg" alt="ver mas" width="80" height="18" /></a></div></td>' ;
echo '</tr>' ;
echo '</tbody>' ;
echo '</table>' ;
echo '<br />' ;
//fin del bucle
}
mysql_free_result($result)
?>

POR FAVOR AYUDA. SOCORRO!!!

GRACIAS!!!

Haz clic para ver el perfil del usuario

@man / @woman
@man / @woman

#2

Prueba el SELECT sin los paréntesis ().

Haz clic para ver el perfil del usuario

Usuario Novato
Usuario Novato

#3

Muchas gracias por responder. Lo he probado y no es eso. De hecho si quito los paréntesis me da error. Tal y como está no me da error, pero tampoco me muestra los resultados de la consulta.

¿Alguna otra idea?. Muchas gracias,

Haz clic para ver el perfil del usuario

@man / @woman
@man / @woman

#4
Escrito originalmente por jamon33

Muchas gracias por responder. Lo he probado y no es eso. De hecho si quito los paréntesis me da error. Tal y como está no me da error, pero tampoco me muestra los resultados de la consulta.

¿Alguna otra idea?. Muchas gracias,

¿ que error da sin paréntesis?

Haz clic para ver el perfil del usuario

Usuario Novato
Usuario Novato

#5
Escrito originalmente por GestionXls
Escrito originalmente por jamon33

Muchas gracias por responder. Lo he probado y no es eso. De hecho si quito los paréntesis me da error. Tal y como está no me da error, pero tampoco me muestra los resultados de la consulta.

¿Alguna otra idea?. Muchas gracias,

¿ que error da sin paréntesis?

Parse error: syntax error, unexpected ‘”‘ in /home/miusuario/public_html/wp-content/plugins/php-execution-plugin/include s/class.php_execution.php(273) : eval()’d code on line 219

Este es el error. Si le pongo paréntesis, no hace nada pero no da error. Al menos muestra todo el resto de la página.

Muchas gracias

Haz clic para ver el perfil del usuario

@man / @woman
@man / @woman

#6

Estás intentando hacer correr un script personalizado dentro de un sistema de wordpress sin tener en cuenta cuestiones de integración.

Primero asegúrate de que funcione 'solo', luego tratas los problemas de integración (si es que se dan).

En otras palabras: en el script incluye el formulario y la consulta que muestra los resultados en pantalla. Allí depuras errores, y luego integras.

Haz clic para ver el perfil del usuario

Usuario Novato
Usuario Novato

#7

Ok. tienes razón. Ya lo he hecho. Pero el resultado es el mismo. Si quito las comillas ahora me sale esto:

Parse error: syntax error, unexpected '"' in /home/jamon33/public_html/busca-provincia-categoria.php on line 221

La línea 221 es precisamente esta:

$result=mysql_query "SELECT * FROM qlweb_sites WHERE (categoria = '$categoria') AND (provincia = '$provincia') ORDER BY link_type DESC";

Y si le pongo las comillas la página se muestra perfectamente salvo por el listado de la base de datos.

Es curioso porque en otra consulta similar pero de un solo select, me va bien. Este es el código de un solo select que funciona perfecto tanto dentro de Wordpress como desde fuera como ahora siguiendo tu consejo estoy haciendo.

<?
include "conecta_bbdd.php";
//Ejecutamos la sentencia SQL
$result=mysql_query("SELECT * FROM qlweb_sites WHERE provincia = 'Madrid' ORDER BY link_type DESC");
//Mostramos los registros
while ($row=mysql_fetch_array($result))
{
AQUI MOSTRAMOS LOS RESULTADOS EN EL FORMATO DESEADO
//fin del bucle
}
mysql_free_result($result)
?>

Con esta consulta el formulario de un solo select funciona perfecto.

Alguna otra idea para resolver mi problema.

Muchas gracias por tu interés. Eres un fenómeno.

Haz clic para ver el perfil del usuario

Usuario Novato
Usuario Novato

#8
Escrito originalmente por GestionXls

Estás intentando hacer correr un script personalizado dentro de un sistema de wordpress sin tener en cuenta cuestiones de integración.

Primero asegúrate de que funcione 'solo', luego tratas los problemas de integración (si es que se dan).

En otras palabras: en el script incluye el formulario y la consulta que muestra los resultados en pantalla. Allí depuras errores, y luego integras.

Ok. tienes razón. Ya lo he hecho. Pero el resultado es el mismo. Si quito las comillas ahora me sale esto:

Parse error: syntax error, unexpected '"' in /home/jamon33/public_html/busca-provincia-categoria.php on line 221

La línea 221 es precisamente esta:

$result=mysql_query "SELECT * FROM qlweb_sites WHERE (categoria = '$categoria') AND (provincia = '$provincia') ORDER BY link_type DESC";

Y si le pongo las comillas la página se muestra perfectamente salvo por el listado de la base de datos.

Es curioso porque en otra consulta similar pero de un solo select, me va bien. Este es el código de un solo select que funciona perfecto tanto dentro de Wordpress como desde fuera como ahora siguiendo tu consejo estoy haciendo.

<?
include "conecta_bbdd.php";
//Ejecutamos la sentencia SQL
$result=mysql_query("SELECT * FROM qlweb_sites WHERE provincia = 'Madrid' ORDER BY link_type DESC");
//Mostramos los registros
while ($row=mysql_fetch_array($result))
{
AQUI MOSTRAMOS LOS RESULTADOS EN EL FORMATO DESEADO
//fin del bucle
}
mysql_free_result($result)
?>

Con esta consulta el formulario de un solo select funciona perfecto.

Alguna otra idea para resolver mi problema.

Muchas gracias por tu interés. Eres un fenómeno.

Haz clic para ver el perfil del usuario

@man / @woman
@man / @woman

#9
Escrito originalmente por jamon33

$result=mysql_query "SELECT * FROM qlweb_sites WHERE (categoria = '$categoria' AND provincia = '$provincia') ORDER BY link_type DESC";

Intenta esta (espero que no sea cosa de duendes :D ).

Si no funciona, me comienza a surgir como posible causa que sean los apóstrofes o comillas los que estén provocando el error (es decir: revisar la configuración de PHP / MySql).

Haz clic para ver el perfil del usuario

Usuario Novato
Usuario Novato

#10
Escrito originalmente por GestionXls
Escrito originalmente por jamon33

$result=mysql_query "SELECT * FROM qlweb_sites WHERE (categoria = '$categoria' AND provincia = '$provincia') ORDER BY link_type DESC";

Intenta esta (espero que no sea cosa de duendes :D ).

Si no funciona, me comienza a surgir como posible causa que sean los apóstrofes o comillas los que estén provocando el error (es decir: revisar la configuración de PHP / MySql).

Pues serán los duendes...que raro.

Lo que me mosquea es que con un solo select va de cine...¿será cosa de PHP? es decir, será que estoy haciendo algo mal para coger las variables $categoría y $provincia?. La línea de la consulta del query la tengo correcta según he comprobrado. Supongo que no me muestra resultados ni da error porque simplemente no recibe los datos de las variables. Gracias otra vez

Haz clic para ver el perfil del usuario

@man / @woman
@man / @woman

#11

Si los datos están mal, simplemente no hallaría coindicencia en la consulta y no devolvería nada.

Luego de la consulta, puedes agregar esto:

$result= mysql_query "SELECT * FROM qlweb_sites WHERE (categoria = '$categoria' AND provincia = '$provincia') ORDER BY link_type DESC";

if( $result ){

 // muestras los resultados

}else{

 echo "La consulta no halló coincidencias para [{$categoria}] y [{$provincia}].";

}

(los corchetes son sólo para delimitar los datos dentro del párrafo)

Prueba con datos conocidos (y que sepas que resultado deba devolver).

Haz clic para ver el perfil del usuario

Usuario Novato
Usuario Novato

#12

SOLUCIONADO!!!. FUNCIONA AL 100% e incluso se integra perfectamente con Wordpress.

Lo que me daba más problemas no era la consulta mysql, si no el select en html. Parece ser que la variable no la toma del "name" al igual que hacen otros valores, si no que la toma de la "id". Una vez puesto la "id" en el formulario, todo como la seda.

Muchísimas gracias por todo GestionXls, te has portado como un campeón.

Te debo una.

El código del script completo es este:

<form name="consulta" action="busca-provincia-categoria.php" method="post" enctype="multipart/form-data">
    <select name = "categoria" id="categoria" >
        <option selected value= "vestidos">Vestidos de Novia </option>
        <option value="peinados">Peinados de novia </option>
        <option value="belleza">Belleza </option>
    </select>
    <SELECT name = "provincia"  id="provincia">
          <option selected value="Acoruña">Acoruña
          <option value="Álava">Álava
          <option value="Albacete">Albacete
    </SELECT>
          <input type="submit" name="enviar" value="Enviar:" />  
</FORM>
<?
$categoria= $_POST['categoria'];
$provincia= $_POST['provincia'];
//Conexion con la base
/* conectar a base de datos */
mysql_connect("localhost","usuariobbdd", "passwbbdd") ;
   mysql_select_db("nombrebasedatos");
mysql_query("SET NAMES 'utf8'"); //esto arregla problemas de acentos al conectar la base de datos
//Ejecutamos la sentencia SQL
$result=mysql_query("SELECT * FROM clientes WHERE (categoria = '$categoria') AND (provincia = '$provincia') ORDER BY link_type DESC");
//Mostramos los registros
while ($row=mysql_fetch_array($result))
{
//inicio del bucle
echo '<table border="1" cellspacing="0" cellpadding="0" width="500" bgcolor="#FEF4F1">';
echo '<tbody>' ;
echo '<tr>' ;
echo '<td rowspan="2" align="right" valign="top"><img src="http://miweb.com/imagenes/ico-ramo.png" alt="" /></td>' ;
echo '<td width="98%" align="left" valign="top">' ;
echo '<div><a href="'.$row["url"].'"><strong>'.$row["title"].'</strong></a></div></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td align="left" valign="top">' ;
echo '<div>' .$row["poblacion"]. '(' .$row["provincia"]. ')</div></td>' ;
echo '</tr>' ;
echo '<tr>' ;
echo '<td colspan="4">' ;
echo '<div>' ;
echo '<table cellspacing="2" cellpadding="0" align="left">' ;
echo '<tbody>' ;
echo '<tr>' ;
echo '<td colspan="2" align="left" valign="middle">' ;
echo '<div><a href="'.$row["url"].'"><img src="'.$row["foto"].'" alt="logo" width="105" height="85" /></a></div></td>' ;
echo '</tr>' ;
echo '</tbody>' ;
echo '</table>' ;
echo '</div>' ;
echo '<div align="left" style="font-size: 10px;">'.$row["description"].'<a href="'.$row["url"].'"><img src="vermasrojo.jpg" alt="ver mas" width="80" height="18" /></a></div></td>' ;
echo '</tr>' ;
echo '</tbody>' ;
echo '</table>' ;
echo '<br />' ;
//fin del bucle
}
mysql_free_result($result);
?>

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Suscribir

Permisos:

TU NO PUEDES Escribir nuevos temas en este foro
TU NO PUEDES Responder a los temas en este foro
TU NO PUEDES Editar tus propios mensajes en este foro
TU NO PUEDES Borrar tus propios mensajes en este foro
Ahora son las 01:09 UTC+01:00
Ir al subforo:
Temas similares
TemaUsuariosRespuestasVisitasActividad
1850Jul/13
42kSep/11
92kOct/09
62kJul/09
12kApr/09