Foros del Web » Programando para Internet » PHP »

Terminar buscador

Estas en el tema de Terminar buscador en el foro de PHP en Foros del Web. Estoy terminando un buscador mediante bd. He subido las tablas a la bd y el buscador funciona. Hago una consulta y me devuelve el número ...
  #1 (permalink)  
Antiguo 12/03/2012, 12:56
 
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 125
Antigüedad: 8 años, 6 meses
Puntos: 2
Terminar buscador

Estoy terminando un buscador mediante bd.

He subido las tablas a la bd y el buscador funciona. Hago una consulta y me devuelve el número de coincidencias para esa tabla.
El problema es que no me imprime el resultado.

Me explico: si hay 2 coincidencias quiero que me muestre la fila de cada coincidencia, es decir la tabla con las filas que contienen esas 2 coincidencias

Código PHP:
<?
if ($_POST['buscador'])

$buscar $_POST['palabra'];


if(empty(
$buscar))
{
echo 
"No se ha ingresado una cadena a buscar";
}else{

$con=mysql_connect("servidor","usuario","contraseña");
$sql "SELECT * FROM tabla WHERE Nombre like '%$buscar%' ORDER BY id DESC";
mysql_select_db("nombre"$con); 

$result mysql_query($sql$con); 

$total mysql_num_rows($result);


if (
$row mysql_fetch_array($result)){ 
echo 
"Resultados para: <b>$buscar</b>";
do { 
?>
<p><b><a href="nombre.php?id=<?=$row['Nombre'];?>"><?=$row['id'];?></a></b></p>
<?
} while ($row mysql_fetch_array($result)); 
echo 
"<p>Resultados: $total</p>";
} else { 

echo 
"No se encontraron resultados para: <b>$buscar</b>"
}
}
}
?>
Gracias
  #2 (permalink)  
Antiguo 12/03/2012, 13:18
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 9 años, 6 meses
Puntos: 21
Respuesta: Terminar buscador

es que ya lo estas utilizando el mysql_fetch_array() por primera ves en el IF, y ya no puedes utlilizarla nuevamente.

en ves de :

