Foros del Web » Programando para Internet » PHP »

es humano hacer esto? xD

Estas en el tema de es humano hacer esto? xD en el foro de PHP en Foros del Web. Código PHP: <?php $query  =  "SELECT * FROM respuestas WHERE id_tema='$id_tema' ORDER BY id_resp DESC LIMIT 20" ; $result =  mysql_query ( $query , $conexion ); while ( $respuesta_array = mysql_fetch_array ( $result )){ $result2 =  mysql_query ...
  #1 (permalink)  
Antiguo 11/01/2008, 19:44
 
Fecha de Ingreso: enero-2008
Ubicación: en Punta Arenas
Mensajes: 47
Antigüedad: 12 años, 1 mes
Puntos: 0
es humano hacer esto? xD

Código PHP:
<?php

$query 
"SELECT * FROM respuestas WHERE id_tema='$id_tema' ORDER BY id_resp DESC LIMIT 20";
$resultmysql_query($query,$conexion);
while (
$respuesta_array=mysql_fetch_array($result)){
$result2mysql_query("SELECT * FROM usuarios WHERE nick='$respuesta_array[nick]'",$conexion);
$user =mysql_fetch_array($result2);
echo 
"$respuesta_array[respuesta], <b><a href=../profile.php?nick=$respuesta_array[nick]>$respuesta_array[nick]</a></b> 
| $user[email]<br>"
;
}

?>
esto me funciona bien con todo el demas codigo, pero queria saber si esto puede causar relentizacion de la carga de la pagina o algo por el estilo...
Lo que ise hay fue
seleccionar de una tabla las respuestas de un tema, y dentro del while que genera todas las respuestas, puse otra consulta, que es para que seleccione los datos del usuario que respondio

no se me ocurrio ninguna otra forma de seleccionar los datos del usuario que responde algun tema ;|
  #2 (permalink)  
Antiguo 11/01/2008, 19:54
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 13 años, 6 meses
Puntos: 70
Re: es humano hacer esto? xD

Hola luckxhor...

Yo lo he hecho algunas veces... Quizás no sea la forma mas eficiente, pero creo que los que programamos estructurado no tenemos muchas opciones.

En objetos quizás haya una mejor forma

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 11/01/2008, 20:46
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 16 años, 9 meses
Puntos: 60
De acuerdo Re: es humano hacer esto? xD

Yo lo haria juntando los datos de las dos tablas, en la consulta.. algo asi..

Código PHP:
<?php

$query 
"
SELECT respuestas.*,usuarios.nick FROM respuestas 
JOIN usuarios ON respuestas.nick = usuarios.nick
WHERE id_tema='$id_tema' ORDER BY id_resp DESC LIMIT 20"
;
$resultmysql_query($query,$conexion);
while (
$respuesta_array=mysql_fetch_array($result)){
echo 
$respuesta_array['respuesta'].", <b><a href=../profile.php?nick=".$respuesta_array['nick'].">".$respuesta_array['nick']."</a></b> 
| "
.$user['email']."<br>";
}

?>
Aunque funcionaria mejor si lo que ligara las dos tablas fuera un id y no el nombre de usuario.. por que si quisieran cambiar el nombre de usuario.. se perderian todas sus respuestas.. en fin eso es cuestion de diseño de cada quien..

Saludos
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #4 (permalink)  
Antiguo 11/01/2008, 20:46
 
Fecha de Ingreso: enero-2008
Ubicación: en Punta Arenas
Mensajes: 47
Antigüedad: 12 años, 1 mes
Puntos: 0
Re: es humano hacer esto? xD

pero no relentiliza el rendimiendo de la pagina la hace mas lenta o algo por el estilo?
  #5 (permalink)  
Antiguo 11/01/2008, 20:51
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 16 años, 9 meses
Puntos: 60
Re: es humano hacer esto? xD

Pues, creo que consumiria mas memoria llamar dos veces a mysql que hacer una sola consulta bien estructurada.. tambien creo que cuesta más para el CPU comparar dos string que dos enteros..
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #6 (permalink)  
Antiguo 11/01/2008, 20:53
 
Fecha de Ingreso: enero-2008
Ubicación: en Punta Arenas
Mensajes: 47
Antigüedad: 12 años, 1 mes
Puntos: 0
Re: es humano hacer esto? xD

Cita:
Iniciado por _ssx Ver Mensaje
Yo lo haria juntando los datos de las dos tablas, en la consulta.. algo asi..

Código PHP:
<?php

$query 
"
SELECT respuestas.*,usuarios.nick FROM respuestas 
JOIN usuarios ON respuestas.nick = usuarios.nick
WHERE id_tema='$id_tema' ORDER BY id_resp DESC LIMIT 20"
;
$resultmysql_query($query,$conexion);
while (
$respuesta_array=mysql_fetch_array($result)){
echo 
$respuesta_array['respuesta'].", <b><a href=../profile.php?nick=".$respuesta_array['nick'].">".$respuesta_array['nick']."</a></b> 
| "
.$user['email']."<br>";
}

?>
Aunque funcionaria mejor si lo que ligara las dos tablas fuera un id y no el nombre de usuario.. por que si quisieran cambiar el nombre de usuario.. se perderian todas sus respuestas.. en fin eso es cuestion de diseño de cada quien..

Saludos
Hola, gracias por responder...
trate de entender eso de JOIN (nunca lo e usado, soy nuevo en esto de php)
y no logre entender mucho

SELECT respuestas.*,usuarios.nick FROM respuestas
JOIN usuarios ON respuestas.nick = usuarios.nick
WHERE id_tema='$id_tema' ORDER BY id_resp DESC LIMIT 20";

En esta parte: respuestas.*,usuarios.nick me podrias explikar para que se pone de esa forma? con los putos (.) y el *
y la segunda linea igual
JOIN usuarios ON respuestas.nick = usuarios.nick
me lo podrias explicar porfavor?
gracias :D
  #7 (permalink)  
Antiguo 11/01/2008, 21:12
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 16 años, 9 meses
Puntos: 60
Re: es humano hacer esto? xD

Claro, mira cuando haces un SELECT en mysql tu puedes especificar que quieres que "SELECCIONE", cuando haces una consulta generalmente Todos nos mal acostumbramos a usar el clasico

Código PHP:
"SELECT * FROM tabla" 
Sin embargo esto esta mal si solamente de la tabla vas a utilizar un campo.. ejemplo solo el campo respuestas.. sabiendo que en tu tabla tal vez tengas 20 Tipos de campo.. como podrian ser id_mensaje , respuesta, leido, fecha, hora, etc etc..

Si solo te sirve el campo respuesta para que mandar a llamar todos.. eso es lo que hace el * , entonces si solo me interesa de mi tabla respuestas el campo respuesta solo selecciono ese y gano rapidez y performance en mi aplicación ya que no gastas recursos inecesarios.. ahora.. haces esto..

Código PHP:
"SELECT tabla.campo1,tabla.campo2,tabla2.campo1.. tablaN.campoN FROM TablaPrincipal 
Si en verdad requieres todos los datos de una tabla pero de la otra solo requieres uno.. por eso lo hice asi.. de la tabla 1 traeme todo, y de la tabla dos solo uno..

Código PHP:
"SELECT tabla.*,tabla2.soloUnCampo FROM TablaPrincipal 
Donde tabla principal, es en realidad la tabla interesada de la que disponemos sacar datos.. sin embargo en el select puedes especificar otros campos de otras tablas si es que tienen una relacion.. en tu caso el nick.. para eso usamos esto..

Código PHP:
"JOIN tabla2 ON tabla1.campoEnComun = tabla2.campoEnComun" 
Asi tendras unidas las dos tablas como si fueran una sola y relacionaras Solo los datos necesarios y por consecuencia solo tendras lo necesario y ganaras rendimiento... Espero haber sido claro.. si no pregunta :D.. y date una vuelta por bases de datos tienen mucha info que te puede servir mucho para diseñar bases de datos poderosas... y escalables..
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #8 (permalink)  
Antiguo 11/01/2008, 21:30
 
Fecha de Ingreso: enero-2008
Ubicación: en Punta Arenas
Mensajes: 47
Antigüedad: 12 años, 1 mes
Puntos: 0
Re: es humano hacer esto? xD

muchas gracias tu explikacion mas la de esta pagina http://www.monografias.com/trabajos7/sql/sql.shtml
me an sido de mucha ayuda, muchas graciass :D

y el codigo lo deje asi:

Código PHP:
$query "SELECT respuestas.*,usuarios.* FROM respuestas 
INNER JOIN usuarios ON respuestas.nick = usuarios.nick
WHERE id_tema='$id_tema' ORDER BY id_resp DESC LIMIT 20"

aunque le voy a hechar otra leida porque no vi cual es la diferencia entre INNET JOIN y JOIN xD

Bueno eso
Muchas muchas gracias de nuevi :D

Lo cambie otra vez y lo deje asi:

$query = "SELECT * FROM respuestas
INNER JOIN usuarios ON respuestas.nick = usuarios.nick
WHERE id_tema='$id_tema' ORDER BY id_resp DESC LIMIT 20";

Última edición por luckxhor; 11/01/2008 a las 21:36
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 22:46.