Foros del Web » Programando para Internet » PHP »

Comparacion entre bases de datos

Estas en el tema de Comparacion entre bases de datos en el foro de PHP en Foros del Web. sabes que encontre una forma mucho mas facil de hacerlo, pero como siempre, nada es perfecto y me falta un pequeñiiiiiiisimo detalle y es que ...

  #31 (permalink)  
Antiguo 16/09/2010, 18:59
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Comparacion entre bases de datos

sabes que encontre una forma mucho mas facil de hacerlo, pero como siempre, nada es perfecto y me falta un pequeñiiiiiiisimo detalle y es que seleccione tambien mis comentarios, lo hice de la siguiente forma:

Código PHP:
mysql_select_db("friend_news");

$c"select amigos.*,news.* from amigos,news where amigos.usuario='".$_SESSION['usuario']."' and news.usuario1=amigos.usuario2 and news.usuario1='".$_SESSION['usuario']."'";
$rmysql_query($c);
$nummysql_num_rows($r);
echo 
$c;
echo 
"<br>";
for (
$i=0;$i<$num;$i++)
{
$rowmysql_fetch_array($r);

echo (
$row['usuario1'])."<br>";


pero que pasa, si en la consulta que esta hecha:
Código PHP:
$c"select amigos.*,news.* from amigos,news where amigos.usuario='".$_SESSION['usuario']."' and news.usuario1=amigos.usuario2 and news.usuario1='".$_SESSION['usuario']."'"
le saco el ultimo and (and news.usuario1='".$_SESSION['usuario']."') me funciona perfecto!!!
o sea me muestra todos los comentarios que hayan mis amigos, pero no los mios ((
y si le agrego esa ultima partecita, directamente no me muestra nada!!!
porque puede estar pasando eso??
yo estuve chequeando y aparentemete esa consulta esta bien hecha, pero no se porque pasa eso....


Cita:
Iniciado por carlos_belisario Ver Mensaje
vas a cambiar esto

por esto
Código PHP:
Ver original
  1. $user=$_SESSION['usuario'];
  2. $c1="select * from news where usuario IN ($user,$campo)";
de manera que ahora la variable de sesion esta dentro de la variable $user a ver si te estaba trayendo problemas has un copy paste y me dices saludos
  #32 (permalink)  
Antiguo 16/09/2010, 19:15
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Comparacion entre bases de datos

se me acaba de ocurrir una forma de hacerlo y no seguir complicandome, y es la siguiente:
si con la consulta que realice, sin agregarle el ultimo and me mostraba todos los comentarios que hacen mis amigos "menos" los mios, entonces se me acaba de ocurrir algo simple, que es que automaticamente cuando alguien se registra lo ingrese como su propio amigo automaticamente en la base "amigos" de este modo, cuando muestre los comentarios de mis amigos, como yo soy mi propio amigo tambien mostrara los mios!
  #33 (permalink)  
Antiguo 16/09/2010, 20:09
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Comparacion entre bases de datos

pero cuando alguien vea tus amigos no vas a salir tu mismo es extraño o no ??? otra cosa la consulta que te di te dio ese error??
otra duda
Cita:
Código PHP:
Ver original
  1. $user=$_SESSION['usuario'];
  2.       $c1="select * from news where usuario IN ($user,$campo)";
fijate aki pregunto por usuario pero en la consulta que acabas de poner preguntas por usuario1 entonces cual es el campo por el que debes preguntar
si tu haces esto
Código PHP:
Ver original
  1. $user=$_SESSION['usuario'];
  2.       $c1="select * from news where usuario1 IN ($user,$campo)";
no te deberia de decir eso ya que lo que dices esta tomando como que si tu usuario fuera una columna verifica bien a ver
esta consulta
Cita:
$c= "select amigos.*,news.* from amigos,news where amigos.usuario='".$_SESSION['usuario']."' and news.usuario1=amigos.usuario2 and news.usuario1='".$_SESSION['usuario']."'";
$r= mysql_query($c);
el usuario1 son tus a migos o no??? entonces no puedes preguntar por ti mismo de echo creo que obviando este te deberia de dar xq ya estas relacionando la consulta que sea el mismo usuario
deberia de quedar asi entonces
Código PHP:
Ver original
  1. $c= "select amigos.*,news.* from amigos,news where amigos.usuario='".$_SESSION['usuario']."' and news.usuario1=amigos.usuario2 and amigos.usuario=news.usuario";
si te fijas la relacion la haces en amigos.usuario que eres tu sea igual a news.usuario que eres tu tambien segun tengo entendido o no es asi??
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #34 (permalink)  
Antiguo 16/09/2010, 20:25
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Comparacion entre bases de datos

estaba pensando justamente eso, y se me ocurrio que dentro del loop, puedo poner por ejemplo un:
if ($usuario1==$_SESSION['usuario'])
echo "";
  #35 (permalink)  
Antiguo 16/09/2010, 20:32
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Comparacion entre bases de datos

el usuario1 eres tu en amigos??? puedes volver a detallar tu base de datos que la cambiaste y decir a q corresponde cada campo por lo menos el de los usuarios ya que te di al final creo que una solucion con lo que tienes pero no estoy seguro de haberte dicho bien los campos saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #36 (permalink)  
Antiguo 16/09/2010, 20:33
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Comparacion entre bases de datos

estuve probando, y haciendo esta consulta:

Cita:
$c= "select amigos.*,news.* from amigos,news where amigos.usuario='".$_SESSION['usuario']."' and news.usuario1=amigos.usuario2 and amigos.usuario=news.usuario1";
me devuelve solamente apustilnik (o sea yo)
Cita:
Iniciado por carlos_belisario Ver Mensaje
pero cuando alguien vea tus amigos no vas a salir tu mismo es extraño o no ??? otra cosa la consulta que te di te dio ese error??
otra duda

fijate aki pregunto por usuario pero en la consulta que acabas de poner preguntas por usuario1 entonces cual es el campo por el que debes preguntar
si tu haces esto
Código PHP:
Ver original
  1. $user=$_SESSION['usuario'];
  2.       $c1="select * from news where usuario1 IN ($user,$campo)";
no te deberia de decir eso ya que lo que dices esta tomando como que si tu usuario fuera una columna verifica bien a ver
esta consulta

el usuario1 son tus a migos o no??? entonces no puedes preguntar por ti mismo de echo creo que obviando este te deberia de dar xq ya estas relacionando la consulta que sea el mismo usuario
deberia de quedar asi entonces
Código PHP:
Ver original
  1. $c= "select amigos.*,news.* from amigos,news where amigos.usuario='".$_SESSION['usuario']."' and news.usuario1=amigos.usuario2 and amigos.usuario=news.usuario";
si te fijas la relacion la haces en amigos.usuario que eres tu sea igual a news.usuario que eres tu tambien segun tengo entendido o no es asi??
  #37 (permalink)  
Antiguo 16/09/2010, 20:37
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Comparacion entre bases de datos

si como no,mira:
en la base "amigos" usuario= yo, usuario2=mis amigos
en la base "news" usuario1= todos los usuarios que publiquen cosas
(se me ocurrio ponerle usuario1 en la base news, para que no haya dos campos con el mismo nombre, aunque sean distintas tablas, para poder realizar la consulta select, de forma clara)

Cita:
Iniciado por carlos_belisario Ver Mensaje
el usuario1 eres tu en amigos??? puedes volver a detallar tu base de datos que la cambiaste y decir a q corresponde cada campo por lo menos el de los usuarios ya que te di al final creo que una solucion con lo que tienes pero no estoy seguro de haberte dicho bien los campos saludos
  #38 (permalink)  
Antiguo 16/09/2010, 20:47
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Comparacion entre bases de datos

bueno no estoy seguro de la relacion de la base de datos pero bueno prueba esto
Código PHP:
Ver original
  1. $c="SELECT * from amigos,news WHERE amigos.usuario='".$_SESSION['user']."' AND amigos.usuario=news.usuario1 AND amigos.usuario2=news.usuario1";
te la explico estas seleccionando * de amigo,news donde sea tu usuario y tu usuario este en news y tus amigos esten en news segun lo escrito pruebalo y ve si te resulta
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #39 (permalink)  
Antiguo 16/09/2010, 21:03
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Comparacion entre bases de datos

lo probe y no muestra nada, pero no te hagas dramas, ya que logre solucionarlo del modo que te comentaba anteriormente, o sea haciendo la siguiente consulta:

Cita:
$a= "select amigos.*,news.* from amigos,news where amigos.usuario='".$_SESSION['usuario']."' and news.usuario=amigos.usuario2";
renombre el campo usuario1 de la tabla "news" y lo cambie por usuario
y haciendo la consulta de arriba, logro que me muestre todos los comentarios que hacen mis amigos y los mios (siempre que yo este incluido entre mis propios amigos)
entonces lo ke hice fue, que en la pagina de registro al sitio, hago un insert de mi mismo a la base amigos, y cuando llegue a la pagina donde se muestran mis amigos (ya que todavia no la arme) mediante un if, voy a hacer que solo se muestren todos mis amigos, que no sea yo mismo, con esas modificaciones va para adelante todo esto.
me da cosa ya seguir molestandote con tantas consultas, no quiero abusar de tu paciencia jeje
te mando un gran abrazo y desde ya por supuesto muchas gracias por todas las explicaciones, el tiempo y sobre todo la paciencia, seguimos en contacto.
Cita:
Iniciado por carlos_belisario Ver Mensaje
bueno no estoy seguro de la relacion de la base de datos pero bueno prueba esto
Código PHP:
Ver original
  1. $c="SELECT * from amigos,news WHERE amigos.usuario='".$_SESSION['user']."' AND amigos.usuario=news.usuario1 AND amigos.usuario2=news.usuario1";
te la explico estas seleccionando * de amigo,news donde sea tu usuario y tu usuario este en news y tus amigos esten en news segun lo escrito pruebalo y ve si te resulta
  #40 (permalink)  
Antiguo 16/09/2010, 21:33
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Comparacion entre bases de datos

sabes que es lo unico que me da error (obviamente no podiiia ser todo perfecto, ay dios...)
que cuando en la consulta pongo al final order by id desc, me tira un error, me tira el siguiente error, y no entiendo porque:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/tipsnet.com.ar/htdocs/news.php on line 162
  #41 (permalink)  
Antiguo 16/09/2010, 21:36
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Comparacion entre bases de datos

depura la consulta y di que error te muestra siempre acostumbrate a esto ya que eso te esta dando un problemas en el num_rows y es x lo que recibe del query
acostumbra a esto
Código PHP:
Ver original
  1. mysql_query(/*consulta*/) or die (mysql_error());
te lo indique varias veces
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #42 (permalink)  
Antiguo 16/09/2010, 21:38
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Comparacion entre bases de datos

volvi a solucionarlo cambiando by id desc por by fecha desc, y asi ya no me da error......
el php esta loco jaja
  #43 (permalink)  
Antiguo 16/09/2010, 21:43
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Comparacion entre bases de datos

tenes toooda la razon del mundo, y es cuestion de que me acostumbre, ya que de donde aprendi a manejar php, explicaban que solo habia que poner mysql_query y hace bastante que lo vengo haciendo, pero prometo desde ahora hacerlo del modo que me decis, ya que es muchisimo mas practico, enseguida te tira el error, y el problema es que me dice que la columna id es ambigua, supongo que eso significa que figura en dos tablas con el mismo nombre, eso creo
Cita:
Iniciado por carlos_belisario Ver Mensaje
depura la consulta y di que error te muestra siempre acostumbrate a esto ya que eso te esta dando un problemas en el num_rows y es x lo que recibe del query
acostumbra a esto
Código PHP:
Ver original
  1. mysql_query(/*consulta*/) or die (mysql_error());
te lo indique varias veces
  #44 (permalink)  
Antiguo 16/09/2010, 21:50
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Comparacion entre bases de datos

exactamente en las dos tablas tienes el mismo campo debes de explicarlo con el nombretabla.campo bueno que bien que ya allas resuelto el problema utiliza esto solo en la etapa de desarrollo saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #45 (permalink)  
Antiguo 16/09/2010, 22:12
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Comparacion entre bases de datos

de nuevo mil gracias por la ayuda.
seguramente te estare molestando con alguna otra consulta, ya que como bien decis uno siempre sigue aprendiendo y equivocandose.
un abrazo grande
Cita:
Iniciado por carlos_belisario Ver Mensaje
exactamente en las dos tablas tienes el mismo campo debes de explicarlo con el nombretabla.campo bueno que bien que ya allas resuelto el problema utiliza esto solo en la etapa de desarrollo saludos

Etiquetas: bases, comparacion
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 20:30.