Foros del Web » Programando para Internet » PHP »

Duda con query

Estas en el tema de Duda con query en el foro de PHP en Foros del Web. A ver si me ayudan un poco. Quiero realizar un buscador para mi Foro. La cosa es que quiero hacerlo parecido al de aqui(FDW), o ...
  #1 (permalink)  
Antiguo 11/07/2004, 18:50
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Duda con query

A ver si me ayudan un poco. Quiero realizar un buscador para mi Foro. La cosa es que quiero hacerlo parecido al de aqui(FDW), o sea que el usuario pueda seleccionar mas de un Foro en donde buscar a la vez. Ahora si mi Forum tuviese solamente dos Foros digamos PHP y MySQL la cosa fuera muy fácil. Pues solo sería algo como esto:
Código PHP:
 if($_POST['foro']==1){
  
//busco en los post y respuestas del foro 1
 
}elseif($_POST['foro']==2){
  
//busco en los post y respuestas del foro 2
 

pero imaginense que ahora mi tabla tuviera 30 Foros (así lo habia hecho inicialmente) cuantos if o elseif no tuviera que hacer. Entonces lo que quiero saber es si existe alguna forma de hacer la consulta general, o sea, que no dependa del numero de foros donde el usuario quiera realizar su busqueda. Ademas la tabla puede estar sujeta a que en cualquier momento se adicionen o se eliminen foros. Lo otro que no se es que he puesto un select con seleccion multiple para que el usuario elija uno o mas foros donde buscar entonces no se como este envia los valores desde el formulario, si es en forma de array o que cosa porque cada foro tiene un valor distinto para la opcion seleccionada.

Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 11/07/2004, 19:34
 
Fecha de Ingreso: octubre-2003
Mensajes: 152
Antigüedad: 20 años, 6 meses
Puntos: 2
Parece que lo estas viendo de otra forma, como estan hechas tus tablas?

Para busqueda por un foro unico
Código PHP:
$sql "SELECT * FROM tabla_mensajes WHERE idforo='$id_foro'"
donde:
$id_foro : es una variable enviada del formulario de busqueda
idforo : pertenece a la tabla mensajes y esta relacionada a tabla foros.

Para hacer busquedas por multiples foros

en el formulario tendrias que crear una lista de formularios

Código HTML:
<select name="listaforos[]" size="6" multiple="multiple">
<? 
//bucle de foros
 ?>
<option value="<?  //id de los foros
  ?>"><?  // valores de los foros
?></option>
            </select> 
y esto en el archivo de proceso php, solamente lo controloas con un bucle
Código PHP:
$tmp_sql="";
for(
$i=0;$i<count($listaforos)-1;$i++)
{
  
$tmp_sql.="idforo=".$listaforos[$i]." OR ";
}

$tmp_sql.=$listaforos[$i];

$sql "SELECT * FROM tabla_mensajes WHERE ".$tmp_sql
Al menos esa es la Idea

Espero que te sirvan

Última edición por edwinmc; 11/07/2004 a las 19:37
  #3 (permalink)  
Antiguo 11/07/2004, 20:39
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Mas o menos

Mas o menos entendi lo que me explicas. La duda que me queda es la siguiente, cuando dices esto:
Cita:
//bluce de foros
a que te refieres a esta parte:
Código PHP:
$query "select * from foros where active<>0 order by presentation_order";
  
$result mysql_query($query) or die("No se pudo ejecutar la consulta $query. MySQL ha dicho: ".mysql_error());
  while(
$show=mysql_fetch_assoc($result)){
   echo 
"<option value='".$show['idforo']."'>".$show['title']."</option>";
  } 
pues ahi obtengo todos los foros

Pues mis tablas estan hechas de la siguiente forma:
CategoriaForo: idcat(llave)
Foro: idforo (llave), idcat(llave foranea)
Preguntas: idpregunta(llave), idforo(llave foranea), idcat(llave foranea)
Respuestas: idrespuesta(llave), idpregunta(llave foranea), idforo(llave foranea), idcat(llave foranea)

así puedo ir sabiendo a que categoria y foro pertenecen las preguntas y respuestas.

Salu2
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 11/07/2004, 21:44
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
estas repitiendo campos sin necesidad. Si Un foro pertenece a una cierta categoría, y una pregunta corresponde a cierto foro, entonces no es necesario que las preguntas tengan un id de categoria ya que va implicito en el id de foro. Asi mismo las respuestas, las respuestas solo necesitan el idpregunta, por que sabiendo a que pregunta corresponden, ya sabes a que foro y a que categoria.

un saludo
  #5 (permalink)  
Antiguo 13/07/2004, 08:38
 
Fecha de Ingreso: octubre-2003
Mensajes: 152
Antigüedad: 20 años, 6 meses
Puntos: 2
Bucle de foros significa que haras una consulta y imprimiras todos los resultados pertenecientes a los foros.
_______________

Utiliza una seleccion multiple para que no redundes en campos.

sql = "SELECT * FROM tabla_categorias,tabla_foros,tabla_mensajes WHERE tabla_categorias.cate_id=tabla_foros=cate_id AND tabla_foros.foro_id = tabla_mensajes.foro_id";


Asi podras saber a que foro y categoria pertenece el foro.
__________________
Mamani Calderón, Edwin Fredy
Ingeniería de Sistemas www.gruposistemas.com
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 17:48.