Foros del Web » Programando para Internet » PHP »

buscar en base datos

Estas en el tema de buscar en base datos en el foro de PHP en Foros del Web. Hola! Estoy creando un buscador con php pero no consigue que me de los resultados y me tiene un poco desesperada! Mi base de datos ...
  #1 (permalink)  
Antiguo 25/11/2010, 10:49
 
Fecha de Ingreso: noviembre-2010
Mensajes: 101
Antigüedad: 13 años, 5 meses
Puntos: 0
buscar en base datos

Hola! Estoy creando un buscador con php pero no consigue que me de los resultados y me tiene un poco desesperada!

Mi base de datos es "basedatos" y mi Tabla "peliculas". Dentro tengo solo dos columnas: "idpelicula" y "titulo" como se muestra:



La idea de mi buscador es que cuando se ponga "007" aparezcan todas las de 007 e incluso otras peliculas que tengan 007 en su titulo.

Lo he intentado mil veces y no lo consigo. Este es mi formulario creado:

Código HTML:
 <form id="form1" name="form1" method="post" action="http://localhost/buscarpelicula.php">
    <p>Search Profile:
      <label>
        <input type="text" name="buscar" id="buscar2" />
      </label>
    <input type="submit" name="search" id="search" value="Search" />
</form></div> 
y mi PHP "buscarpelicula.php" como marco es el siguiente:

Código PHP:
<?php

//"si $buscar no esta definida..."
if(!isset($buscar)) {
    echo 
"Debe especificar una cadena a buscar";
    echo 
"</html></body> \n";
    exit;
}

    
$link=mysql_connect("localhost","miusuario","micontraseña");
    
