Sobre ocultación de más de un foro según el bloque actual (R
Sobre ocultación de más de un foro según el bloque actual (R
Pues he estado metiendole mano al tema, pero me he encontrado con un problema
En el código actual hay una variable que hace que cierto foro deseado se oculte, es $foroadmins
Pensé alegremente que cuando se hace la consulta siguiente
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads WHERE fid!='$foroadmins' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
se podría poner igual de alegremente un operador AND (AND, &&) de tal manera que se hiciera caso omiso a $foroadmins y a $foroaocultar1, $foroaocultar 2..... tal como sigue
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads WHERE fid!='$foroadmins'&&'$foroaocultar1' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
Pues no, no se puede así tal y como están las cosas
La razón es que esa consulta se hace a cierta tabla llamada $table_threads y por tanto hay dos soluciones a esto
A) Intentar de alguna manera que ese QUERY se haga en bucle, es decir, que lea el fid 1 a ocultar, el 2, el 3 y todos los que hayan
B) Abrir una nueva tabla específica para el foro a ocultar, tal que $table_thread_a_ocultar en la base de datos y hacer una consulta paralela tal como sigue
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads WHERE fid!='$foroadmins' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads_a_ocultar WHERE fid!='$foroaocultar1' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
......
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads_a_ocultar WHERE fid!='$foroaocultarN' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
Yo sé hacer la opción B pero es altamente delicada. El portal tiene 8 megas de base de datos, y cagarla en un detalle, alguna llamada incorrecta o alterar la estructura de las tablas del Xforum es bastante delicado y bastante fácil de producirse, especialmente para alguien con nivel básico en estos temas como yo
Es por tanto deseable intentar sin abrir tablas nuevas (jugar sólo a hacer llamadas a las ya existentes) y mediante un bucle que permita excluir más foros. Es decir, la opción A.
Pero a esta opción yo al menos no sé como meterle mano, las combinaciones básicas AND y con otros operadores lógicos no me han sido fructíferas y al final sólo se ocultaba el primer foro a ser ocultado que se leía en la consulta
Si alguien sabe como meterle mano a esto que me lo comunique como respuesta a este post o que directamente curre en el código fuente del bloque, que es libre de ser descargado
http://x.arkania.org/devel/block-XForum_E_mod_CG.zip
en esa dirección
Un saludo
En el código actual hay una variable que hace que cierto foro deseado se oculte, es $foroadmins
Pensé alegremente que cuando se hace la consulta siguiente
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads WHERE fid!='$foroadmins' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
se podría poner igual de alegremente un operador AND (AND, &&) de tal manera que se hiciera caso omiso a $foroadmins y a $foroaocultar1, $foroaocultar 2..... tal como sigue
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads WHERE fid!='$foroadmins'&&'$foroaocultar1' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
Pues no, no se puede así tal y como están las cosas
La razón es que esa consulta se hace a cierta tabla llamada $table_threads y por tanto hay dos soluciones a esto
A) Intentar de alguna manera que ese QUERY se haga en bucle, es decir, que lea el fid 1 a ocultar, el 2, el 3 y todos los que hayan
B) Abrir una nueva tabla específica para el foro a ocultar, tal que $table_thread_a_ocultar en la base de datos y hacer una consulta paralela tal como sigue
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads WHERE fid!='$foroadmins' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads_a_ocultar WHERE fid!='$foroaocultar1' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
......
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads_a_ocultar WHERE fid!='$foroaocultarN' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
Yo sé hacer la opción B pero es altamente delicada. El portal tiene 8 megas de base de datos, y cagarla en un detalle, alguna llamada incorrecta o alterar la estructura de las tablas del Xforum es bastante delicado y bastante fácil de producirse, especialmente para alguien con nivel básico en estos temas como yo
Es por tanto deseable intentar sin abrir tablas nuevas (jugar sólo a hacer llamadas a las ya existentes) y mediante un bucle que permita excluir más foros. Es decir, la opción A.
Pero a esta opción yo al menos no sé como meterle mano, las combinaciones básicas AND y con otros operadores lógicos no me han sido fructíferas y al final sólo se ocultaba el primer foro a ser ocultado que se leía en la consulta
Si alguien sabe como meterle mano a esto que me lo comunique como respuesta a este post o que directamente curre en el código fuente del bloque, que es libre de ser descargado
http://x.arkania.org/devel/block-XForum_E_mod_CG.zip
en esa dirección
Un saludo
- superlopez
- Mensajes: 1896
- Registrado: Mar 30 Jul, 2002 02:00
- Ubicación: Buscando villanos
No se, o no lo he entendido bien o para mi que lo estas haciendo al reves.
Si haces:
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads WHERE fid!='$foroadmins' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
Visualizas unicamente los hilos del foro $foroadmin.
Si lo que quieres es ocultarlo tendrias que poner:
WHERE fid!<>'$foroadmins'
No que sea igual si no diferente, o sea se ven el resto de foros y ese se lo salta.
Por lo tanto para ocultar varios:
WHERE fid!<>'$foroadmins' AND fid!<>'$foroaocultar1' AND fid!<>'$foroaocultar2' .........
(No se si la sintaxis del AND será correcta y habría que poner el '&&' en lugar del AND)
Me bajo el código y lo miro un poco, saludos.
[Editado el 21/2/2003 por superlopez]
Si haces:
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads WHERE fid!='$foroadmins' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
Visualizas unicamente los hilos del foro $foroadmin.
Si lo que quieres es ocultarlo tendrias que poner:
WHERE fid!<>'$foroadmins'
No que sea igual si no diferente, o sea se ven el resto de foros y ese se lo salta.
Por lo tanto para ocultar varios:
WHERE fid!<>'$foroadmins' AND fid!<>'$foroaocultar1' AND fid!<>'$foroaocultar2' .........
(No se si la sintaxis del AND será correcta y habría que poner el '&&' en lugar del AND)
Me bajo el código y lo miro un poco, saludos.
[Editado el 21/2/2003 por superlopez]
Última edición por superlopez el Dom 28 Sep, 2003 06:58, editado 1 vez en total.
- carbayonjovial
- Mensajes: 743
- Registrado: Dom 10 Nov, 2002 01:00
-
- Mensajes: 182
- Registrado: Mar 23 Jul, 2002 02:00
Partiendo de mis escasos conocimientos de mySQL y las pocas pruebas que he podido hacer con PHP:
Yo entiendo que la expresión de malaga 26 es correcta: "Busca esto donde el campo fid no sea el del foro de administración (el resto)".
Para añadir (que no aparezca otro foro) yo lo he hecho siempre añadiendo AND, como dice superlopez, pero con espacios entre una expresión y otra: WHERE fid!='$loquesea1' AND fid!='loquesea2'
Yo entiendo que la expresión de malaga 26 es correcta: "Busca esto donde el campo fid no sea el del foro de administración (el resto)".
Para añadir (que no aparezca otro foro) yo lo he hecho siempre añadiendo AND, como dice superlopez, pero con espacios entre una expresión y otra: WHERE fid!='$loquesea1' AND fid!='loquesea2'
Creo haber dado con la tecla, y realmente no se quien ha sugerido esta sintaxis en estos momentos, porque he probado 40 combinaciones jejeje
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads WHERE fid<>'$foroadmins' AND fid<>'$hidefidone' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
Nótese que <> y != son equivalentes
Seguiré informando
$query = mysql_query("SELECT views, tid, subject, lastpost, dateline, replies, author, icon, fid FROM $table_threads WHERE fid<>'$foroadmins' AND fid<>'$hidefidone' ORDER BY lastpost Desc LIMIT 0, $posts") or die(mysql_error());
Nótese que <> y != son equivalentes
Seguiré informando
- superlopez
- Mensajes: 1896
- Registrado: Mar 30 Jul, 2002 02:00
- Ubicación: Buscando villanos