Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿como hacer una consulta dentro de otra?

Estas en el tema de ¿como hacer una consulta dentro de otra? en el foro de Mysql en Foros del Web. hola bueno no sabía muy bien dónde colocar este tema. Os expongo mi problema. Lo que me gustaría hacer es capturar un id de una ...

  #1 (permalink)  
Antiguo 08/04/2012, 17:05
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
¿como hacer una consulta dentro de otra?

hola bueno no sabía muy bien dónde colocar este tema.
Os expongo mi problema. Lo que me gustaría hacer es capturar un id de una tabla igualarlo a una variable y con esa hago una consulta en la que se muestren todos los usuarios que tienen esa id. Cuando lo ejecuto solo me muestra los datos del primer usuario, cuando hay más de uno. Ante todo gracias, espero buestra respuesta.
Este es mi código.
Código PHP:
<?php 
        
$connect
=mysql_connect('localhost','root','');
mysql_select_db('logueo',$connect); 
$consulta mysql_query("SELECT * FROM amistades where user_para='".$_SESSION['id']."' and aceptacion=0",$connect);
$lado=mysql_num_rows($consulta);
while(
$row=mysql_fetch_array($consulta)){
$de=$row['user_de'];
$mensaje=$row['mensaje'];

$consulta mysql_query("SELECT * FROM usuarios where id='".$de."' ",$connect);
$lado=mysql_num_rows($consulta);
while(
$row=mysql_fetch_array($consulta)){
$usuario=$row['usuario'];
$foto=$row['foto'];

 echo
'
        
        <table width="100%" height="61" border="1">
          <tr bordercolor="#B2D5F9" bgcolor="#5F92B9">
            <td width="15%" height="55" bgcolor="#FFFFCC"><img src='
.$foto.' width="100"/></td>
            <td width="27%" bgcolor="#FFFFCC">'
.$usuario.'</td>
            <td width="44%" bgcolor="#FFFFCC">'
.$mensaje.'</td>
            <td width="14%" bgcolor="#FFFFCC">&nbsp;</td>
          </tr>
        </table>
       
        '
;}}  ?>
  #2 (permalink)  
Antiguo 10/04/2012, 02:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ¿como hacer una consulta dentro de otra?

Postea la estructura de las tablas....

Si seleccionas por id lo normal es que sea el identificador y normalmente es la PK con lo que dificilmente te va a dar mas de uno...

Si la estructura es algo asi

usuarios
id
nombre
....

Amistades
id1
id2

donde id1 esta referenciado a usuarios y id2 tambien.... luego si puedes hacer

SELECT a.id2,u.nombre FROM amistades a INNER JOIN usuarios u ON a.id2=u.id WHERE a.id1=X

y te dará todos los amigos de X...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 10/04/2012, 05:57
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

Tablas:

usuarios:
id
usuario
email
nacimiento

amistades:
id
id_de
id_para
mensaje
aceptacion

lo que necesito es la función que primero selecciono de amistades la id del usuario que esta en la sesión $_SESSION['id'] es decir que sea igual
Código PHP:
SELECT FROM amistades where user_para='".$_SESSION['id']."' 
y luego con esas amistades selecionadas coger la id del usuario que hay en cada una de ellas y con eso extraer todos los datos de ese usuario.
de la forma que lo hago yo funciona pero solo me muestra el primer registro el resto no.
espero haberme explicado bien. Garcias
por ciento con el inner jon despies como extraigo los resultados. ¿algo así?
$usuario=$row['u.usuario'];
porque por ejemplo el campo id lo tengo en las dos tablas una esla id de la amistad y la otra la del usuario

Última edición por wily97; 10/04/2012 a las 06:05
  #4 (permalink)  
Antiguo 10/04/2012, 16:58
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

Tienes muchas formas de realizar eso, usando más PHP, usando más SQL... aunque ya que está por aquí te pondré una forma al estilo de lo que le título dices, subconsultas que se llaman.