mysql_select_db("basedatos",$link);

    
$result=mysql_query("SELECT titulo FROM peliculas WHERE titulo LIKE '%$buscar%',$link);

   while ($row = mysql_fetch_array ($result))
   {
      print ("
<TR>");
      print ("
<TD>$row[idpelicula]</TD>n");
      print ("
<TD>$row[titulo]</TD>n"."<br>");
      print ("
</TR>");        
    }
    mysql_free_result($result);

?>
Con este primero me da este error:
Parse error: syntax error, unexpected '>' in C:\xampp\htdocs\buscarpelicula.php on line 18

Y es raro porque las lineas que señala las he usado antes para mostrar resultados (que no buscar) y me daba bien!

Y con este segundo, con el que tampoco me sale...

Código PHP:
<?php

//"si $buscar no esta definida..."
if(!isset($buscar)) {
    echo 
"Debe especificar una cadena a buscar";
    echo 
"</html></body> \n";
    exit;
}

    
$link=mysql_connect("localhost","miusuario","micontraseña");
    
mysql_select_db("basedatos",$link);


    
$result mysql_query("SELECT * FROM peliculas WHERE titulo LIKE '%$buscar%' ORDER BY titulo"$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["idpelicula"]."</td> \n"
            echo 
"<td>".$row["titulo"]."</td> \n"
            echo 
"</tr> \n"
      } while (
$row mysql_fetch_array($result)); 
            echo 
"</table> \n"
    } else { 
    echo 
"¡ No se ha encontrado ningún registro !"

?>
Con este me sale todo el rato y ponga lo que ponga "Debe especificar una cadena a buscar" (es como si no leyera lo de abajo...

Alguien sabe por que me pasa esto?

PD: una duda... debo poner "LIKE '%$buscar%'" o "LIKE '%$search%'" ?? el name o la id?
  #2 (permalink)  
Antiguo 25/11/2010, 10:56
 
Fecha de Ingreso: enero-2009
Ubicación: Neiva, Huila
Mensajes: 196
Antigüedad: 15 años, 3 meses
Puntos: 2
Respuesta: buscar en base datos

primero...

el error es por que te falta cerrar las comillas

mal-----> $result=mysql_query("SELECT titulo FROM peliculas WHERE titulo LIKE '%$buscar%',$link);
bien---->$result=mysql_query("SELECT titulo FROM peliculas WHERE titulo LIKE '%".$buscar."%'",$link);


lo segundo...no entiendo de donde la variable $search si estas usando es buscar....
pero cambiala de esta manera...haber que tal te va

$result = mysql_query("SELECT * FROM peliculas WHERE titulo LIKE '%".$buscar."%' ORDER BY titulo", $link);
  #3 (permalink)  
Antiguo 25/11/2010, 11:01
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: buscar en base datos

donde asignas el valor a $buscar??? o ahi que asumir que ya lo hiciste??
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #4 (permalink)  
Antiguo 25/11/2010, 11:12
 
Fecha de Ingreso: noviembre-2010
Mensajes: 101
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: buscar en base datos

Cita:
Iniciado por naciostars Ver Mensaje
primero...

el error es por que te falta cerrar las comillas

mal-----> $result=mysql_query("SELECT titulo FROM peliculas WHERE titulo LIKE '%$buscar%',$link);
bien---->$result=mysql_query("SELECT titulo FROM peliculas WHERE titulo LIKE '%".$buscar."%'",$link);


lo segundo...no entiendo de donde la variable $search si estas usando es buscar....
pero cambiala de esta manera...haber que tal te va

$result = mysql_query("SELECT * FROM peliculas WHERE titulo LIKE '%".$buscar."%' ORDER BY titulo", $link);
Lo he intentado con los dos y ahora ya no me da errores! pero todo el rato me dice
"Debe especificar una cadena a buscar"...

sigue sin buscar xD
  #5 (permalink)  
Antiguo 25/11/2010, 11:14
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: buscar en base datos

claro por que $buscar no existe, vuelvo y pregunto donde asignas el valor a $buscar???

o donde la defines????

ya hiciste esto??

Código PHP:
Ver original
  1. $buscar=$_POST["buscar"];
si??
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #6 (permalink)  
Antiguo 25/11/2010, 11:17
 
Fecha de Ingreso: noviembre-2010
Mensajes: 101
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: buscar en base datos

Cita:
Iniciado por malakian Ver Mensaje
donde asignas el valor a $buscar??? o ahi que asumir que ya lo hiciste??
no lo he asignado... a mi tambien me parecia raro pero en cualquier tutorial no lo asignan...

De todas formas lo he intentado poniendo arriba del todo:

$buscar= $_POST['buscar'];

y tampoco me salia...
  #7 (permalink)  
Antiguo 25/11/2010, 11:19
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: buscar en base datos

y esto??

Código PHP:
Ver original
  1. if(isset($_POST["buscar"])) {
  2.    $buscar=$_POST["buscar"];
  3. }else{
  4. echo "Debe especificar una cadena a buscar";
  5.     echo "</html></body> \n";
  6.     exit;
  7. }
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #8 (permalink)  
Antiguo 25/11/2010, 11:20
 
Fecha de Ingreso: noviembre-2010
Mensajes: 101
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: buscar en base datos

ahoraa!!! gracias! el problema eran las dobles comitas... lo q me han hecho sufrir!

era... $buscar=$_POST["buscar"];
y no... $buscar=$_POST['buscar"'];

una tonteria q me ha dado dolor de cabeza...
gracias malakian
  #9 (permalink)  
Antiguo 25/11/2010, 12:12
 
Fecha de Ingreso: noviembre-2010
Mensajes: 101
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: buscar en base datos

Hola de nuevo. El primer codigo ya me funciona... pero ahora tengo problemas con el segundo... Lo que intento es que cuando no haya me diga lo de "No se ha encontrado nada"

Código PHP:

$buscar
=$_POST["buscar"];

if(!isset(
$buscar)) {
    echo 
"Debe especificar una cadena a buscar";
    echo 
"</html></body> \n";
    exit;
}

    
$link=mysql_connect("localhost","user","pass");
    
mysql_select_db("basedatos",$link);


    
$result=mysql_query("SELECT titulo FROM peliculas WHERE titulo LIKE 

'%"
.$buscar."%'",$link);

    if (
$row mysql_fetch_array($result)){ 
        while (
$field mysql_fetch_field($result)){ 
            echo 
"<td>$field->titulo</td> \n"
        }do{
        print (
"<TR>");
              print (
"<TD>$row[idpelicula]</TD>\n");
              print (
"<TD>$row[titulo]</TD>\n"."<br>");
            print (
"</TR>");
    } while (
$row mysql_fetch_array($result)); 

    }else{
        echo 
"No se ha encontrado nada";
    } 

Pues bien... el "No se ha encontrado nada" funciona.
Y tambien me busca bien.

El problema es que cuando le doy a buscar dejando el campo vacío... me aparecen toda la lista de peliculas. Es decir, el "Debe especificar una cadena a buscar" ya no funciona...
  #10 (permalink)  
Antiguo 25/11/2010, 12:45
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: buscar en base datos

psss mira yo lo haria con JavaScript, pero tratandose de PHP colocaria un condicional preguntando si $buscar es igual a que no escribieron nada osea "",entonces que se salga o que no haga nada...
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #11 (permalink)  
Antiguo 25/11/2010, 13:14
Avatar de alejandra_plana  
Fecha de Ingreso: noviembre-2010
Ubicación: Madrid
Mensajes: 25
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: buscar en base datos

Cita:
Iniciado por malakian Ver Mensaje
y esto??

Código PHP:
Ver original
  1. if(isset($_POST["buscar"])) {
  2.    $buscar=$_POST["buscar"];
  3. }else{
  4. echo "Debe especificar una cadena a buscar";
  5.     echo "</html></body> \n";
  6.     exit;
  7. }
Pero has intentado esto que te dice malakian??? así debería funcionar.
  #12 (permalink)  
Antiguo 25/11/2010, 13:20
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: buscar en base datos

Saludos

Código PHP:
Ver original
  1. if(!isset($buscar) OR $buscar=="") {
  2.     echo "Debe especificar una cadena a buscar";
  3.     echo "</html></body> \n";
  4.     exit;
  5. }
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #13 (permalink)  
Antiguo 25/11/2010, 13:26
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: buscar en base datos

Cita:
Iniciado por Nano_ Ver Mensaje
Saludos

Código PHP:
Ver original
  1. if(!isset($buscar) OR $buscar=="") {
  2.     echo "Debe especificar una cadena a buscar";
  3.     echo "</html></body> \n";
  4.     exit;
  5. }
exelente respuesta de Nano_ pero....
No se deberia cerrar el body primero..
aclaro! no es error de Nano_
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #14 (permalink)  
Antiguo 25/11/2010, 13:36
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: buscar en base datos

Saludos

Es mi opinión no debería haber código html ahi de hecho esta mal ejejejej el programa se ejecutara igual pero no se debería programar de esa forma, ahí que tratar de separar lo posible el html del código php y utilizar correctamente las etiquetas html ya que muchas veces lo dejamos en un segundo plano pero ya cuando se empieza a trabajar sobre varios navegadores y con un grupo de diseño es bueno tratar de empezar ordenamente!. Solo es un consejo claro esta

Hasta Pronto!
__________________
:.:Nano.:: @nano_hard - Retornando al foro

Etiquetas: Ninguno
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 21:55.