Foros del Web » Programando para Internet » PHP »

Mi buscador CASI funciona

Estas en el tema de Mi buscador CASI funciona en el foro de PHP en Foros del Web. Después de muchos intentos, al fin conseguí que al menos me muestre resultados, el problema es que me muestra TODA la tabla y no el ...
  #1 (permalink)  
Antiguo 18/03/2004, 09:21
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 4 meses
Puntos: 0
Mi buscador CASI funciona

Después de muchos intentos, al fin conseguí que al menos me muestre resultados, el problema es que me muestra TODA la tabla y no el registro específico que le solicito.

este es mi buscador:

Código PHP:
<HTML>
<HEAD>
<TITLE>Buscar.php</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Buscar un libro en la Base de Datos</h1>
<br>
<?
echo '<FORM METHOD="POST" FORM ACTION="resultados.php">';
?>
<br>
<b>Buscar por Título del Libro<b><br>
<INPUT TYPE="TEXT" NAME="titulo"><br>
<br>
<b>Buscar por Autor(es)<b><br>
<INPUT TYPE="TEXT" NAME="autor"><br>
<br>
<b>Buscar por Materia<b><br>
<INPUT TYPE="TEXT" NAME="materia"><br>
<br>
<b>Buscar por Colección<b><br>
<INPUT TYPE="TEXT" NAME="coleccion"><br>
<br>
<b>Buscar por ISBN<b><br>
<INPUT TYPE="TEXT" NAME="isbn"><br>
<br>
<b>Buscar por Fecha de Edición<b><br>
<INPUT TYPE="TEXT" NAME="fecha"><br>
<br>
<b>Buscar por Estado del Libro<b><br>
<INPUT TYPE="TEXT" NAME="estado"><br>
<br>
<b>Buscar por Precio del Libro<b><br>
<INPUT TYPE="TEXT" NAME="precio"><br>
<br>
<br>
<INPUT TYPE="SUBMIT" value="Buscar">
</FORM>
<br>


</BODY>
</HTML>



y este es el resultados.php

Código PHP:
<? 
$conexio 
mysql_connect("localhost","xxxxxx","xxxxxx");
mysql_select_db ("xxxxxx"$conexio) OR die ("No se puede conectar");
$sql="SELECT * FROM stock";
$result=mysql_query($sql,$conexio);

if (
$rowmysql_fetch_array($result))
{
   echo 
"<TABLE BORDER='1'>";
   echo 
"<TR><TD>Titulo</TD><TD>Autor</TD><TD>Materia</TD><TD>Colección</TD><TD>ISBN</TD><TD>Fecha</TD><TD>Estado</TD><TD>Comentarios</TD><TD>Precio</TD></TR>";
   DO
   {
    echo 
"<TR><TD>".$row["titulo"]."</TD><TD>".$row["autor"]."</TD><TD>".$row["materia"]."</TD><TD>".$row["coleccion"]."</TD><TD>".$row["isbn"]."</TD><TD>".$row["fecha"]."</TD><TD>".$row["estado"]."</TD><TD>".$row["comentarios"]."</TD><TD>".$row["precio"]."</TD></TR>";
   }
   WHILE (
$row=mysql_fetch_array($result));
   echo 
"</TABLE>";
}
?>
  #2 (permalink)  
Antiguo 18/03/2004, 09:37
Avatar de dan_arg  
Fecha de Ingreso: marzo-2002
Mensajes: 110
Antigüedad: 22 años, 1 mes
Puntos: 0
seria interesante saber cual es tu problema
  #3 (permalink)  
Antiguo 18/03/2004, 09:58
 
Fecha de Ingreso: marzo-2004
Ubicación: Zaragoza
Mensajes: 28
Antigüedad: 20 años, 1 mes
Puntos: 0
Si te das cuenta no recoges ninguna variable de las que envias desde el formulario, además de seleccionar todos los campos de la tabla stocks:
Código PHP:
$sql="SELECT * FROM stock"
con lo que el formulario no sirve para nada.
El formulario lo puedes hacer completamente en html, no es necesario que pongas <? echo""; ?>


Saludos...vichu
__________________
Si su paciente se empieza a sentir mejor sin causa aparente, no descarte la curación.
(Ley de Murphy para médicos)
  #4 (permalink)  
