Buscar con select

Tengo un select que muestra las poblaciones de los clientes de una tabla en mysql, es decir, es dinámico... Lo que quiero hacer es un buscador de manera que cuando selecciono un valor del select y le de al botón enviar pues me abra la pagina2.php y me liste el nombre, dirección y teléfono de los clientes que viven en la población que se ha seleccionado en el select... Tengo los siguientes ficheros
combo.php
<body>
<?php
include 'conexión.php';
if (!$conexión) {
die('No se puede conectar: ' . Mysql_error());
}
$con="SELECT Población FROM tblclientes2 GROUP BY Población";
$res=@mysql_query($con,$conexión);
if(!$res){
echo " fallo";
}
else{
echo '<form name=miformulario method="post" action="pagina2.php">';
echo "<select name='select1'>";
while ($fila=mysql_fetch_array($res)){
echo "<option>", $fila['Población'], "</option>";
}
echo "</select>";
echo '<input type="submit" value="enviar">';
echo "</form>";
}
?>
</body>
pagina2.php
<body>
<?
$mivariable = $_POST['select1'];
$sql="Select * from tablaclientes2 where Población='$mivariable'";
$res=mysql_query($sql);
while($datos=mysql_fetch_array($res))
{
print $datos['Población']."-".$datos['Dirección']."-".$datos['Teléfono'];
}
?>
</body>
... Pero no me funciona, el select me lo rellena bien con las poblaciones de la bd y tabla tblclientes2, pero cuando le doy a enviar no me envía nada por lo que no me muestra nada... He puesto en pagina2.php un echo $mivariable; pero no me lista nada, es como si no enviase nada por post...
A ver si me puedes mirar donde está el fallo pues me tiene loco.

Respuesta
1

Prueba de la siguiente manera:

Combo

<body>
<?php
 include 'conexión.php';
 if (!$conexion) {
 die('No se puede conectar: ' . mysql_error());
 }
 $con="SELECT Poblacion FROM tblclientes2 GROUP BY Poblacion";
 $res = mysql_query($con, $conexion);
 if(!$res){
 echo " fallo";
 }
 else{
 echo "<form name='miformulario' method='post' action='pagina2.php'>";
 echo "<select name='select1'>";
 while ($fila = mysql_fetch_assoc($res)){
 echo "<option value='".$fila['Poblacion']."'>", $fila['Poblacion'], "</option>";
 }
 echo "</select>";
 echo "<input type='submit' value='enviar'>";
 echo "</form>";
 }
?>
</body>

pagina2:

<body>
<?php
 include 'conexion.php';
 if (!$conexion) {
 die('No se puede conectar: ' . mysql_error());
 }
 $sql="Select * from tablaclientes2 where Poblacion='".$_POST['select1']."'";
 $res = mysql_query($sql, $conexion);
 echo "<table>";
 echo "<tr>";
 echo "<td>POBLACION</td>";
 echo "<td>DIRECCION</td>";
 echo "<td>TELEFONO</td>";
 echo "</tr>";
 while ($fila = mysql_fetch_assoc($res)){
 echo "<tr>";
 echo "<td>".$fila['Población']."</td><td>".$fila['Dirección']."</td><td>".$fila['Teléfono']."</td>";
 echo "</tr>";
 }
 echo "</table>";
?>
</body>

Hay campos con tildes, no creo que la db este así, quitalas

gracias amigo por responder, .....he probado lo que me dices, pero me salta el siguiente error:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\puntovidrio\pagina4.php on line 23

La linea 23 tengo:

