Foros del Web » Programando para Internet » PHP »

busqueda en php

Estas en el tema de busqueda en php en el foro de PHP en Foros del Web. Mi duda es la siguiente: Estoy haciendo una web con php y una BD y mi intencion es crear un pequeño formulario para realizar una ...
  #1 (permalink)  
Antiguo 01/08/2004, 13:02
 
Fecha de Ingreso: junio-2004
Mensajes: 232
Antigüedad: 13 años, 6 meses
Puntos: 0
busqueda en php

Mi duda es la siguiente:
Estoy haciendo una web con php y una BD y mi intencion es crear un pequeño formulario para realizar una busqueda en mi BD (creo q es algo comun). Pues bien, me creo el formulario (donde supuestamente se ha de introducir el nombre de un grupo de musica en un campo de texto). La palabra q introduzco la meto en una variable y esta variable es la q voy comparando con el campo "nombre" de mi BD y muestro los resultados tal q asi (no se si el codigo está bien o no):

<?
//recojo las variables del formulario de Probar.html (la palabra a buscar en mi base de datos
$buscador=$_POST["buscador"];
//conexion con la base de datos
mysql_connect("localhost","USER","CLAVE");
//sentencia SQL
$result=mysql_db_query("viking","select nombre,id_grupo from grupo where nombre like '%$buscador%'");
?>

Pero claro se puede dar el caso de q hayan dos grupos q se llamen igual y entonces me va a mostrar varios resultados (registros). Lo q yo quiero es q si hay dos o mas resultados en la busqueda, me muestre los nombres de los grupos q han coincidido con la busqueda a modo de enlace y esos enlaces me lleven a una pagina PHP con la informacion detallada del grupo. Pero si por el contrario solo me encuentra un resultado que coincide con la busqueda, me envie directamente a una pagina PHP q ya tengo creada con la informacion detallada del grupo.
No se si me he explicado bien pero por si acaso aqui os pongo una direccion de una pagina web q hace esto q digo:

http://www.metal-archives.com/

Si alguien me puede echar un cable ......
Gracias.
  #2 (permalink)  
Antiguo 01/08/2004, 18:35
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
Pues lo que pides sería una cosa así. Despues de hacer tu consulta a la base de datos compruebas el número de grupos que te ha devuelto:

$numGrupos=mysql_num_rows($result);

Después dependiendo del número haces una cosa u otra:


if (empty($numGrupos)){
echo "no existe ningún grupo con ese nombre en la base de datos";
}
else if($numGrupos==1){
$rowGrupo = mysql_fetch_assoc($result)
header("location:infoGrupo.php?id=".$rowGrupo["id_grupo"]);
exit();
}else{
while ($rowGrupo= mysql_fetch_assoc($result)){
echo "<a href='infoGrupo.php?id=".$rowGrupo["id_grupo"]."'>".$rowGrupo["nombre"]."</a>";
}
}

más o menos sería hacer una cosa así
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #3 (permalink)  
Antiguo 02/08/2004, 06:56
 
Fecha de Ingreso: junio-2004
Mensajes: 232
Antigüedad: 13 años, 6 meses
Puntos: 0
Una preguntita... para q sirve ese header()?
Y ya puestos donde puedo encontrar un sitio donde me indiquen los comandos q se utilizan en php?
  #4 (permalink)  
Antiguo 02/08/2004, 07:17
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
ese header en concreto lo que hace es redireccionarte a una dirección url. En este caso a infoGrupo.php
Para encontrar todo sobre los métodos de php lo mejor es ir a la documentación oficial http://www.php.net
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #5 (permalink)  
Antiguo 02/08/2004, 07:42
 
Fecha de Ingreso: junio-2004
Mensajes: 232
Antigüedad: 13 años, 6 meses
Puntos: 0
Precisamente en la linea del headers me da un error:

Parse error: parse error, unexpected T_STRING in c:\inetpub\wwwroot\php\buscar2.php on line 26
  #6 (permalink)  
Antiguo 02/08/2004, 08:00
 
Fecha de Ingreso: junio-2004
Mensajes: 232
Antigüedad: 13 años, 6 meses
Puntos: 0
perdon ese no era el error .... era este :

Warning: Cannot modify header information - headers already sent by (output started at c:\inetpub\wwwroot\php\buscar2.php:8) in c:\inetpub\wwwroot\php\buscar2.php on line 27
  #7 (permalink)  
Antiguo 02/08/2004, 08:07
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 13 años, 6 meses
Puntos: 2
Pues supongo que justamente es por el error que te da en la línea 26. No puedes hacer un header si previamente hay algún tipo de salida html. Es este caso al imprimirse el error de la línea 26, en la línea 27 el header te devuelve ese error puesto que ha habido una salida de datos. Cuando soluciones el error de la línea 26 se te solucionará el del header.
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #8 (permalink)  
Antiguo 02/08/2004, 08:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Observación:

Exactamente la función header() de PHP sólo permite "lanzar/enviar" cabeceras HTTP al cliente (navegador en estos casos) .. El parámetro de "header()" .. en el ejemplo ese tal "Location" será el efecto que haga al ejecutarlo (lanzar/enviar) dicha cabecera al cliente. En el caso concreto de "Location" es un redireccionamiento: indica al navegador "cambia la página que estás viendo por la que te digo ...". Pero, no sólo se usa header() para este fin .. se usa también para indicar cosas como: "Los datos que te voy a enviar son de tipo binario y es una imagen jpg" .. o "Esto que te envio es para que lo descargues no para que lo interpretes" ... etc.

Un saludo,
  #9 (permalink)  
Antiguo 02/08/2004, 08:43
 
Fecha de Ingreso: junio-2004
Mensajes: 232
Antigüedad: 13 años, 6 meses
Puntos: 0
He solucionado el error de la 26 pero me sigue mostrando el error de la 27
  #10 (permalink)  
Antiguo 02/08/2004, 09:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Como te comentó living ...

En la línea 8 de buscar2.php tienes algo de HTML, un espacio o un echo "algo" o un salto de línea ahí que no debería estar.

Si pones el código completo veremos como organizar tu código (HTML/PHP) para que no suceda esto.

Un saludo,
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 15:07.