Antiguo 18/03/2004, 10:21
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 4 meses
Puntos: 0
te refieres a que debo colocar algo así

Código PHP:
$query "SELECT * from $tabla WHERE titulo LIKE '%$titulo%' OR autor LIKE '%$autor%' OR materia LIKE '%$materia%' OR coleccion LIKE '%$coleccion%' OR isbn LIKE '%$isbn%' OR fecha LIKE '%$fecha%' OR estado LIKE '%$estado%'"
  #5 (permalink)  
Antiguo 18/03/2004, 13:38
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 4 meses
Puntos: 0
no estoy seguro de que asi funcione
  #6 (permalink)  
Antiguo 18/03/2004, 23:46
 
Fecha de Ingreso: marzo-2004
Ubicación: Zaragoza
Mensajes: 28
Antigüedad: 20 años, 1 mes
Puntos: 0
De la forma que tú dices funcionará pero si el usuario deja algún campo del formulario en blanco te devolverá todos los registros de la tabla.

No sé si me he explicado bien o si se me entiende...

Pongo un ejemplo:
- no se rellena el campo titulo --> $titulo=''
- al recoger la variable y sustituirla en el query --> ... WHERE titulo LIKE '%%' ...
- devuelve todos los registros porque busca por titulo cualquiera

Una solución es:
Código PHP:
...
if (
$_POST['$titulo'] != ""$titulo "%$titulo%";
// lo mismo con todas las variables

$sql="SELECT * FROM palabrario WHERE vulgar LIKE '$vulgar' OR ... ";
$result=mysql_query($sql,$conexio);
... 
De esta forma:
- si se rellena el campo en el formulario --> $titulo='%$titulo%' --> ... WHERE titulo LIKE '%$titulo%' ...
- si se deja en blanco --> $titulo='' --> ... WHERE titulo LIKE '' ...

Espero que te sirva.


Saludos...vichu
__________________
Si su paciente se empieza a sentir mejor sin causa aparente, no descarte la curación.
(Ley de Murphy para médicos)
  #7 (permalink)  
Antiguo 19/03/2004, 08:01
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 4 meses
Puntos: 0
Muchas gracias.... a ver que me sale!
  #8 (permalink)  
Antiguo 20/03/2004, 15:09
 
Fecha de Ingreso: marzo-2004
Ubicación: gualeguauychu
Mensajes: 25
Antigüedad: 20 años
Puntos: 3
Bien hay pude resolvertu problema

mira aqui te pego el fuente:

<?
echo '<FORM METHOD="POST" FORM ACTION="">';
?>
<INPUT NAME="nombre" TYPE="TEXT" id="nombre">
<br>
<br>
<br>
<INPUT TYPE="SUBMIT" value="Buscar">
</FORM>
<br>

<?php
if (!isset($nombre)){
echo "Debe especificar una cadena a bucar";
echo "</html></body> \n";
exit;
}
$link = mysql_connect("localhost", "user", "pass");
mysql_select_db("db_nombre", $link);
$result = mysql_query("SELECT * FROM tabla WHERE nombre LIKE '%$nombre%' ORDER BY nombre", $link);
if ($row = mysql_fetch_array($result)){
echo "<table border = '1'> \n";
//Mostramos los nombres de las tablas
echo "<tr> \n";
while ($field = mysql_fetch_field($result)){
echo "<td>$field->name</td> \n";
}
echo "</tr> \n";
do {
echo "<tr> \n";
echo "<td>".$row["id"]."</td> \n";
echo "<td>".$row["nombre"]."</td> \n";
echo "<td>".$row["direccion"]."</td> \n";
echo "<td>".$row["telefono"]."</td> \n";
echo "<td><a href='mailto:".$row["email"]."'>".$row["email"]."</a></td> \n";
echo "</tr> \n";
} while ($row = mysql_fetch_array($result));
echo "</table> \n";
} else {
echo "¡ No se ha encontrado ningún registro !";
}
?>


saludo

castro david
www.viacero.com
  #9 (permalink)  
Antiguo 20/03/2004, 18:44
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 21 años, 4 meses
Puntos: 0
vaya, muchas gracias!!!!!!!!!!!!!! voy a probarlo de inmediato...
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:10.