inserire tabella relationship in una functions

searedone

Utente Attivo
11 Giu 2010
508
0
0
inserire tabella relationship in una functions

Come recita il titolo dovrei inserire la tabella relationship in questa classe per far si che solo gli amici di possano vedere i post ... ( tipo fb o twitter )
help


PHP:
<?php

class Wall_Updates {

public $perpage = 10; // Uploads perpage
    

	
     // Updates   	
	  public function Updates($uid,$lastid) 
	{
	  // More Button
       $morequery="";
		if($lastid)
		$morequery=" and M.msg_id<'".$lastid."' ";
	   // More Button End
	   
	    $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username,M.uploads FROM messages M, users U  WHERE M.uid_fk=U.uid and M.uid_fk='$uid' $morequery order by M.msg_id desc limit " .$this->perpage) or die(mysql_error());
		
         while($row=mysql_fetch_array($query))
		$data[]=$row;
	    return $data;
		
    }
	     // Updates   	
	  public function Total_Updates($uid) 
	{
	 	   
	    $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username,M.uploads FROM messages M, users U  WHERE M.uid_fk=U.uid and M.uid_fk='$uid' $morequery order by M.msg_id ") or die(mysql_error());
		$data=mysql_num_rows($query);
        return $data;
		
    }
	
	//Comments
	   public function Comments($msg_id,$second_count) 
	{
	$query='';
	  if($second_count)
	  $query="limit $second_count,2";
	    $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 $query") or die(mysql_error());
	   while($row=mysql_fetch_array($query))
	    $data[]=$row;
        if(!empty($data))
		{
       return $data;
         }
	}
	
	
	//Avatar Image
	//From database
     public function Profile_Pic($uid) 
	{
	    $query = mysql_query("SELECT profile_pic FROM `users` WHERE uid='$uid'") or die(mysql_error());
	   $row=mysql_fetch_array($query);
	   if(!empty($row['profile_pic']))
	   {
	    $profile_pic_path=$base_url.'profile_pic/';
	    $data=    $profile_pic_path.$row['profile_pic'];
        return $data;
         }
		 else
		 {
		 $data="icons/default.jpg";
		return $data;
		 }
	}
	//  Gravatar 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,$uploads) 
	{
	$update=mysql_real_escape_string($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']) {
		  $uploads_array=explode(',',$uploads);
		  $uploads=implode(',',array_unique($uploads_array));
            $query = mysql_query("INSERT INTO `messages` (message, uid_fk, ip,created,uploads) VALUES (N'$update', '$uid', '$ip','$time','$uploads')") 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' and uid_fk='$uid' ") 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;
      	       
    }
	
		//Image Upload
		public function Image_Upload($uid, $image) 
	{
	//Base64 encoding
	$path="uploads/";
	 	  $img_src = $path.$image;
     $imgbinary = fread(fopen($img_src, "r"), filesize($img_src));
     $img_base = base64_encode($imgbinary);
	 $ids = 0;
        $query = mysql_query("insert into user_uploads (image_path,uid_fk)values('$image' ,'$uid')") or die(mysql_error());
		$ids = mysql_insert_id();
        return $ids;
    }
	
			//get Image Upload
		public function Get_Upload_Image($uid,$image) 
	{	
	    if($image)
		{
		  $query = mysql_query("select id,image_path from user_uploads where image_path='$image'") or die(mysql_error());
		}
		else
		{
		   $query = mysql_query("select id,image_path from user_uploads where uid_fk='$uid' order by id desc ") or die(mysql_error());
		}
      
         $result = mysql_fetch_array($query);
		
		return $result;
    }
	
		//Id Image Upload
		public function Get_Upload_Image_Id($id) 
	{	
        $query = mysql_query("select image_path from user_uploads where id='$id'") or die(mysql_error());
         $result = mysql_fetch_array($query);
		
		return $result;
    }
	
	//Insert Comments
	public function Insert_Comment($uid,$msg_id,$comment) 
	{
	$comment=mysql_real_escape_string($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 (N'$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;
      	       
    }

    

}

?>

tabella relationship

PHP:
CREATE TABLE IF NOT EXISTS `relationship` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `user_1` bigint(20) NOT NULL,
  `user_2` bigint(20) NOT NULL,
  `amico` enum('S','N') NOT NULL DEFAULT 'N',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=67 ;

--
-- Dump dei dati per la tabella `relationship`
--

INSERT INTO `relationship` (`id`, `user_1`, `user_2`, `amico`) VALUES
(12, 54, 57, 'S'),
(9, 54, 57, 'S'),
(8, 54, 55, 'S'),
(7, 54, 58, 'N'),
(65, 55, 54, 'S'),
(66, 54, 61, 'S');

@solo per alex ... occhio a esagerare con le risposte nei post o nelle chiusure dei post, ricordati che a fare utenti ci metti una vita e a perderli un secondo ...

non era mia intenzione offendere nessuno anche se ho scritto in maiuscola 1

2 il motivo dell'esistenza di questo forum come di altri è quella di poter chiedere per imparare ciò che non si sà, non quella di essere insultati, o altro ...

il compito dei moderatori, è quello di aiutare persone come me che ne sanno molto meno di te, dato che ti stimo è so che sei un bravissimo programmatore, ma fermati li ...

Grazie a tutti coloro che possono aiutarmi e un grazie infinite a quell'instancabile di borgo ...

Concludo dicendoti, che il potere non è chiudere post, oppure dire alle persone in modo sgarbato che non si scrive in maiuscolo dando giudizi su persone che neanche sai chi sono ...

occhio che di persone malate di potere ne ho conosciute molte, e non hanno fatto una gran carriera. ...

Bastava dire con molta gentilezza le stesse cose e nessuno si sarebbe risentito aiutandoti/vi ad avere migliaia di post e di utenti, ricordati che nella pubblicità il passa parolo del forum è molto importante, e se il passa parola invece è negativo su internet ti distrugge ......
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Non era mia intenzione sembrare sgarbato né maleducato. Sono una persona pratica che va dritta al punto, tutto qui. Ho chiuso solo perché non c'era motivo per cui si sarebbe dovuto postare oltre.
E aggiungo: meglio avere 100 utenti buoni che 10000 utenti cattivi (ma non è il tuo caso).
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ok :)

Cmq dato che tu eri riuscito a salvarmi la vita una volta con l'inserimento della tabella relatioship, non è che a tempo perso puoi darci un'occhiata anche tu ???

io ho provato cosi ma non funzia correttamente :(

PHP:
<?php 


class Wall_Updates { 

public $perpage = 100; // Uploads perpage 
     

     
     // Updates        
      public function Updates($uid,$lastid)  
    { 
      // More Button 
       $morequery=""; 
        if($lastid) 
        $morequery=" and M.msg_id<'".$lastid."' "; 
       // More Button End 
        
        $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username, M.uploads FROM messages M, users U WHERE M.uid_fk='$uid' AND M.uid_fk = U.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')  $morequery order by M.msg_id desc limit " .$this->perpage) or die(mysql_error()); 
     var_dump($query); 
         while($row=mysql_fetch_array($query)) 
        $data[]=$row; 
          var_dump($data);   
        return $data; 
        
       
    } 
        
        
       // Updates        
      public function Total_Updates($uid)  
    { 
             
               $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username, M.uploads FROM messages M, users U WHERE M.uid_fk = U.uid AND M.uid_fk='$uid' AND M.uid_fk = U.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')  $morequery order by M.msg_id ") or die(mysql_error()); 
         var_dump($query); 
        $data=mysql_num_rows($query); 
        return $data; 
          
    }
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa ma non capisco una cosa,
l'ultimo script che ti avevo inviato e che ho provato (non con le tabelle complete) restituisce $data con i valori, che metti nella select, del l'utente e per tutti i suoi amici.
la prima versione (dove tu dicevi che era troppa roba resituita) era dovuta al fatto che veniva raddoppiata es:
$data[0]=11, $data[1]=5....
$data['msg_id']=11, $data['uid_fk']=5....
con il secondo sistema questo non succede e ottieni solo
$data[0]=11, $data[1]=5.... (compreso l'username)
dove se i valori che estrai (per ciscun utente) sono es. 5 nell'array vengono così suddivisi
utente 1: da $data[0] a $data[4]
utente 2: da $data[5] a $data[9]
utente 3: da $data[10] a $data[14] ecc...
poi come ti ho detto per come vengono presentati o elaborati per la presentazione non lo so.

p.s.
alex talvolata è molto stringato nel rispondere, ma (da quando frequento il forum) non è mai stato offensivo con qualcuno
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ciao,
cavolo ti posso garantire che nn funge ...

forse l'unica strada da seguire dopo svariate prove mie tue ecc ecc è quella di inserire semplicemente la tabella relationship qui ...


Ps. Trq non ho nulla con Alex anzi, volevo solo fargli una critica costruttiva proprio perchè so che è una brava persona :)
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ho provato così ma nada ... chi mi aiuta ne sto uscendo pazzooooooo :(

PHP:
"SELECT * FROM
    messages INNER JOIN users ON (messages.uid_fk=uid)
    WHERE
    messages.uid_fk IN  ( SELECT user_1 FROM relationship AS R WHERE R.user_2 = '$uid' AND R.amico = 'S' ) OR messages.uid_fk IN  ( SELECT user_2 FROM relationship AS R WHERE R.user_1 = '$uid' AND R.amico = 'S')  $morequery order by messages.msg_id desc

cosi

PHP:
"SELECT * FROM
    messages INNER JOIN users ON (messages.useruid=user.uid)
     messages INNER JOIN relationship ON ( SELECT user_1 FROM relationship AS R WHERE R.user_2 = '$uid' AND R.amico = 'S' ) 
     M.uid_fk IN
     messages INNER JOIN relationship ON ( SELECT user_2 FROM relationship AS R WHERE R.user_1 = '$uid' AND R.amico = 'S')
    WHERE
   messages.uid_fk='$uid' AND messages.uid_fk = users.uid $morequery order by M.msg_id desc limit "

cosi mi da' questo errore e non vado avanti :( errore

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'messages INNER JOIN relationship ON ( messages.relationshipid = relationship.id' at line 3

PHP:
$query = mysql_query( "SELECT * FROM
    messages INNER JOIN users ON (messages.useruid=user.uid )
     messages INNER JOIN relationship ON ( messages.relationshipid = relationship.id AND user_2 = '$uid' AND amico = 'S' ) 
    OR messages.uid_fk IN
     messages INNER JOIN relationship ON ( messages.relationshipid = relatioship.id user_1 = '$uid' AND amico = 'S' )
    WHERE
   messages.uid_fk='$uid' AND messages.uid_fk = users.uid $morequery order by M.msg_id desc limit " .$this->perpage) or die(mysql_error());
 
Ultima modifica:

searedone

Utente Attivo
11 Giu 2010
508
0
0
così invece mi da':

Unknown column 'messages.usersuid' in 'on clause'


PHP:
$query = mysql_query( "SELECT * FROM 
    messages INNER JOIN users ON (messages.usersuid=user.uid ) 
    INNER JOIN relationship ON ( messages.relationshipid = relationship.id AND user_2 = '$uid' )
  OR messages.uid_fk IN
      ( messages.relationshipid = relatioship.id AND user_1 = '$uid'  ) 
    WHERE 
  messages.uid_fk='$uid' AND relationship.user_1 = 'S' AND relationship.user_2 = 'S' $morequery order by M.msg_id desc limit " .$this->perpage) or die(mysql_error());

Cavolo possibile che nessun genio di questo forum riesce ad aiutarmi ....
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ragazzi non odiatemi .......

ma no che non c'è useruid ne users_uid nella tabella messages :(

dite che il problema sta qui ........

Mhhhhhhhhh ok posto le tabelle tanto sono solo 4 ma voi perfavore aiutatemi con questa maledetta join che mi sta uccidendo il cervello ......


le 4 tabelle dei db

Codice:
CREATE TABLE IF NOT EXISTS `comments` (  
  `com_id` int(11) NOT NULL AUTO_INCREMENT,  
  `comment` varchar(200) DEFAULT NULL,  
  `msg_id_fk` int(11) DEFAULT NULL,  
  `uid_fk` int(11) DEFAULT NULL,  
  `ip` varchar(30) DEFAULT NULL,  
  `created` int(11) DEFAULT '1269249260',  
  PRIMARY KEY (`com_id`),  
  KEY `msg_id_fk` (`msg_id_fk`),  
  KEY `uid_fk` (`uid_fk`)  
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=33 ;  

CREATE TABLE IF NOT EXISTS `messages` (  
  `msg_id` int(11) NOT NULL AUTO_INCREMENT,  
  `message` varchar(200) DEFAULT NULL,  
  `uid_fk` int(11) DEFAULT NULL,  
  `ip` varchar(30) DEFAULT NULL,  
  `created` int(11) DEFAULT '1269249260',  
  PRIMARY KEY (`msg_id`),  
  KEY `uid_fk` (`uid_fk`)  
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;  

CREATE TABLE IF NOT EXISTS `users` (  
  `uid` bigint(20) NOT NULL AUTO_INCREMENT,  
  `md5_id` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',  
  `full_name` tinytext COLLATE latin1_general_ci NOT NULL,  
  `username` varchar(255) COLLATE latin1_general_ci DEFAULT NULL,  
  `user_email` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',  
  `email` varchar(100) COLLATE latin1_general_ci NOT NULL,  
  `user_level` tinyint(4) NOT NULL DEFAULT '1',  
  `pwd` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',  
  `address` text COLLATE latin1_general_ci NOT NULL,  
  `country` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',  
  `tel` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',  
  `fax` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',  
  `website` text COLLATE latin1_general_ci NOT NULL,  
  `date` date NOT NULL DEFAULT '0000-00-00',  
  `users_ip` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',  
  `approved` int(1) NOT NULL DEFAULT '0',  
  `activation_code` int(10) NOT NULL DEFAULT '0',  
  `banned` int(1) NOT NULL DEFAULT '0',  
  `ckey` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',  
  `ctime` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',  
  `nome_file_vero` varchar(255) COLLATE latin1_general_ci NOT NULL,  
  `tipo_file` varchar(255) COLLATE latin1_general_ci NOT NULL,  
  `dati_file` longblob NOT NULL,  
  `uid_fk` int(11) NOT NULL,  
  PRIMARY KEY (`uid`),  
  UNIQUE KEY `user_email` (`user_email`),  
  UNIQUE KEY `username` (`username`),  
  FULLTEXT KEY `idx_search` (`full_name`,`address`,`user_email`,`username`)  
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=66 ;  

CREATE TABLE IF NOT EXISTS `relationship` (  
`id` int(10) NOT NULL auto_increment,  
`user_1` varchar(10) NOT NULL,  
`user_2` varchar(10) NOT NULL,  
`amico` enum('S','N') NOT NULL default 'N',  
PRIMARY KEY (`id`)  
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=76 ;
 
Ultima modifica di un moderatore:

searedone

Utente Attivo
11 Giu 2010
508
0
0
mhhhhhhhhhh che rabbiaaaaaaaaaa

ho provato così mi viene fuori la finestra per postare ma non mi vengono fuori i risultati ....


aiutatemiiiiiiiiiii

PHP:
   // Updates        
      public function Updates($uid,$lastid)  
    { 
      // More Button 
       $morequery=""; 
        if($lastid) 
        $morequery=" and M.msg_id<'".$lastid."' "; 
       // More Button End 
        
       $query = mysql_query( "SELECT * FROM 
    messages INNER JOIN users ON (messages.uid_fk=uid ) 
    INNER JOIN relationship ON ( messages.uid_fk = relationship.id )
  
    WHERE 
  messages.uid_fk='$uid' AND relationship.user_1 = 'S' AND relationship.user_2 = 'S' $morequery order by messages.msg_id desc limit " .$this->perpage) or die(mysql_error());
   
         while($row=mysql_fetch_array($query)) 
        $data[]=$row; 
         
        return $data; 
        
       
    }
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
cosi ancora meglio mi prende anche le foto ...

solo che non mi fa' uscire i post vecchi e ad ogni refresh spariscono i mex postati ...

PHP:
<?php 


class Wall_Updates { 

public $perpage = 100; // Uploads perpage 
     

     
     // Updates        
      public function Updates($uid,$lastid)  
    { 
      // More Button 
       $morequery=""; 
        if($lastid) 
        $morequery=" and M.msg_id<'".$lastid."' "; 
       // More Button End 
        
       $query = mysql_query( "SELECT messages.msg_id, messages.uid_fk, messages.message, messages.created, messages.uploads FROM 
    messages INNER JOIN users ON (messages.uid_fk=uid ) 
    INNER JOIN relationship ON ( messages.uid_fk =relationship.id )
  
    WHERE 
  messages.uid_fk='uid' AND messages.uid_fk='id'  AND relationship.user_1 = 'S' AND relationship.user_2 = 'S' $morequery order by messages.msg_id desc limit " .$this->perpage) or die(mysql_error());
   
         while($row=mysql_fetch_array($query)) 
        $data[]=$row; 
         
        return $data; 
        
       
    }
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ma tu scrivi
...ON (messages.usersuid=user.uid )...
cioè

il campo usesuid della tabella messages uguale al campo uid della tabella user

ma guardanro la tabella messages non esiste alcun campo chiamato usersuid (o come dice alex useruid che comunque sarebbe lo stesso)
sei sicuro (l'unica cosa che ci assomiglia) non debba essere

...ON (messages.uid_fk=user.uid )...

quando fai le join i campi delle tabelle jointate devono esistere, cioè i nomi devo corrispondere tra quello che metti nella query di join e i nomi dei campi in tabella.
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ciao..

se aggiungo user.uid mi da il seguente errore


Unknown column 'user.uid' in 'on clause'

se metto users.uid funge, mi fa' scrivere i post ma quando faccio refresh spariscono sia quelli postati che quelli che c'erano :(

cmq se noti l'ultima join che avevo postato ha già le modifiche che mi hai descritto, forse sbaglio qualche altra relazione :(

PHP:
class Wall_Updates { 

public $perpage = 100; // Uploads perpage 
     

     
     // Updates        
      public function Updates($uid,$lastid)  
    { 
      // More Button 
       $morequery=""; 
        if($lastid) 
        $morequery=" and M.msg_id<'".$lastid."' "; 
       // More Button End 
        
       $query = mysql_query( "SELECT messages.msg_id, messages.uid_fk, messages.message, messages.created, users.username,  messages.uploads FROM 
     messages INNER JOIN users ON (messages.uid_fk=users.uid ) 
    INNER JOIN relationship ON ( messages.uid_fk =relationship.id )
  
    WHERE 
  messages.uid_fk=users.uid AND  messages.uid_fk='uid'  AND relationship.user_1 = 'S' AND relationship.user_2 = 'S' $morequery order by messages.msg_id desc limit " .$this->perpage) or die(mysql_error());
   
         while($row=mysql_fetch_array($query)) 
        $data[]=$row; 
         
        return $data; 
        
       
    } 
        
        
       // Updates        
      public function Total_Updates($uid)  
    { 
             
               $query = mysql_query("SELECT messages.msg_id, messages.uid_fk, messages.message, messages.created, messages.uploads, users.username  FROM 
     messages INNER JOIN users ON (messages.uid_fk=users.uid )  
    INNER JOIN relationship ON ( messages.uid_fk =relationship.id )
  
    WHERE 
  messages.uid_fk=users.uid AND  messages.uid_fk='uid' AND relationship.user_1 = 'S' AND relationship.user_2 = 'S' $morequery order by messages.msg_id desc ") or die(mysql_error()); 
          
        $data=mysql_num_rows($query); 
        return $data; 
          
    }
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
un'altra cosa: nell'ultima select metti messages.uploads, ma nella tabella messages (almeno da quella che hai postato e nemmeno nelle altre) non esiste un campo di nome uploads

se non fai corrispondere i nomi dei campi non ottieni nulla
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Scusa hai ragione ...

ti posto le nuove tabelle con le modifiche ...

Cmq sono convinto che siamo quasi alla soluzione ma non capisco cosa manca ... infatti funziona tutto solo che secondo me da' un problema relationship e quindi non mi fa' vedere i risultati dopo il refresh o quando carico la pagina ....

perché se scrivo un comento nuovo funge solo che poi sparisce ...
users
PHP:
CREATE TABLE IF NOT EXISTS `users` (
  `uid` bigint(20) NOT NULL AUTO_INCREMENT,
  `md5_id` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `full_name` tinytext COLLATE latin1_general_ci NOT NULL,
  `username` varchar(255) COLLATE latin1_general_ci DEFAULT NULL,
  `user_email` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `email` varchar(100) COLLATE latin1_general_ci NOT NULL,
  `user_level` tinyint(4) NOT NULL DEFAULT '1',
  `pwd` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `address` text COLLATE latin1_general_ci NOT NULL,
  `country` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `tel` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `fax` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `website` text COLLATE latin1_general_ci NOT NULL,
  `date` date NOT NULL DEFAULT '0000-00-00',
  `users_ip` varchar(200) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `approved` int(1) NOT NULL DEFAULT '0',
  `activation_code` int(10) NOT NULL DEFAULT '0',
  `banned` int(1) NOT NULL DEFAULT '0',
  `ckey` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `ctime` varchar(220) COLLATE latin1_general_ci NOT NULL DEFAULT '',
  `nome_file_vero` varchar(255) COLLATE latin1_general_ci NOT NULL,
  `tipo_file` varchar(255) COLLATE latin1_general_ci NOT NULL,
  `dati_file` longblob NOT NULL,
  `uid_fk` int(11) NOT NULL,
  `profile_pic` varchar(200) COLLATE latin1_general_ci DEFAULT NULL,
  PRIMARY KEY (`uid`),
  UNIQUE KEY `user_email` (`user_email`),
  UNIQUE KEY `username` (`username`),
  FULLTEXT KEY `idx_search` (`full_name`,`address`,`user_email`,`username`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=66 ;

comments
PHP:
CREATE TABLE IF NOT EXISTS `comments` (
  `com_id` int(11) NOT NULL AUTO_INCREMENT,
  `comment` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
  `msg_id_fk` int(11) DEFAULT NULL,
  `uid_fk` int(11) DEFAULT NULL,
  `ip` varchar(30) DEFAULT NULL,
  `created` int(11) DEFAULT '1269249260',
  PRIMARY KEY (`com_id`),
  KEY `msg_id_fk` (`msg_id_fk`),
  KEY `uid_fk` (`uid_fk`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=84 ;
Messages

PHP:
CREATE TABLE IF NOT EXISTS `messages` (
  `msg_id` int(11) NOT NULL AUTO_INCREMENT,
  `message` varchar(200) CHARACTER SET utf8 DEFAULT NULL,
  `uid_fk` int(11) DEFAULT NULL,
  `ip` varchar(30) DEFAULT NULL,
  `created` int(11) DEFAULT '1269249260',
  `uploads` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`msg_id`),
  KEY `uid_fk` (`uid_fk`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=393 ;

message_uploads

PHP:
CREATE TABLE IF NOT EXISTS `user_uploads` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `image_path` varchar(30) DEFAULT NULL,
  `uid_fk` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `uid_fk` (`uid_fk`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=585 ;

relationship

PHP:
CREATE TABLE IF NOT EXISTS `relationship` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `user_1` bigint(20) NOT NULL,
  `user_2` bigint(20) NOT NULL,
  `amico` enum('S','N') NOT NULL DEFAULT 'N',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=67 ;

--
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
due piccole cose.
1) tiratina d'orecchi: se modifichi qualcosa (es le tabelle) avvisa, altrimenti uno non capisce poi più nulla
2) per il fatto che, se non ho capito male, alla prima volta ti appare giusto, al refresh, o al ricaricamento della pagina, sparisce tutto può essere che tu perda qualche dato.
esempio se in una pagina raccogli un $_POST proveniente da un form, al ricaricamento della pagina il valore del $_POST sparisce (piccolo codice es)
PHP:
<?php
//...
$nome=$_POST['nome'];//analogo per il $_GET
$q="SELECT * FROM tabella WHERE nome='$nome'";
var_dump($q);
$ris=mysql_query($q);
//...
?>
mettiamo che nel form tu abbia scritto Pinco e dato il submit
il var_dump di $q ti restituisce
string(40) "SELECT * FROM tabella WHERE nome='Pinco'"
e $ris fa la query al db estraendo i valori in cui nome uguale a Pinco, in seguito visualizzandoli
se ricarichi la pagina o dai il refresh il valore del $_POST e quindi di $nome diventano vuoti, per cui il var dum_dump ti restituirà
string(35) "SELECT * FROM tabella WHERE nome=''"
quindi la query non estrarrà nulla (salvo che tu non abbia qualche campo nome uguale a NULL) restituendoti la pagina vuota
per mantenere (sino ad un nuovo submit) il valore di $nome anche in caso di refresh dovresti passarlo in sessione (es.)

PHP:
<?php
session_start();
//.....
if(isset($_POST['nome'])){
	$nome=$_POST['nome'];//se ho dato il subimt lo metto in sessione
	$_SESSION['nome']=$nome;
}else{//altrimenti valorizzo $nome con la sessione creata
	$nome=$_SESSION['nome'];
}
//quindi la variabile $nome rimane sempre valorizzata
//...
?>
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
si hai ragione scusa per la modifica , ma nel frattempo cerco di andare avanti, ma questa query b..... non mi fa' finire ...

cmq il problema secondo me sta nella join che ho fatto ......

io ho due pagine una myprofile e una myaccount

in myprofile c'è lo script originale e ad ogni refresh post apertura ecc trovo tutti i post

script

PHP:
<?php


class Wall_Updates {

public $perpage = 10; // Uploads perpage
    

	
     // Updates   	
	  public function Updates($uid,$lastid) 
	{
	  // More Button
       $morequery="";
		if($lastid)
		$morequery=" and M.msg_id<'".$lastid."' ";
	   // More Button End
	   
	    $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username,M.uploads FROM messages M, users U  WHERE M.uid_fk=U.uid and M.uid_fk='$uid' $morequery order by M.msg_id desc limit " .$this->perpage) or die(mysql_error());
		
         while($row=mysql_fetch_array($query))
		$data[]=$row;
	    return $data;
		
    }
	     // Updates   	
	  public function Total_Updates($uid) 
	{
	 	   
	    $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username,M.uploads FROM messages M, users U  WHERE M.uid_fk=U.uid and M.uid_fk='$uid' $morequery order by M.msg_id ") or die(mysql_error());
		$data=mysql_num_rows($query);
        return $data;
		
    }
	
	//Comments
	   public function Comments($msg_id,$second_count) 
	{
	$query='';
	  if($second_count)
	  $query="limit $second_count,2";
	    $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 $query") or die(mysql_error());
	   while($row=mysql_fetch_array($query))
	    $data[]=$row;
        if(!empty($data))
		{
       return $data;
         }
	}

in quello modificato così

PHP:
class Wall_Updates { 

public $perpage = 100; // Uploads perpage 
     

     
     // Updates        
      public function Updates($uid,$lastid)  
    { 
      // More Button 
       $morequery=""; 
        if($lastid) 
        $morequery=" and M.msg_id<'".$lastid."' "; 
       // More Button End 
        
       $query = mysql_query( "SELECT messages.msg_id, messages.uid_fk, messages.message, messages.created, users.username,  messages.uploads FROM 
     messages INNER JOIN users ON (messages.uid_fk=users.uid ) 
    INNER JOIN relationship ON ( messages.uid_fk =relationship.id )
  
    WHERE 
  messages.uid_fk=users.uid AND  messages.uid_fk='uid'  AND relationship.user_1 = 'S' AND relationship.user_2 = 'S' $morequery order by messages.msg_id desc limit " .$this->perpage) or die(mysql_error());
   
         while($row=mysql_fetch_array($query)) 
        $data[]=$row; 
         
        return $data; 
        
       
    } 
        
        
       // Updates        
      public function Total_Updates($uid)  
    { 
             
               $query = mysql_query("SELECT messages.msg_id, messages.uid_fk, messages.message, messages.created, messages.uploads, users.username  FROM 
     messages INNER JOIN users ON (messages.uid_fk=users.uid )  
    INNER JOIN relationship ON ( messages.uid_fk =relationship.id )
  
    WHERE 
  messages.uid_fk=users.uid AND  messages.uid_fk='uid' AND relationship.user_1 = 'S' AND relationship.user_2 = 'S' $morequery order by messages.msg_id desc ") or die(mysql_error()); 
          
        $data=mysql_num_rows($query); 
        return $data; 
          
    }

i post non me li trova all'apertura come se mancasse o sbagliassi qualcosa ...

secondo me dobbiamo se puoi darmi una mano trovare il modo di inserire relationship nella query forse in maniera diversa ...

perché messa così funzia e a differenza di prima se scrivo non vedo post doppi ecc ecc, i post li trovo quando vado a riloggarmi e trovo l'ultimo post ripetuto per tutti gli users

PHP:
class Wall_Updates { 

public $perpage = 100; // Uploads perpage 
     

     
     // Updates        
      public function Updates($uid,$lastid)  
    { 
      // More Button 
       $morequery=""; 
        if($lastid) 
        $morequery=" and M.msg_id<'".$lastid."' "; 
       // More Button End 
        
        $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username, M.uploads FROM messages M, users U WHERE M.uid_fk='$uid' AND M.uid_fk = U.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')  $morequery order by M.msg_id desc limit " .$this->perpage) or die(mysql_error()); 
   
         while($row=mysql_fetch_array($query)) 
        $data[]=$row; 
         
        return $data; 
        
       
    } 
        
        
       // Updates        
      public function Total_Updates($uid)  
    { 
             
               $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username, M.uploads FROM messages M, users U WHERE M.uid_fk = U.uid AND M.uid_fk='$uid' AND M.uid_fk = U.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')  $morequery order by M.msg_id ") or die(mysql_error()); 
          
        $data=mysql_num_rows($query); 
        return $data; 
          
    }

se può' interessarti questo è il file session.php

PHP:
<?php
session_start();
$uid=$_SESSION['user_uid']; 
?>
 
Ultima modifica:

searedone

Utente Attivo
11 Giu 2010
508
0
0
Non so quanto possa servire Borgo, ma la query fatta così non mi riproduce più lo stesso post per tutti gli users, ma solo per quelli che sono amici.

Naturalmente avviene quando mi logo come altro utente al posto di vedere es admin che ha scritto waw .. lo stesso post è ripetuto per paperino waw admin waw pippo waw pluto waw

Meglio di prima che lo faceva per tutti gli users ... secondo me c'è una correzione da fare nella parte relationship ma ovvio non so qual'è .. grazie a tutti coloro che possano aiutarmi

PHP:
class Wall_Updates { 

public $perpage = 100; // Uploads perpage 
     

     
     // Updates        
      public function Updates($uid,$lastid)  
    { 
      // More Button 
       $morequery=""; 
        if($lastid) 
        $morequery=" and M.msg_id<'".$lastid."' "; 
       // More Button End 
        
        $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username, M.uploads FROM messages M, users U WHERE M.uid_fk='$uid' AND M.uid_fk = U.uid AND ( SELECT user_1 FROM relationship AS R WHERE R.user_2 = '$uid' AND R.amico = 'S' ) or U.uid in  ( SELECT user_2 FROM relationship AS R WHERE R.user_1 = '$uid' AND R.amico = 'S')  $morequery order by M.msg_id desc limit " .$this->perpage) or die(mysql_error()); 
   
         while($row=mysql_fetch_array($query)) 
        $data[]=$row; 
         
        return $data; 
        
       
    } 
        
        
       // Updates        
      public function Total_Updates($uid)  
    { 
             
$query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username, M.uploads FROM messages M, users U WHERE M.uid_fk='$uid' AND M.uid_fk = U.uid AND ( SELECT user_1 FROM relationship AS R WHERE R.user_2 = '$uid' AND R.amico = 'S' ) or U.uid in  ( SELECT user_2 FROM relationship AS R WHERE R.user_1 = '$uid' AND R.amico = 'S')  $morequery order by M.msg_id ") or die(mysql_error()); 
          
        $data=mysql_num_rows($query); 
        return $data; 
          
    }
 
Discussioni simili
Autore Titolo Forum Risposte Data
otto9due Inserire o aggiornare tabella my sql controllando una coppia di valori PHP 7
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
S Inserire foto in ogni cella di una tabella Javascript 0
B inserire valori da una tabella a un altra mysql PHP 34
M inserire i dati ottenuti da una jquery in una tabella già esistente jQuery 1
F INSERIRE IN UN'UNICA CASELLA DI TESTO REPORT ACCESS I VALORI DELLA TABELLA DI UN'INTERA COLONNA MS Access 2
G [PHP] inserire risultato di una query in una tabella PHP 3
C Inserire dati tabella leggendo parte di altra tabella con php PHP 13
N [PHP] inserire campi tabella in file word PHP 0
B [MySQL] INSERIRE UTENTE CONNESSO IN TABELLA MySQL 2
AlexPD Inserire tabella excel dinamica su pagina web PHP 4
M creare una tabella dove inserire i dati del database Database 1
F Inserire tanti dati in una tabella MySQL 2
R Inserire in tabella valore selezionato da un menu' a tendina popolato dai valori di un'altra tabella PHP 5
C Inserire dei dati di una tabella dinamica in un file esterno js Javascript 17
L Inserire Array in tabella mysql PHP 11
C Inserire Valori Da Un File Js In Una Tabella Html Javascript 19
nim inserire dati in tabella con ajax (ciclo foreach) Ajax 10
S Access (Inserire un valore di un textBox in una tabella) MS Access 0
M inserire da remoto dati in una tabella PHP 21
A inserire una tabella Javascript 1
D [Access] Come inserire i dati in una tabella secondaria? MS Access 0
I inserire dati in tabella in base all'if PHP 11
L Inserire dati in una tabella PHP 6
R Creazione tabella in cui è possibile inserire percentuali... HTML e CSS 1
C Sql per inserire dati in una tabella Classic ASP 1
Elisacau [Contact form 7] Inserire Numero auto incrementante WordPress 1
gara1 inserire immagine di sfondo in canvas Javascript 0
FDF182 Inserire pdf in db PHP 3
D Inserire link PHP 0
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
P inserire due voci in un titolo post wp WordPress 1
R inserire video nel sito HTML e CSS 15
J Inserire blog wordpress in angular CMS (Content Management System) 0
A inserire variabile php colore in div html PHP 2
L inserire dati multi livello PHP 8
G Inserire una scritta Java 1
M Inserire variabile nella value di una hidden PHP 3
G inserire dati automaticamente in mysql PHP 0
B Vorrei inserire una finestra con messaggio ad un history.back PHP 16
Shyson Inserire placeholder nel campo cerca PHP 5
M Lanciare alert se il codice fiscale è già presente nel db e lasciare la scelta di inserire all'utente PHP 42
atipika INSERIRE ICONE DOWNLOAD E STAMPA WORDPRESS WordPress 10
F Creare un set di date a seconda del frazionamento scelto da inserire in MySQL PHP 6
D [Javascript] inserire uno script in un file php Javascript 6
napuleone [HTML] type="file" inserire path di partenza HTML e CSS 4
Monital [Javascript] inserire dati estratti dal db in html fisso Javascript 1
R [WordPress] Inserire campi aggiuntivi ad un Submit Form già dato dal template (front-end) WordPress 0
G Inserire "Leggi il resto dell'articolo" con link al post sul sito preso via RSS Email Marketing 0
M [PHP] Come inserire codice html in un ciclo while PHP 2

Discussioni simili