Podrías hacer:
Código PHP:
$amistades "SELECT * FROM usuarios WHERE id IN (SELECT id_para FROM amistades where user_para='".$_SESSION['id']."')"
He dado por hecho que id_para es la id del usuario de la amistad, si no tan sólo cambia ese campo. Si ejecutas esa consulta debería devolverte todas las filas de las asmitades que tiene dicho usuario
  #5 (permalink)  
Antiguo 10/04/2012, 17:47
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

muchas gracias zalito12 me a servido mas o menos solo me faltan dos cosas
1ª me sigue mostrando solo el primer registro
de momento lo tengo asi
Código PHP:
$connect=mysql_connect('localhost','root','');
mysql_select_db('logueo',$connect);
$amistades mysql_query("SELECT * FROM usuarios WHERE id IN (SELECT user_de FROM amistades where user_para='".$_SESSION['id']."' and aceptacion=0)",$connect); 
$lado=mysql_num_rows($amistades);
while(
$row=mysql_fetch_array($amistades)){
$usuario=$row['usuario'];
$foto=$row['foto'];
$mensaje=$row['mensaje'];


 echo
'
        
        <table width="100%" height="61" border="1">
          <tr bordercolor="#B2D5F9" bgcolor="#5F92B9">
            <td width="9%" height="55" bgcolor="#FFFFCC"><div align="center"><img src='
.$foto.' width="100"/></div></td>
            <td width="33%" bgcolor="#FFFFCC">'
.$usuario.'</td>
            <td width="44%" bgcolor="#FFFFCC">'
.$mensaje.'</td>
            <td width="14%" bgcolor="#FFFFCC"><div align="center">
            <p><a href=aceptar.php?id='
.$id.'>aceptar</a></p>
            <p><a href=rechazar.php?id='
.$id.'>rechazar</a></p>
            </div></td>
          </tr>
        </table>
       
        '
;}  ?> 
2ª si te das cuenta para aceptar o rechazar la invitación necesito la variable de la amistad.
¿como añadiría esa ultima parte?
gracias de nuevo

Última edición por wily97; 10/04/2012 a las 18:04
  #6 (permalink)  
Antiguo 11/04/2012, 01:25
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

El primer problema que comentas no debería pasar tal y como tienes el código, haz un echo de la variable $lado para ver si te está cogiendo más de una fila la consulta y por si acaso realizala directamente en la db para ver cuantas filas te devuelve.

Y el segundo problema no lo he entendido bien, ¿que variable es la que necesitas?
  #7 (permalink)  
Antiguo 11/04/2012, 06:00
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

pues bien en el problema uno hice el echo de $lado y me da 1. no se donde falla
con respecto al 2 necesito extraer tambien todas las id de las amistades. por que si te fijas en la tabla de abajo del codigo cuando acepto o rechazo imprime la id de la amistad para identificarla y poder sustituir el valor de aceptacion segun halla aceptado o rechazado
gracias espero que me puedas alludar
  #8 (permalink)  
Antiguo 11/04/2012, 08:22
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

Bueno, según dices la consulta sólo te está devolviendo una fila, puede que para ese usuario solo haya una petición, porque si no debería devolverte todas las coincidencias.

Para el caso dos prueba esto:
Código PHP:
$connect=mysql_connect('localhost','root','');
mysql_select_db('logueo',$connect);
$amistades mysql_query("SELECT * FROM usuarios WHERE id IN (SELECT user_de FROM amistades WHERE user_para = '".$_SESSION['id']."' AND aceptacion = '0' ORDER BY id)",$connect); 
$get_ids mysql_query("SELECT * FROM amistades WHERE user_para = '".$_SESSION['id']."' AND aceptacion = '0' ORDER BY id",$connect); 
$lado=mysql_num_rows($amistades);
while(
$row=mysql_fetch_array($amistades)){
$usuario=$row['usuario'];
$foto=$row['foto'];
$mensaje=$row['mensaje'];
$id mysql_fetch_assoc($get_ids);

 echo
'
        
        <table width="100%" height="61" border="1">
          <tr bordercolor="#B2D5F9" bgcolor="#5F92B9">
            <td width="9%" height="55" bgcolor="#FFFFCC"><div align="center"><img src='
.$foto.' width="100"/></div></td>
            <td width="33%" bgcolor="#FFFFCC">'
.$usuario.'</td>
            <td width="44%" bgcolor="#FFFFCC">'
.$mensaje.'</td>
            <td width="14%" bgcolor="#FFFFCC"><div align="center">
            <p><a href=aceptar.php?id='
.$id['id'].'>aceptar</a></p>
            <p><a href=rechazar.php?id='
.$id['id'].'>rechazar</a></p>
            </div></td>
          </tr>
        </table>
       
        '
;}  ?> 
  #9 (permalink)  