while ($fila = mysql_fetch_assoc($res)){

Te comento que todos los datos de la tabla de la base de datos son tipo varchar....por si el error se debe al tipo de datos....no lo se....

Haz que se muestre la variable $sql antes que se ejecute el mysql_query, puede colocar algo así:

Echo "sql: $sql<br>";

lo copias y lo ejecutas para verificar que sea un query valido.

Slds

el query parce valido....me sale:

sql: Select * from tablaclientes2 where Población='Badajoz'

El query es correcto porque yo he seleccionado Badajoz en el desplegable

y después me salta el error que te comento anteriormente:

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\puntovidrio\pagina4.php on line 26
La linea 26 tengo:
while ($fila = mysql_fetch_assoc($res)){

Si pero cuando ejecutas este query en la consola de mysql o en phpmyadmin, o la interfaz que utilices, si te arroja algo

Select * from tablaclientes2 where Población='Badajoz'

Mira que aparece como que Población tiene tilde y los campos no deben tener tilde

Ejecutalo

Slds

no amigo....los campos que componen la tabla "tblclientes2" no llevan tilde ninguno de ellos, ni Población, ni Dirección, ni ninguno.

¿Lo ejecutaste el query?

si lo he ejecutado....en phpadmin he ejecutado lo siguiente (sin acentos):

Select * from tblclientes2 where Población='Badajoz'

y me ha mostrado los registros que cumplen la condición "Badajoz"

Hmm no veo problema, deb ser entonces de la conexion, intenta con este fragmento de codigo para ver si nos arroja el error exacto.

<body>
<?php
 include 'conexion.php';
 if (!$conexion) {
 die('No se puede conectar: ' . mysql_error());
 }
 $sql="SELECT * FROM tablaclientes2 WHERE (poblacion='".$_POST['select1']."')";
 echo "sql: $sql<br>";
 $res = mysql_query($sql, $conexion);
 if(!$res){
 echo "fallo: ".mysql_error()."<br>";
 }
 else{
 echo "<table>";
 echo "<tr>";
 echo "<td>POBLACION</td>";
 echo "<td>DIRECCION</td>";
 echo "<td>TELEFONO</td>";
 echo "</tr>";
 while ($fila = mysql_fetch_assoc($res)){
 echo "<tr>";
 echo "<td>".$fila['Población']."</td><td>".$fila['Dirección']."</td><td>".$fila['Teléfono']."</td>";
 echo "</tr>";
 }
 echo "</table>";
 }
?>
</body>

me indicas si te retorna un error en especifico.

Slds

me salta esto:

Notice: Undefined index: select1 in C:\wamp\www\puntovidrio\combo4.php on line 16
Call Stack#TimeMemoryFunctionLocation10.0008371056{main}( )..\combo4.php:0
sql: SELECT * FROM tblclientes2 WHERE (población='')
POBLACIONDIRECCIONTELEFONO

Bueno en este caso el parámetro esta en blanco:

sql: SELECT * FROM tblclientes2 WHERE (población='')

claro que está en blanco, pues no me sale el select para poder elegir nada, me salta directamente el error cuando ejecuto combo.php

Enviame el sql de las tablas, los archivos y agrega el conexión.php

A joseph37 gmail

En 1 hora te lo retorno.

Slds

En el resultado, recorres todos los registros equivalentes con la ubicación

Y puedes hacer una tabla por cada registro, o una sola tabla y que cada tr o fila sea un registro, bueno lo del formato ya es pintura.

Slds

=============

Hola …. Muchas gracias por todo…ahora si que funciona….. menos mal, ya estaba pensando en dejarlo por imposible……gracias por tu tiempo amigo….. mil gracias….. oye una preguntita más….. cómo hacerlo para que visualmente me liste los clientes como en este formato:
http://www.kömmerling.es/red-oficial/Madrid
Es decir, que salga :
Islamiento, ahorro y eficiencia
Avda. Jose de Hierro, 66
28522 - Rivas Vaciamadrid
Madrid

1 respuesta más de otro experto

Respuesta
1

Si tienes el código tal como lo muestras aquí, entonces te falta la variable de conexión:

$sql="Select * from tablaclientes2 where Población='$mivariable'";
$res=mysql_query($sql);
while($datos=mysql_fetch_array($res))/////aqui te falta la conexión para realizar la consulta

Ve si es eso, sino seguimos buscando respuestas :)

el código lo tengo tal cual lo tienes escrito pues he hecho un copy/paste......con respecto a lo de la conexión...no te entiendo muy bien, yo en un fichero llamado conexión.php tengo:

<?php
$conexión=mysql_connect("localhost", "root");
mysql_select_db("puntovidrio",$conexión);
?>

y en combo.php tengo la linea para incluir la conexión: include 'conexión.php'

¿te refieres a poner el include también en pagina2.php?.....pues la he puesto para probar y tampoco hace nada....

explicame lo que tengo que hacer con la conexión en mi ejemplo si no es mucha molestia.....gracias.

Ok, creo que no me comprendiste.

Bueno tu me entregaste este código de la pagina 2

Pagina2.php
<body>
<?
$mivariable = $_POST['select1'];
$sql="Select * from tablaclientes2 where Población='$mivariable'";
$res=mysql_query($sql);
while($datos=mysql_fetch_array($res))
{
print $datos['Población']."-".$datos['Dirección']."-".$datos['Teléfono'];
}
?>
</body>

Entonces yo te digo que te falta la variable de conexión en la Query que estas realizando

$res=mysql_query($sql); //// aquí te falta la variable de conexión ($conexión) para que realice la consulta.

Así debería quedar:

pagina2.php
<body>
<?

inlcude"conexión.php";

$mivariable = $_POST['select1'];
$sql="Select * from tablaclientes2 where Población='$mivariable'";
$res=mysql_query($sql,$conexión);
while($datos=mysql_fetch_array($res))
{
print $datos['Población']."-".$datos['Dirección']."-".$datos['Teléfono'];
}
?>
</body>

OJO CON LOS ACENTOS QUE PONE ESTA PAGINA eso es muy importante :D

gracias amigo....pues no es eso,.....ya te he comentado que he hecho lo que me dices para probar si era....pero no es, no hace nada....estamos igual....alguna cosa mas que se te ocurra?

Podrías mandarme tus archivos para verlos y ver que sucede, si puedes darme acceso a ftp mucho mejor así voy probando :)

dame tu email y te mando los archivos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas