Perché mi restituisce tutti gli users

searedone

Utente Attivo
11 Giu 2010
508
0
0
Sera a tutti ....

Ho un piccolo problema ma non riesco a capire

posto lo script :

PHP:
<?php 

class Wall_Updates { 



      
      public function Updates($uid)  
    { 

        $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages M, users U  WHERE M.uid_fk=U.uid and  M.uid_fk='$uid' OR M.uid_fk IN (SELECT user_1 FROM relationship AS r WHERE r.user_2 = '$uid' AND r.amico = 'S') OR M.uid_fk IN (SELECT user_2 FROM relationship AS r WHERE r.user_1 = '$uid' AND r.amico = 'S') order by M.msg_id desc  ") or die(mysql_error()); 
        
 while($row=mysql_fetch_array($query)) 
    
        $data[]=$row; 
        return $data; 
         
    } 
//Comments 
       public function Comments($msg_id)  
    { 
        $query = mysql_query("SELECT C.com_id, C.uid_fk, C.comment, C.created, U.username FROM comments C, users U WHERE C.uid_fk=U.uid and C.msg_id_fk='$msg_id' order by C.com_id asc ") or die(mysql_error()); 
      while($row=mysql_fetch_array($query)) 
        
        $data[]=$row; 
        if(!empty($data)) 
        { 
       return $data; 
         } 
    } 
     
    //Avatar Image 
    public function Gravatar($uid)  
    { 
        $query = mysql_query("SELECT email FROM `users` WHERE uid='$uid'") or die(mysql_error()); 
       $row=mysql_fetch_array($query); 
       if(!empty($row)) 
       { 
        $email=$row['email']; 
        $lowercase = strtolower($email); 
        $imagecode = md5( $lowercase ); 
        $data="http://www.gravatar.com/avatar.php?gravatar_id=$imagecode"; 
        return $data; 
         } 
         else 
         { 
         $data="default.jpg"; 
        return $data; 
         } 
    } 
     
    //Insert Update 
    public function Insert_Update($uid, $update)  
    { 
    $update=htmlentities($update); 
       $time=time(); 
       $ip=$_SERVER['REMOTE_ADDR']; 
        $query = mysql_query("SELECT msg_id,message FROM `messages` WHERE uid_fk='$uid' order by msg_id desc limit 1") or die(mysql_error()); 
        $result = mysql_fetch_array($query); 
         
        if ($update!=$result['message']) { 
            $query = mysql_query("INSERT INTO `messages` (message, uid_fk, ip,created) VALUES ('$update', '$uid', '$ip','$time')") or die(mysql_error()); 
            $newquery = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages M, users U where M.uid_fk=U.uid and M.uid_fk='$uid' order by M.msg_id desc limit 1 "); 
            $result = mysql_fetch_array($newquery); 
             return $result; 
        }  
        else 
        { 
                 return false; 
        } 
         
        
    } 
     
    //Delete update 
        public function Delete_Update($uid, $msg_id)  
    { 
        $query = mysql_query("DELETE FROM `comments` WHERE msg_id_fk = '$msg_id' ") or die(mysql_error()); 
        $query = mysql_query("DELETE FROM `messages` WHERE msg_id = '$msg_id' and uid_fk='$uid'") or die(mysql_error()); 
        return true; 
                  
    } 
     
    //Insert Comments 
    public function Insert_Comment($uid,$msg_id,$comment)  
    { 
    $comment=htmlentities($comment); 
               $time=time(); 
       $ip=$_SERVER['REMOTE_ADDR']; 
        $query = mysql_query("SELECT com_id,comment FROM `comments` WHERE uid_fk='$uid' and msg_id_fk='$msg_id' order by com_id desc limit 1 ") or die(mysql_error()); 
        $result = mysql_fetch_array($query); 
     
        if ($comment!=$result['comment']) { 
            $query = mysql_query("INSERT INTO `comments` (comment, uid_fk,msg_id_fk,ip,created) VALUES ('$comment', '$uid','$msg_id', '$ip','$time')") or die(mysql_error()); 
            $newquery = mysql_query("SELECT C.com_id, C.uid_fk, C.comment, C.msg_id_fk, C.created, U.username FROM comments C, users U where C.uid_fk=U.uid and C.uid_fk='$uid' and C.msg_id_fk='$msg_id' order by C.com_id desc limit 1 "); 
            $result = mysql_fetch_array($newquery); 
          
           return $result; 
        }  
        else 
        { 
        return false; 
        } 
        
    } 
     
    //Delete Comments 
        public function Delete_Comment($uid, $com_id)  
    { 
        $query = mysql_query("DELETE FROM `comments` WHERE uid_fk='$uid' and com_id='$com_id'") or die(mysql_error()); 
        return true; 
                  
    } 

     

} 

?>


Come potete vedere la prima select serve a far vedere i mex degli amici...

il problema è questo:

se tolgo U.username e M.uid_fk=U.uid , tutto bene mi restituisce solo il mex di chi è mio amico, se lascio U.username e M.uid_fk=U.uid per ricavare l'username di chi ha scritto il post mi posta lo stesso mex per tutti i registrati chi mi sa dire come posso fare ?? grazie mille

Posto qui sotto solo la stringa incriminata ...

PHP:
$query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages M, users U  WHERE M.uid_fk=U.uid and  M.uid_fk='$uid' OR M.uid_fk IN (SELECT user_1 FROM relationship AS r WHERE r.user_2 = '$uid' AND r.amico = 'S') OR M.uid_fk IN (SELECT user_2 FROM relationship AS r WHERE r.user_1 = '$uid' AND r.amico = 'S') order by M.msg_id desc  ") or die(mysql_error());
 
ciao
per prima cosa metti i var_dump alle variabili che usi nella query
poi dividi la query e metti un altro var_dump rer vedere cosa ti restituisce (cioè se quello che vuoi tu?
PHP:
<?php
//....
var_dump($uid);
var_dump($msg_id);
$query_str="SELECT C.com_id, C.uid_fk, C.comment, C.msg_id_fk, C.created, U.username FROM comments C, users U where C.uid_fk=U.uid and C.uid_fk='$uid' and C.msg_id_fk='$msg_id' order by C.com_id desc limit 1 ";
var_dump($query_str);
$newquery($query_str);
var_dump($newquery);
//...
?>

p.s.
poi controllati la logica della query
 
Non capisco,
se tolgo l'interrogazione alla tabella Users tutto funziona se la inserisco mi restituisce tutti gli users che sono registrati .....

Hai idee ?? ti giuro non so più come fare
 
ciao
scusa, ma non sono esperto dell'uso delle classi, quindi può darsi che dica delle fregnacce.
comunque dovresti avere una pagina in cui includi il file con la classe (o la classe è scritta nella stessa pagina), poi immagino che tu istanzi la classe con un'istruzione del tipo:

PHP:
$amici = new Wall_Updates();//al posto di $amici quello che dovresti aver messo tu
giusto?
se è cosi devi passare l'id dellutente alla funzione
PHP:
$amici->Updates($id_utente);//ma devi avere comunque $id_utente inizializzato (es da una sessione)
prova così e verifica di nuovo i var_dump

se hai già fatto tutto questo, non so cosa dirti

p.s.
se ho detto una fregnaccia spera in alex
 
Grazie mille Borgo.
sei sempre gentilissimo, cmq come ben sai anche io ho qualche problema e non solo con le classi sto adattando uno script e direi che ci sono riuscito egregiamente a parte il problema della foto che poi posto.

Speriamo che alex o qualcuno che se ne intenda possa risolvere l'arcano :)
 

Discussioni simili