Antiguo 11/04/2012, 10:02
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

bueno en parte se va solucionando.
el 1 ya esta, lo que pasa es que no recibe mas de 1 amistad por usuario. cosa que incluso me viene bien, ya que no es necesario que un usuario escriba mas de una peticion. con usuarios distinto va bien.

el 2 sigue sin funcionar en vez de capturar la id me captura la palabra array

Alguna idea? de como solucionar esto??
gracias por seuir ensistiendo en esto de verdad
  #10 (permalink)  
Antiguo 11/04/2012, 10:16
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

Te devuelve array? Estás seguro que está todo tal cual?
Me estoy rompiendo la cabeza pero no encuentro fallo, debo estar pasando algo por alto y no lo veo... :(
  #11 (permalink)  
Antiguo 11/04/2012, 11:56
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

yo lo tengo asi

Código PHP:
$connect=mysql_connect('localhost','root','');
mysql_select_db('logueo',$connect);
$amistades mysql_query("SELECT * FROM usuarios WHERE id IN (SELECT user_de FROM amistades WHERE user_para = '".$_SESSION['id']."' AND aceptacion = '0' ORDER BY id)",$connect); 
$get_ids mysql_query("SELECT * FROM amistades WHERE user_para = '".$_SESSION['id']."' AND aceptacion = '0' ORDER BY id",$connect); 
$lado=mysql_num_rows($amistades);
while(
$row=mysql_fetch_array($amistades)){
$usuario=$row['usuario'];
$foto=$row['foto'];
$id mysql_fetch_assoc($get_ids);


 echo
'
        
        <table width="100%" height="61" border="1">
          <tr bordercolor="#B2D5F9" bgcolor="#5F92B9">
            <td width="9%" height="55" bgcolor="#FFFFCC"><div align="center"><img src='
.$foto.' width="100"/></div></td>
            <td width="33%" bgcolor="#FFFFCC">'
.$usuario.'</td>
            <td width="44%" bgcolor="#FFFFCC">'
.$mensaje.'</td>
            <td width="14%" bgcolor="#FFFFCC"><div align="center">
            <p><a href=aceptar.php?id='
.$id.'>aceptar</a></p>
            <p><a href=rechazar.php?id='
.$id.'>rechazar</a></p>
            </div></td>
          </tr>
        </table>
       
        '
;} 
en la variable id no habra que poner algo de $row como en las demas? ya que esta dentro de los corchetes. pero no sabria como ponerlo
Muchas gracias de verdad

Última edición por wily97; 11/04/2012 a las 12:02
  #12 (permalink)  
Antiguo 11/04/2012, 12:50
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

Mira que me has tenido aqui buscando... porque eres de coruña que si no te mato jajaja
Mira los links de aceptar/rechazar y dime si ves diferencias XD
  #13 (permalink)  
Antiguo 11/04/2012, 13:07
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

no me di cuenta jaajaj que coincidencias.
ni tampoco me di cuenta de esa parte del código y solo copié las consultas jejej
bueno ahora si que funciona y todo gracias a ti. si quieres ver como avanza la red social puedes eso si ya te aviso de que aún me falta trabajo, jejej [URL="http://wilix.es"]http://wilix.es[/URL]
gracias otra vez.
recurriré a ti si me surge atro cosa, pero creo que no hará falta ya que lo que me queda sabre hacerlo yo solo.
Saludos
  #14 (permalink)  
Antiguo 11/04/2012, 13:15
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

Ah, es para una red social. Yo estuve pensando en embarcarme en un proyecto parecido pero ahora ando un poco ocupado y además quiero coger un poco más de experiencia jeje.
Bueno, pues si tienes alguna duda ya sabes que para eso estamos :D
Y la red social en que estará basada, en algún interés común, es para un grupo concreto de gente o será abierta?
  #15 (permalink)  
Antiguo 11/04/2012, 13:50
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

en ningún interés, pero tengo pensado implementar un foro que ya tengo hecho para que los usuarios puedan compartir e invitarse unos a otros.
y tambien un sistema de mensajería privada entre usuarios
la idea es que sea abierta.
saludos
  #16 (permalink)  
Antiguo 11/04/2012, 13:59
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

lo siento pero no he podido cumplir lo que dije antes, siento volver a molestarte jejej.
me he topado con un pequeño problema y es que a la hora de buscar los usuarios para agregarlos tambien me da la posibilidad de agregar a los que ya tengo y eso querría evitarlo.
alguna idea de como hacerlo??
este es el código:
Código PHP:
$busca=@$_POST['nombre'];
mysql_connect("localhost","root","");
mysql_select_db("logueo");
if($busca!=""){
$busqueda=mysql_query("SELECT * FROM usuarios WHERE usuario LIKE '%".$busca."%' AND usuario != '".$_SESSION['k_username']."'");
while($f=mysql_fetch_array($busqueda)){
$id=$f['id'];
$foto=$f['foto'];
$nombre=$f['usuario'];

?>
<form action="agregar.php" method="post">
<input name="id" type="hidden" value="<?php echo $id;?>" />
<table width="100%" height="1" border="1" align="center" cellpadding="5" cellspacing="0" bordercolor="#000033" bgcolor="#5F92B9">
        <tr>
          <td width="11%" height="1"><div align="center">
             <span class="Estilo8"><?php echo"<img src='$foto' width='100'/>";?></span>
          </div></td>
          <td width="37%" height="1">
              <div align="left">
                <?php 
    
echo''.$nombre.'';?>
                  </div></td>
          <td width="44%"><div align="center">
            <label>
            <textarea name="mensaje" cols="50" rows="3" id="textfield" onFocus="this.value=''">mensaje...</textarea>
            </label>
          </div></td>
          <td width="8%"><div align="center"><input name="agregar" type="submit" value="agregar" />
          </div></td>
        </tr>
        </table></form>
        <?php
}

}
?>
  #17 (permalink)  
Antiguo 11/04/2012, 14:15
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

Sí, tendrás que poner un if para que en vez de Agregar Amigo te ponga Ya es tu amigo por ejemplo.
Por que no creo que ocultar esos usuarios en la búsqueda sea la mejor opción.
Puedes hacer algo así:
Código PHP:
...
while($f=mysql_fetch_array($busqueda)){ 
$id=$f['id']; 
$foto=$f['foto']; 
$nombre=$f['usuario']; 
?>
...
<td width="8%"><div align="center">
<?php
 $amigo 
mysql_query("SELECT * FROM amistades WHERE id_de = '".$_SESSION['k_username']."' AND id_para = '".$nombre."'");
 if(
mysql_num_rows($amigo) > 0) echo '<input name="agregar" type="submit" value="agregar" />';
 else echo 
'Yo Soy tu amigo';
?> 
     </div></td> 
...
Importante! Mientras lo hacía he pensado una cosa, deberías cambiar algo en tu tabla de amistades, tal y como lo tienes lleva a pensar que yi yo te agrego como amigo en la tabla aparecerá:
id_de: Gonzalo, id_para: Wily
Con la solución que te he puesto yo no te puedo agregar pero tú a mi sí, el problema esq esos nombres de campo me lía, podrías poner usuario1, usuario2 o algo así xD

Para que tú tampoco me puedas agregar a mi la consulta debería ser esta:
Código PHP:
 $amigo mysql_query("SELECT * FROM amistades WHERE (id_de = '".$_SESSION['k_username']."' AND id_para = '".$nombre."') OR (id_para = '".$_SESSION['k_username']."' AND id_de = '".$nombre."')"); 
  #18 (permalink)  
Antiguo 11/04/2012, 15:25
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

lo modifique un poco porque en amistades lo que se almacenan son las id de los usuarios no los nombres. pero aún así ahora no me deja agregar a nadie
Código PHP:
 <?php
 $amigo 
mysql_query("SELECT * FROM amistades WHERE (id_de = '".$_SESSION['id']."' AND id_para = '".$id."') OR (id_para = '".$_SESSION['id']."' AND id_de = '".$id."')");  
 if(
mysql_num_rows($amigo) > 0) echo '<input name="agregar" type="submit" value="agregar" />';
 else echo 
'Yo Soy tu amigo';
?>
que es la que pasa??
gracias y saludos
  #19 (permalink)  
Antiguo 11/04/2012, 15:28
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

Si, pasa que puse el if al revés:
Código PHP:
 <?php 
 $amigo 
mysql_query("SELECT * FROM amistades WHERE (id_de = '".$_SESSION['id']."' AND id_para = '".$id."') OR (id_para = '".$_SESSION['id']."' AND id_de = '".$id."')");   
 if(!
mysql_num_rows($amigo) > 0) echo '<input name="agregar" type="submit" value="agregar" />'
 else echo 
'Yo Soy tu amigo'
?>
Negandolo debería funcionar
  #20 (permalink)  
Antiguo 11/04/2012, 15:39
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

jejej ahora me vuelve a dejar agregar a todo el mundo
saludos
  #21 (permalink)  
Antiguo 11/04/2012, 15:41
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

Estás seguro que con quien lo compruebas tiene algún amigo para que no te deje agregarlo.
Si es así haz un echo de los id, el de la session y el otro para comprobar que tengan el valor que quieres.

Y mejor pon este cófigo:
Código PHP:
 <?php 
 $amigo 
mysql_query("SELECT * FROM amistades WHERE (id_de = '".$_SESSION['id']."' AND id_para = '".$id."') OR (id_para = '".$_SESSION['id']."' AND id_de = '".$id."')");   
 if(
mysql_num_rows($amigo) > 0) echo 'Yo Soy tu amigo';
 else echo 
'<input name="agregar" type="submit" value="agregar" />';   
?>
  #22 (permalink)  
Antiguo 11/04/2012, 15:46
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

tiene amigo pero no soy yo, y no es que no me deje si no que me deja a todo el mundo
  #23 (permalink)  
Antiguo 11/04/2012, 15:52
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

he probado lo nuevo y sigue dejándome agragar a todo el mundo incluidos gente que ya tengo agregada
  #24 (permalink)  
Antiguo 11/04/2012, 16:15
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

Si, si, era un cambio para hacerlo más entendible no cambien nada en la estructura lógica pero pon esto:
Código PHP:
 <?php 
echo 'IdSession: '.$_SESSION['id'].', idAmigo: '.$id.'<br />';
 
$amigo mysql_query("SELECT * FROM amistades WHERE (id_de = '".$_SESSION['id']."' AND id_para = '".$id."') OR (id_para = '".$_SESSION['id']."' AND id_de = '".$id."')");   
 if(
mysql_num_rows($amigo) > 0) echo 'Yo Soy tu amigo';
 else echo 
'<input name="agregar" type="submit" value="agregar" />';   
?>
Y dime que pasa con los valores
  #25 (permalink)  
Antiguo 11/04/2012, 16:23
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

la busqueda me da tres resultados y esto es lo que pasa con los valores:

IdSession: 1, idAmigo: 8
IdSession: 1, idAmigo: 9
IdSession: 1, idAmigo: 11
  #26 (permalink)  
Antiguo 11/04/2012, 16:46
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

Que pasaría si pusieses esto mejor:
Código PHP:
<?php 
echo 'IdSession: '.$_SESSION['id'].', idAmigo: '.$id.'<br />';
 
$amigo mysql_query("SELECT * FROM amistades WHERE id_de = '".$_SESSION['id']."' AND id_para = '".$id."'");   
 if(
mysql_num_rows($amigo) > 0){
    
$aceptada mysql_query("SELECT * FROM amistades WHERE id_de = '".$_SESSION['id']."' AND id_para = '".$id."' AND aceptacion = '1'");
    if(
mysql_num_rows($aceptada) > 0) echo 'Ya es tu amigo';
    else echo 
'Ya le has enviado una petición de amistad';
 }
 else{
     
$amigo mysql_query("SELECT * FROM amistades WHERE id_para = '".$_SESSION['id']."' AND id_de = '".$id."'");   
     if(
mysql_num_rows($amigo) > 0){
        
$aceptada mysql_query("SELECT * FROM amistades WHERE id_para = '".$_SESSION['id']."' AND id_de = '".$id."' AND aceptacion = '1'");
        if(
mysql_num_rows($aceptada) > 0) echo 'Ya es tu amigo';
        else echo 
'<input name="aceptarP" type="submit" value="Aceptar Petición" />';
    }
    else{
       echo 
'<input name="agregar" type="submit" value="agregar" />';
    }   
?>
Es un caso más complejo, a ver si funciona. De todas formas comprueba la base de datos, que para esos valores de verdad existan amistades.
  #27 (permalink)  
Antiguo 11/04/2012, 16:57
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

me sale esto:
Error del servidor
El sitio web ha detectado un error al recuperar la http://wilix.es/buscar.php http://wilix.es/buscar.php. Es posible que esta esté inactiva debido a tareas de mantenimiento o que se haya configurado de forma incorrecta.
  #28 (permalink)  
Antiguo 11/04/2012, 17:03
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

Faltaba una llave, pero comprueba eso en la tabla, que existan las amsitades.
Código PHP:
<?php 
echo 'IdSession: '.$_SESSION['id'].', idAmigo: '.$id.'<br />';
 
$amigo mysql_query("SELECT * FROM amistades WHERE id_de = '".$_SESSION['id']."' AND id_para = '".$id."'");   
 if(
mysql_num_rows($amigo) > 0){
    
$aceptada mysql_query("SELECT * FROM amistades WHERE id_de = '".$_SESSION['id']."' AND id_para = '".$id."' AND aceptacion = '1'");
    if(
mysql_num_rows($aceptada) > 0) echo 'Ya es tu amigo';
    else echo 
'Ya le has enviado una petición de amistad';
 }
 else{
     
$amigo mysql_query("SELECT * FROM amistades WHERE id_para = '".$_SESSION['id']."' AND id_de = '".$id."'");   
     if(
mysql_num_rows($amigo) > 0){
        
$aceptada mysql_query("SELECT * FROM amistades WHERE id_para = '".$_SESSION['id']."' AND id_de = '".$id."' AND aceptacion = '1'");
        if(
mysql_num_rows($aceptada) > 0) echo 'Ya es tu amigo';
        else echo 
'<input name="aceptarP" type="submit" value="Aceptar Petición" />';
    }
    else{
       echo 
'<input name="agregar" type="submit" value="agregar" />';
    }
}   
?>
  #29 (permalink)  
Antiguo 11/04/2012, 17:07
 
Fecha de Ingreso: diciembre-2011
Ubicación: coruña
Mensajes: 36
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: ¿como hacer una consulta dentro de otra?

el erro ya no aparece pero sigue dejandome agregar a cualquiera.
ya he confirmado que alguna de las personas que me deja agregar son mis amigos
  #30 (permalink)  
Antiguo 11/04/2012, 17:23
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 12 años, 5 meses
Puntos: 67
Respuesta: ¿como hacer una consulta dentro de otra?

Vale la única posibilidad que queda es que la consulta este dando error por eso nunca entra en el if.
Añade un die error en las consultas:
Código PHP:
$amigo mysql_query("SELECT * FROM amistades WHERE id_de = '".$_SESSION['id']."' AND id_para = '".$id."'")or die(mysql_error()); 
Igual en la otra

***************R no es id_de, id_para es user_de, user_para!

Etiquetas: php, query, select, sql, tabla
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 12:30.