|
Foros
creacion de bloque ultimas fotos de My_eGallery
|
Autor
|
Fecha: 22 de Diciembre del 2006 a las 11:20:32
Descripción: Ninguna
|
Sexo: Masculino
Edad: 21 años
Ubicación: Poza Rica, Veracruz
País:
Mensajes: 1278
|
| rubensaid escribió: | Yo usualmente solia trabajar con una sola y pues al ver esto no sabia que hacer y nose que hacer...
|
Lo siguiente no lo digo por ti... hay decenas, o quizas miles de personas que hacen bloques y modulos... supuestamente saben, pero se enredan con cosas simples... ello me causa gracia, aunque el asunto va más allá, porque hablan sin saber, y varias de mi creaciones las tratan como si se tratasen de clones de otras (ejemplo: Juegos Online)... y eso me molesta, pero bueno.
Haber, lo que tienes que hacer es algo llamado join sql... se trata de unir el contenido de dos tablas con un query, o en otras palabras, obtener información de una sola vez, pero de diferentes tablas. Solo para facilitarte el entendimiento... join significa unir o unión...
Tu habias mencionado, que estas acostumbrado a hacer un solo query, para obtener información de la bd... eso es algo simple... aunque el join es un tanto más complejo, pero útil e incluso es la base de los foros phpBB...
Hay diferentes tipos de joins, asi que tendrías que escoger el que más se ajuste a tus necesidades... supongo que un left join estaria bien...
Si quieres, puedes postear los dos queries necesarios... y yo realizo el join por ti
Saludos
|
|
|
|
Autor
|
Fecha: 23 de Diciembre del 2006 a las 13:10:23
Descripción: es que...
|
Sexo: Masculino
Edad: 16 años
Ubicación: Lima - Perú
País:
Mensajes: 16
|
Hola, primero solo aclarar algo, no quiero que creas que soy un fanfaron o que me jacto de lo que nose. Yo se que mis conocimientos son muy pocos y casi sin fundamentos para explicar lo que hago con los codigos solo dije eso porque deveras nunca habia trabajo con eso de unir tablas.
Respecto a tu trabajo yo no creo que sean clones, al contrario yo pienso que tu debes saber mucho de esto y no dudo de tu capacidad y habilidad, es por eso es que pregunte en estos foros porque se que me puedes ayudar.
Bueno ahora sobre tu post entendi mas o menos, pero me sirvio de algo (el aprender que se podia hacer eso) pero no en el codigo. Aca te dejo el codigo que de hecho esta mal porque nose ni que esoty haciendo hay espero que me ayudes porfavor.
Código 
<?php
if (eregi("block-Ultimas_fotos.php",$_SERVER['PHP_SELF'])) {
Header("Location: ../index.php");
die();
}
global $db, $prefix;
$content = "<marquee behavior='scroll' direction='up' height='200'scrollamount='2' scrolldelay='20' onmouseover='this.stop()' onmouseout='this.start()'>";
$resiult = $db->sql_query("SELECT * FROM ".$prefix."_gallery_categories");
while($srow = $db->sql_fetchrow($resiult)) {
$bid = intval($srow['gallid']);
$don = stripslashes($row['galloc']);
$result = $db->sql_query("SELECT * FROM ".$prefix."_gallery_pictures ORDER BY pid DESC LIMIT 0,20");
while($row = $db->sql_fetchrow($result)) {
$id = intval($row['pid']);
$img = stripslashes($row['img']);
$name = stripslashes($row['name']);
$galid = stripslashes($row['gid']);
$content .= "<img
src="modules/My_eGallery/gallery/$don/$img" border="0" width="140">";
$content .= "$name";
}
}
$content .= "</marquee>";
?>
Creo que ese codigo no se bien aca te dejo el archivo block-Ultimas_fotos.zip
porfa
|
|
|
|
Autor
|
Fecha: 23 de Diciembre del 2006 a las 13:38:54
Descripción: Ninguna
|
Sexo: Masculino
Edad: 21 años
Ubicación: Poza Rica, Veracruz
País:
Mensajes: 1278
|
Jajaja... te dije que eso no lo dije por ti... eso me trajo cosas a la mente y nada más... pero bueno, eso es otra cosa.
Si esta mal... y el código no es bueno... son dos bucles anidados y seguro se ejecutaran muchas veces, quizas ciento... y por cada categoria estas haciendo una llamada a la bd...
Imagina esto, tienes 100 categorias de imagenes y 100 imagenes... el bucle principal se ejecutará 100 veces, y se harán 100 llamadas a la bd (lo cual es demasiado)... encima de hecho el bucle secundario se ejecutará otras 100 veces, ya que son 100 imagenes... haciendo cuentas...
Llamadas a la bd: 101 (1 de bucle principal, 100 del secundario)
Ejecuciones de bucles: 100 x 100 = 10000 (ejecuciones principales del while, por secundarias)
Y las cosas empeoran, pues si ese es un bloque izquierdo... que se vea más que otro... te consumira bastantes recursos, junto con los que consume el php-nuke... 10 usuarios o poco más (depende del servidor), podrian hacer que tu web fuera lento... te llegarian reportes de que tu web consume muchos recursos y que si no haces algo, te suspenderán la web... y bueno... y eso con suerte, porque en servidor gratuito, te podrian cerrar la web.
Eso podria hacerse, con 1 llamada a la bd y no 101... y 100 ejecuciones del bucle while o for, y no 10000... eso es optimización, y hacer bien las cosas. 
En un momento haré el join... Aclaro, que el join tambien se puede hacer con 2 llamadas a la bd por separado, pero quizas sea aún más complejo, en algunos casos...
Saludos
|
|
|
|
Autor
|
Fecha: 23 de Diciembre del 2006 a las 15:44:52
Descripción: Ninguna
|
Sexo: Masculino
Edad: 21 años
Ubicación: Poza Rica, Veracruz
País:
Mensajes: 1278
|
Bueno... espero que este bien, no lo he probado, ni las tablas tengo... y hacerlas pues... naaa 
Si no funciona, me das las tablas necesarias... con algunos datos para no batallar metiendo yo...
Código 
$bid = intval($srow['gallid']);
$id = intval($row['pid']);
$galid = stripslashes($row['gid']);
La variable $bid no es necesario evaluarla como un entero, debido a que muy probablemente la base de datos tiene sobreentendido que cada dato que vaya en el campo gallid, es un entero, y si no lo es, me parece que pone 0, o el valor por defecto... asi que lo elimino... y le siguen otros datos inecesarios, que por supuesto tambien elimine... tienen tambien sus errores pero bueno...
Haber, lo único que necesitas de nuke_gallery_categories es el campo "galloc" que corresponde al directorio... su id no la necesitas para nada... otra razón más para haber borrado la variable $bid anteriormente mencionada...
Entonces... solo se tienen que enlistar las imagenes requeridas... al parecer 20 y al mismo tiempo se debe obtener el directorio... ok.
Código 
<?php
if (eregi("block-Ultimas_fotos.php",$_SERVER['PHP_SELF'])) {
Header("Location: ../index.php");
die();
}
global $db, $prefix;
$content = "<marquee behavior='scroll' direction='up' height='200'scrollamount='2' scrolldelay='20' onmouseover='this.stop()' onmouseout='this.start()'>";
$result = $db->sql_query("SELECT ngp.name, ngp.img, ngc.galloc FROM ".$prefix."_gallery_pictures AS ngp LEFT JOIN ".$prefix."_gallery_categories AS ngc ON ngp.gip = ngc.gallid ORDER BY ngp.pid DESC LIMIT 0,20");
while($row = $db->sql_fetchrow($result)) {
$don = stripslashes($row['galloc']);
$img = stripslashes($row['img']);
$name = stripslashes($row['name']);
$content .= "<img src="modules/My_eGallery/gallery/$don/$img" border="0" width="140">";
$content .= $name;
}
$content .= "</marquee>";
?>
Saludos
|
|
|
|