Problema con consulta

Colapsar
X
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar todos
nuevos mensajes

  • Problema con consulta

    buen dia amigos , tengo un problemita con una consulta ..
    estoy haciendo una especie de red social.

    pero cuando voy hacer la consulta para que en mi muro solo salgan los comentarios de mi amigos y los mios juntos.

    en el muro de mis amigos si sale el comentario que hice , pero en mi muro se repite el comentario por ejemplo :

    tengo 2 amigos y registro el siguiente comentario : "Hola mundo."

    en el muro de mis amigos sale perfecto.

    pero en mi muro se repite el hola mundo 2 veces , y tengo 4 amigos por ejemplo se repite 4 veces.

    mi db esta asi .

    tabla_amigos : id_usuario | id_amigo

    tabla_comentario : id_usuario | comentario

  • #2
    Re: Problema con consulta

    Buenos días,

    A pesar de que no aportas el código y con ello nos obligas a ejercer de adivinos, me parece que tu problema es que tomas como base de la presentación de datos la tabla amigos en su conjunto, y no por separado.

    Tienes que crear dos ciclos independientes, uno para los amigos y otro para los tuyos.

    Por otra parte -en mi opinión- creo que lo mejor es que todas las inserciones del muro se encuentren recogidas en una única tabla, así podrás mostrarlas incluso por el orden cronológico de inserción.


    Ya nos dirás.
    Un cordial saludo
    -Acalanto-

    Madrid - España

    Leer detalladamente las normas del foro es una buena forma de comenzar a participar en él. Te llevará unos pocos minutos y el colectivo de usuarios te lo agradecerá. <si no las has leído sigue este enlace>

    Comentario


    • #3
      Re: Problema con consulta

      Entiendo lo que me dices...

      y los comentarios esta en una tabla separada.

      id_usuario | comentarios | fechapublicacion

      pero para que solo a mis amigos les aparezca en su muro lo que yo escribo. debo tomar mi id , consultar en la tabla amigos quienes son mis amigos he imprimir, mi consulta esta esta manera.
      Código:
      function verMuro($mi_id){
      
      $this->conectar();
      
      $sql = " SELECT * FROM tabla_amistad WHERE id_amigo = $mi_id  || id_susuario = $mi_id ";
      
      //hago el select de esta manera por que si en la tabla amistad nuestro id puede estar id_usuario = id_amigos  o  id_amigo = id_usuario con esto sacamos la cantidad de amigos.
      
      $consulta = $this->query($sql);
      
      while($row = $this->fecth_array($consulta)){
      
                    if($row["id_usuario"] == $mi_id){
                             
                             $id = $row["id_amigo"];
                   
                     }else if($row["id_amigo"] == $mi_id){
      
                              $id = $row["id_usuario"];
                    }
              
      
             $sql = "SELECT * FROM tabla_muro IN id_usuario ($id , $mi_id) ";
      
             $consulta = $this->query($sql);
      
             while($row = $this->fecth_array($consulta)){
              
                       print $row["comentario"];
            }
       }
      explico el primer ciclo repetitivo toma el ID de la session que este abierta,
      revisa quienes son sus amigos luego toma esas IDS y las compara con el id_usuario de la tabla_muro que consulta (comentarios amigos - mis comentarios ).

      el problema revisando es en el primer ciclo que al revisar y con sigue por ejemplo que yo tengo 3 amigo . el ciclo repetira 3 veces por lo tanto y mi muro repite mis comentarios 3 veces. en el del muro de mis amigos si sale mis comentario normal.


      Acepto alguna sugerencia , lo que deseo es que mis comentarios los vean mis amigos y yo. al igual de yo ver los comentarios de mis amigos y ellos los mios (solo de mis amigos agregados)

      Comentario


      • #4
        Re: Problema con consulta

        En principio yo cambiaría esto:

        Código:
        $sql = " SELECT * FROM tabla_amistad WHERE id_amigo = $mi_id  || id_susuario = $mi_id ";

        por esta otra sentencia:

        Código:
        $sql = " SELECT * FROM tabla_amistad WHERE id_amigo = $mi_id  OR id_susuario = $mi_id ";

        Fíjate que el AND, OR ...etcétera de SQL nada tiene que ver con el que utilizas en el lenguaje que programas. Creo que ahí tienes el error.
        Un cordial saludo
        -Acalanto-

        Madrid - España

        Leer detalladamente las normas del foro es una buena forma de comenzar a participar en él. Te llevará unos pocos minutos y el colectivo de usuarios te lo agradecerá. <si no las has leído sigue este enlace>

        Comentario


        • #5
          Re: Problema con consulta

          en estos momentos estoy en eso , hare la prueba estare informando por aqui.

          Comentario


          • #6
            Re: Problema con consulta

            Listo resuelto el problema , analizando la situacion lo esta haciendo todo al reves, pues tenia que tomar los ids de los comentarios checar que sean mis amigos y si es asi imprimir , de lo contrario no imprime.

            Gracias por la ayuda, tambien lo del OR funciono.

            Comentario


            • #7
              Re: Problema con consulta

              Pense que el problema estaba resuelto , ahora lo que pasa es que hice una prueba abriendo 4 cuentas de usuario en diferentes equipos ...

              y todos pueden ver mis comentarios asi no sean amigos ..

              Comentario


              • #8
                Re: Problema con consulta

                Código:
                public function listarcomentarios($id){
                                $this->conectar();
                                $sql = "SELECT * FROM tabla_amistad WHERE id_usuario = '$id' OR id_amigo = '$id'";
                                $consulta = $this->filtro($sql);
                                while($q = $this->proximo($consulta)){
                                        
                                        if($q["id_usuario"] == $id){
                                            $tipo = $q["id_amigo"];
                                        }else if($q["id_amigo"]){
                                            $tipo = $q["id_usuario"];
                                        }
                                        $sql2 = "Select * from tabla_muro WHERE  id_usuario = '".$tipo."'";
                                        $consulta2 = $this->filtro($sql2);
                                        while($t = $this->proximo($consulta2)){
                                                print $t["comentario"]."<br/>";    
                                        }
                                 }
                
                            }
                Esta es la forma que tengo horita , con esto en mi muro solo se imprimen los comentarios de mis amigos pero los mios no, solo falta eso.

                si coloco el id personal del usuario en el segundo while , me va imprimir el comentario dependiendo de la cantidad de amigos

                Comentario

                Trabajando...
                X