Código PHP:
Ver original
  1. if ($row = mysql_fetch_array($result)){

podrias utilizar :

Código PHP:
Ver original
  1. if ($total>0){
  #3 (permalink)  
Antiguo 12/03/2012, 13:42
 
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 125
Antigüedad: 8 años, 6 meses
Puntos: 2
Respuesta: Terminar buscador

Cita:
Iniciado por xxxivanxxx Ver Mensaje
es que ya lo estas utilizando el mysql_fetch_array() por primera ves en el IF, y ya no puedes utlilizarla nuevamente.

en ves de :

Código PHP:
Ver original
  1. if ($row = mysql_fetch_array($result)){

podrias utilizar :

Código PHP:
Ver original
  1. if ($total>0){
Gracias a esto ahora sí que me aparecen los resultados, pero únicamente el campo Nombre y la tabla contiene columna Nombre, Id, Ciudad, etc. ¿Como hago para que aparezcan todas las variables de la tabla que coincidan con la búsqueda, todas las columnas en forma de tabla?

Creo que el problema es la variable row pero todavía no la domino.
  #4 (permalink)  
Antiguo 12/03/2012, 15:10
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 11 años, 4 meses
Puntos: 175
Respuesta: Terminar buscador

lo mismo que hiciste con las variable del array NOMBRE y ID...
<?=$row['ciudad'];?> solo debes cambiar por el nombre de tu campo de la base de datos
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #5 (permalink)  
Antiguo 12/03/2012, 16:11
 
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 125
Antigüedad: 8 años, 6 meses
Puntos: 2
Respuesta: Terminar buscador

Vale, ahora sí. Lo único dos cosas:

- Al hacer cualquier búsqueda aparece al principio un guión que enlaza a la página del href, porque? como quitarlo?

- Ahora sí que aparecen los campos, pero aparecen juntos. Como hacer para que aparezcan en forma de tabla como estan en la bd? Supongo que será css, no domino ese lenguaje.
  #6 (permalink)  
Antiguo 12/03/2012, 18:11
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 9 años, 6 meses
Puntos: 21
Respuesta: Terminar buscador

bueno si quieres que aparesca en tabla pues la creas :D:


Código PHP:
Ver original
  1. <?
  2. echo "<table><tr>";
  3. do {
  4. ?>
  5. <td><?=$row['id'];?></td><td><?=$row['Nombre'];?></td>
  6. <?
  7. } while ($row = mysql_fetch_array($result));  
  8. echo "</tr></table>"
  9. ?>
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #7 (permalink)  
Antiguo 13/03/2012, 08:44
 
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 125
Antigüedad: 8 años, 6 meses
Puntos: 2
Respuesta: Terminar buscador

Cita:
Iniciado por xxxivanxxx Ver Mensaje
bueno si quieres que aparesca en tabla pues la creas :D:


Código PHP:
Ver original
  1. <?
  2. echo "<table><tr>";
  3. do {
  4. ?>
  5. <td><?=$row['id'];?></td><td><?=$row['Nombre'];?></td>
  6. <?
  7. } while ($row = mysql_fetch_array($result));  
  8. echo "</tr></table>"
  9. ?>
Vale, y he añadido más cosas para que cada fila quedara en una línea. Ahora mis preguntas son:
- Como hago para que aparezca la primera fila en los resultados? Es decir, la fila que dice, esta columna es Nombre, esta es Id, esta es Ciudad. Porque al hacer la búsqueda solo aparecen los resultados y no la referencia.

- Como hago para personalizar la tabla? Porque por ejemplo he intentado añadir alguna línea entre celdas (<TABLE BORDER="1">), o algún color, pero no encuentro en que parte del código tengo que introducir esos valores. He probado en el echo "<table><tr>"; pero no funciona.

Gracias
  #8 (permalink)  
Antiguo 13/03/2012, 11:35
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 9 años, 6 meses
Puntos: 21
Respuesta: Terminar buscador

para que aparesca el titulo de cada columna agrega una 1 fila asi:

Código PHP:
Ver original
  1. <?
  2.     echo "<table border="1">";
  3.     echo "<tr><td>ID</td><td>Nombre</td></tr>";
  4.     do {
  5.     ?>
  6.     <tr><td><?=$row['id'];?></td><td><?=$row['Nombre'];?></td></tr>
  7.     <?
  8.     } while ($row = mysql_fetch_array($result));  
  9.     echo "</table>"
  10.     ?>
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #9 (permalink)  
Antiguo 13/03/2012, 12:29
 
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 125
Antigüedad: 8 años, 6 meses
Puntos: 2
Respuesta: Terminar buscador

Cita:
Iniciado por xxxivanxxx Ver Mensaje
para que aparesca el titulo de cada columna agrega una 1 fila asi:
Gracias por tu ayuda. Ya está quedando perfecta, lo único no se porque me aparece una fila en blanco, es decir, el espacio de la fila y de cada celda sin nada escrito, entre la fila del título y la siguiente. Te pongo la parte del código donde creo está el error que no logró solucionar:

Código PHP:
echo "<table border="1">";
echo "<tr><td>Nombre</td><td>Id</td></tr>";
do { 
?>
<tr><td><a href="nombre<?=$row['ID'];?>.htm"><?=$row['Nombre'];?></td><td><?=$row['ID'];?></td></tr>
<?
} while ($row mysql_fetch_array($result));  
echo 
"</table>";
}
  #10 (permalink)  
Antiguo 13/03/2012, 12:51
Avatar de xxxivanxxx  
Fecha de Ingreso: julio-2010
Ubicación: /home
Mensajes: 114
Antigüedad: 9 años, 6 meses
Puntos: 21
Respuesta: Terminar buscador

pues creo que es, por que estas trabajando con el do{}while();, por eso a la primera vez no tiene ningun valor y lo deja vacio.. dejalo asi:

Código PHP:
Ver original
  1. <?
  2. echo "<table border="1">";
  3.     echo "<tr><td>ID</td><td>Nombre</td></tr>";
  4.     while ($row = mysql_fetch_array($result)){
  5.     ?>
  6.     <tr><td><?=$row['id'];?></td><td><?=$row['Nombre'];?></td></tr>
  7.     <?
  8.     }  
  9.     echo "</table>"
  10.    ?>
__________________
<?="Hello World"?> -> si te gustÓ dale +1
  #11 (permalink)  
Antiguo 17/03/2012, 18:37
 
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 125
Antigüedad: 8 años, 6 meses
Puntos: 2
Respuesta: Terminar buscador

Tengo enlazado un radio button a la búsqueda y funciona, pero he pensado añadir también un option que determine el Order by.

He hecho esto y la búsqueda la realiza pero no la ordena en función del option, que hay mal? como lo soluciono?

Código PHP:
$respuesta $_POST['escribir']; // el radio button
$ordenar $_POST['ordenar']; // el option

if ($respuesta == "respuesta1") { // si selecciona la primera opción del radio button

$buscar $_POST['palabra']; // buscará la palabra que escriba el usuario

$con=mysql_connect("localhost","usuario","contraseña");
$sql "SELECT * FROM tabla WHERE Nombre like '%$buscar%' ORDER BY '%$ordenar%' ASC"// buscará en la tabla "tabla" en la columna "nombre" la palabra que haya escrito en "buscar" y se ordenará  por el option de "ordenar" que haya seleccionado
mysql_select_db("base"$con); 

$result mysql_query($sql$con); 

$total mysql_num_rows($result);

// y seguría para imprimir resultados
y se repetiría dependiendo la opción del radio que seleccionase 
Dejo el option también:
Código HTML:
<select name="ordenar">
<option value="Name">Nombre</option>
<option value="Id">Id</option>
</select> 

Última edición por ph20; 17/03/2012 a las 18:47

Etiquetas: mysql, sql, tabla, terminar, buscadores, usuarios
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 01:24.