Estrazione Username

Stato
Chiusa ad ulteriori risposte.

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ciao,
ho un problema di estrazione dell'username che a mio giudizio è un po' anomalo.

vi posto la query :

questa era l'originale

PHP:
class Wall_Updates { 


     
     // 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' order by M.msg_id desc ") or die(mysql_error()); 
         while($row=mysql_fetch_array($query)) 
        $data[]=$row; 
        return $data; 
         
    }

L'ho modificata cosi perchè mi serve che i post li possano vedere solo gli amici di tipo fb o twitter, funziona mi printa l'username tutto se non che mi ripete lo stesso post per tutti gli users registrati e non solo per chi ha scritto

PHP:
class Wall_Updates { 


     
     // Updates        
      public function Updates($uid)  
    { 
     
     
         $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages AS M, users AS U WHERE M.uid_fk = U.uid AND M.uid_fk='$uid' 
OR (M.uid_fk IN (SELECT r.user_1 FROM relationship AS r WHERE r.user_2 = '$uid' AND r.amico = 'S')  
OR M.uid_fk IN (SELECT s.user_2 FROM relationship AS s WHERE s.user_1 = '$uid' AND s.amico = 'S'))  ORDER BY M.msg_id desc ") or die(mysql_error());      
         while($row=mysql_fetch_array($query)) 
        $data[]=$row; 
        return $data; 
         
    }

Se tolgo U.username , users AS U non mi printa più l'username di fianco alla foto nel post ma solo foto e mex ... :(

codice di post ed estrazione .. si inizia con

il codice nella index

PHP:
<?php 
error_reporting(0); 
include_once 'includes/db.php'; 
include_once 'includes/functions2.php'; 
include_once 'includes/tolink.php'; 
include_once 'includes/time_stamp.php'; 
include_once 'session.php'; 

$Wall = new Wall_Updates(); 
$updatesarray=$Wall->Updates($uid); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Version 3.0</title> 
<link href="css/wall.css" rel="stylesheet" type="text/css"> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
 <script type="text/javascript" src="js/jquery.oembed.js"></script> 
 <script type="text/javascript" src="js/wall.js"></script> 
</head> 
<body> 
<div id="wall_container"> 
<div id="updateboxarea"> 
<h4>What's up?</h4> 
<form method="post" action=""> 
<textarea cols="30" rows="4" name="update" id="update" maxlength="200" ></textarea> 
<br /> 
<input type="submit"  value=" Update "  id="update_button"  class="update_button"/> 
</form> 
</div> 
<div id='flashmessage'> 
<div id="flash" align="left"  ></div> 
</div> 
<div id="content"> 

<?php include('load_messages.php'); ?>
 
messages_ayax.php

PHP:
 <?php 
 //Srinivas Tamada http://9lessons.info 
//Load latest update  
error_reporting(0); 
include_once 'includes/db.php'; 
include_once 'includes/functions2.php'; 
include_once 'includes/tolink.php'; 
include_once 'includes/time_stamp.php'; 
include_once 'session.php'; 
$Wall = new Wall_Updates(); 
if(isSet($_POST['update'])) 
{ 
$update=$_POST['update']; 
$data=$Wall->Insert_Update($uid,$update); 

if($data) 
{ 
$msg_id=$data['msg_id']; 
$message=tolink(htmlentities($data['message'])); 
$time=$data['created']; 
$uid=$data['uid_fk']; 
$username=$data['username']; 
$face=$Wall->Gravatar($uid); 
//$commentsarray=$Wall->Comments($msg_id); 
?> 
<div class="stbody" id="stbody<?php echo $msg_id;?>"> 
<div class="stimg"> 
<img src="<?php echo $face;?>" class='big_face'/> 
</div>  
<div class="sttext"> 
<a class="stdelete" href="#" id="<?php echo $msg_id;?>" title='Delete update'>X</a> 
<b><?php echo $username;?></b> <?php echo $message;?> 
<div class="sttime"><?php time_stamp($time);?> | <a href='#' class='commentopen' id='<?php echo $msg_id;?>' title='Comment'>Comment </a></div>  
<div id="stexpandbox"> 
<div id="stexpand"></div> 
</div> 
<div class="commentcontainer" id="commentload<?php echo $msg_id;?>"> 
<?php// include('load_comments.php') ?> 
</div> 
<div class="commentupdate" style='display:none' id='commentbox<?php echo $msg_id;?>'> 
<div class="stcommentimg"> 
<img src="<?php echo $face;?>" class='small_face'/> 
</div>  
<div class="stcommenttext" > 
<form method="post" action=""> 
<textarea name="comment" class="comment" maxlength="200"  id="ctextarea<?php echo $msg_id;?>"></textarea> 
<br /> 
<input type="submit"  value=" Comment "  id="<?php echo $msg_id;?>" class="comment_button"/> 
</form> 
</div> 
</div> 
</div>  
</div> 
<?php 
} 
} 
?>

load messages.php

PHP:
<?php 
//Srinivas Tamada http://9lessons.info 
//Loading Comments link with load_updates.php  
foreach($updatesarray as $data) 
 { 
 $msg_id=$data['msg_id']; 
 $orimessage=$data['message']; 
 $message=tolink(htmlentities($data['message'])); 
  $time=$data['created']; 
   $username=$data['username']; 
 $uid=$data['uid_fk']; 
 $face=$Wall->Gravatar($uid); 
 $commentsarray=$Wall->Comments($msg_id); 
?> 

<script type="text/javascript">  
$(document).ready(function(){$("#stexpand<?php echo $msg_id;?>").oembed("<?php echo  $orimessage; ?>",{maxWidth: 400, maxHeight: 300});}); 
</script> 
<div class="stbody" id="stbody<?php echo $msg_id;?>"> 

<div class="stimg"> 
<img src="<?php echo $face;?>" class='big_face'/> 
</div>  
<div class="sttext"> 
<a class="stdelete" href="#" id="<?php echo $msg_id;?>" title="Delete update">X</a> 
<b><?php echo " <a href=\"profile.php?uid=$uid\"/>$username</a>";  ?></b> <?php echo $message;?> 
<div class="sttime"><?php time_stamp($time);?> | <a href='#' class='commentopen' id='<?php echo $msg_id;?>' title='Comment'>Comment </a></div>  

<div id="stexpandbox"> 
<div id="stexpand<?php echo $msg_id;?>"></div> 
</div> 

<div class="commentcontainer" id="commentload<?php echo $msg_id;?>"> 


<?php include('load_comments.php') ?> 





</div> 
<div class="commentupdate" style='display:none' id='commentbox<?php echo $msg_id;?>'> 
<div class="stcommentimg"> 
<img src="<?php echo $face;?>" class='small_face'/> 
</div>  
<div class="stcommenttext" > 
<form method="post" action=""> 

<textarea name="comment" class="comment" maxlength="200"  id="ctextarea<?php echo $msg_id;?>"></textarea> 
<br /> 
<input type="submit"  value=" Comment "  id="<?php echo $msg_id;?>" class="comment_button"/> 
</form> 


</div> 
</div> 


</div>  

</div> 


<?php 

  } 
?>
 
le 4 tabelle dei db

comments

PHP:
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 ;

messages

PHP:
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 ;
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, 
  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 ;

Relationship

PHP:
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 ;
 
la classe completa

PHP:
<?php 



class Wall_Updates { 


     
     // Updates        
      public function Updates($uid)  
    { 
     
         $query = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created  FROM messages M  WHERE   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 nome_file_vero FROM `users` WHERE uid='$uid'") or die(mysql_error()); 
       $row=mysql_fetch_array($query); 
       if(!empty($row)) 
       { 
        $email=$row['email']; 
        $nome_file_vero=$row['nome_file_vero']; 
        $lowercase = strtolower(nome_file_vero); 
        $nome_file_vero = 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; 
                  
    } 

     

} 

?>

e con questo spero di aver messo tutto quello che puo' servire a risolvere l'enigma
 
ciao
scusa ma riguardando le tabelle ho notato una cosa e non vorrei che fosse quella
nella tabella user metti
`uid` bigint(20) NOT NULL AUTO_INCREMENT,
cioè uid in intero
poi nella relationship
`user_1` varchar(10) NOT NULL,
`user_2` varchar(10) NOT NULL,

ora nella tabella relationship dovrebbero esserci,se non ricordo male, i vari uid degli utenti (amici o no), non sarebbe meglio visto che poi ti serve nel confronto
mettere
`user_1` bigint(20) NOT NULL,
`user_2` bigint(20) NOT NULL,
non vorrei che stessimo girando attorno ad un problema che nasce molto a monte
dico questo anche perchè mi hanno stupito quei valori NULL nello scrip che ti avevo postato (che comunque riguardo perche come logica, anche se non come script, dovrebbe andare bene)
 
ciao
guarda che ho ripreso in mano il lo script che ti avevo postato.
mi sono fatto la seguente tabella "relationship"
Codice:
id	user_1  user_2  amici  
1	22       33        S 
2	22       44        S 
3	55       22        S 
4	22       99        N
con una piccola correzione sulla prima selct: ho racchiuso l'OR tra parentesi
ho commentato la seconda parte perche non ho fatto le altre tabella (troppo lavoro)
lo script è il seguente
PHP:
<?php
//......
$conn = @mysql_connect($host,$username,$password) or die (mysql_error());
$sel = @mysql_select_db($db) or die (mysql_error());
$uid=22;//preso un valore dalla tabella
//1) dalla tabella relationship estrai tutti gli user amici
$q=mysql_query("SELECT user_1, user_2 FROM relationship WHERE (user_1=$uid OR user_2=$uid) AND amici='S'");
while($am=mysql_fetch_array($q)){
    $amici_grezzi[]=$am['user_1'];
    $amici_grezzi[]=$am['user_2'];
}
//ripulisci l'array dei valori duplicati
var_dump($amici_grezzi);echo "<br>";
$amici=array_unique($amici_grezzi);
var_dump($amici);echo "<br>";
/*
//quindi nell'array amici trovi tutti gli idi degli amici di $uid + $uid
//se vuoi puoi ordinare l'array con sort($amici);
//2) a questo punto fai una join tra messaggi e user ciclando l'array $amici
foreach($amici AS $valore){
//estraggo tutti i messaggi di $uid e dei suoi amici
    $q=mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages AS M, users AS U WHERE M.uid_fk=$valore");
    $row=mysql_fetch_array($q);
    $data[]=$row;
}
return $data;
//...
*/
?>
e questo, come deve essere è l'output dei var_dump
Codice:
array(6) { [0]=> string(2) "22" [1]=> string(2) "33" [2]=> string(2) "22" [3]=> string(2) "44" [4]=> string(2) "55" [5]=> string(2) "22" } 
array(4) { [0]=> string(2) "22" [1]=> string(2) "33" [3]=> string(2) "44" [4]=> string(2) "55" }
come puoi notare mi ha estratto tutti gli id amici di 22 e, per il secondo, solo una volta, e non c'è 99
quindi riprovalo
 
ciao

ho fatto così e i vardump mi restituiscono ciò :

NULL
NULL
NULL


PHP:
class Wall_Updates {


    
     // Updates   	
	  public function Updates($uid) 
	{
	
	$q=mysql_query("SELECT user_1, user_2 FROM relationship WHERE (user_1=$uid OR user_2=$uid) AND amici='S'"); 
while($am=mysql_fetch_array($q)){ 
    $amici_grezzi[]=$am['user_1']; 
    $amici_grezzi[]=$am['user_2']; 
} 
//ripulisci l'array dei valori duplicati 
var_dump($amici_grezzi);echo "<br>"; 
$amici=array_unique($amici_grezzi); 
var_dump($amici);echo "<br>"; 
		 foreach($amici AS $valore){  
    $q=mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages AS M, users AS U WHERE M.uid_fk=$valore")or die(mysql_error());       
    $row=mysql_fetch_array($q); 
    /* ****************************************** 
    qui ho un piccolo dubbio 
    essendo $row un array, $data diventa un array di array 
    quindi per estrarre i dati si dovrebbe fare un doppio foreach o usare serialize/unserialize 
    ****************************************** */ 
    $data[]=$row; 
   
    }  
     var_dump($data);echo "<br><br>";  
     return $data;
		
 
    

//quindi per verificare 
var_dump($data);echo "<br><br>"; 
		$data[]=$row;
	    return $data;
		
    }
 
se cambio la tabella relationship come da tuo consiglio così i vardump restituiscono


NULL
NULL
NULL

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=65 ;
 
diceva ..

eppur si muove ....

questo è quello che ora mi restituisce il vardump


array(38) { [0]=> string(2) "54" [1]=> string(2) "57" [2]=> string(2) "54" [3]=> string(2) "57" [4]=> string(2) "54" [5]=> string(2) "55" [6]=> string(2) "55" [7]=> string(2) "54" [8]=> string(2) "57" [9]=> string(2) "54" [10]=> string(2) "57" [11]=> string(2) "54" [12]=> string(2) "54" [13]=> string(2) "61" [14]=> string(2) "54" [15]=> string(2) "55" [16]=> string(2) "54" [17]=> string(2) "55" [18]=> string(2) "54" [19]=> string(2) "55" [20]=> string(2) "55" [21]=> string(2) "54" [22]=> string(2) "54" [23]=> string(2) "54" [24]=> string(2) "54" [25]=> string(2) "55" [26]=> string(2) "54" [27]=> string(2) "54" [28]=> string(2) "54" [29]=> string(2) "54" [30]=> string(2) "54" [31]=> string(2) "54" [32]=> string(2) "54" [33]=> string(2) "54" [34]=> string(2) "54" [35]=> string(2) "54" [36]=> string(2) "54" [37]=> string(2) "55" }
array(4) { [0]=> string(2) "54" [1]=> string(2) "57" [5]=> string(2) "55" [13]=> string(2) "61" }
array(4) { [0]=> array(10) { [0]=> string(2) "66" ["msg_id"]=> string(2) "66" [1]=> string(2) "54" ["uid_fk"]=> string(2) "54" [2]=> string(5) "jkljk" ["message"]=> string(5) "jkljk" [3]=> string(10) "1320870329" ["created"]=> string(10) "1320870329" [4]=> string(5) "admin" ["username"]=> string(5) "admin" } [1]=> bool(false) [2]=> array(10) { [0]=> string(2) "73" ["msg_id"]=> string(2) "73" [1]=> string(2) "55" ["uid_fk"]=> string(2) "55" [2]=> string(10) "fanculooo " ["message"]=> string(10) "fanculooo " [3]=> string(10) "1320871883" ["created"]=> string(10) "1320871883" [4]=> string(5) "admin" ["username"]=> string(5) "admin" } [3]=> array(10) { [0]=> string(3) "196" ["msg_id"]=> string(3) "196" [1]=> string(2) "61" ["uid_fk"]=> string(2) "61" [2]=> string(31) "admin è un pirlaaaa" ["message"]=> string(31) "admin è un pirlaaaa" [3]=> string(10) "1321129686" ["created"]=> string(10) "1321129686" [4]=> string(5) "admin" ["username"]=> string(5) "admin" } }
 
problema cmq ...

non mi posta tutti i post e se scrivo un post dopo che refrescho la pagina non c'è più il post ....
 
SIIIIIIII

almeno qualcosa di nuovo c'è ...

naturalmente grazie mille per la tua disponibilità , nel frattempo io continuo a provare e riprova pezzi di codice ma niente da fare ...
 
ciao
in effetti come pensavo $data è un array di array, quindi ora vediamo come meglio trattarlo
comunque se non vedo male dentro c'è tutto compreso l'username
fammi queste due prove modificando il ciclo foreach
togli i var_dump precedenti per non fare confusione
prova 1)
PHP:
<?php
//...........
foreach($amici AS $valore){   
	$q=mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages AS M, users AS U WHERE M.uid_fk=$valore")or die(mysql_error());        
    if(mysql_num_rows($q)>0){//aggiunto l'if
		$row=mysql_fetch_array($q);  
		$data[]=$row;  
    }
}  
var_dump($data);
//...........
?>
prova 2)
PHP:
<?php
//...........
foreach($amici AS $valore){   
	$q=mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages AS M, users AS U WHERE M.uid_fk=$valore")or die(mysql_error());        
    if(mysql_num_rows($q)>0){//aggiunto l'if
		$row=mysql_fetch_array($q);  
		$data[]=serialize($row); //aggiunto serialize
    }
}  
var_dump($data);
//...........
?>
poi posta i risultati dei var_dump delle due prove
 
ciao
ma prima quel var_dump ti restituiva

array(4) { [0]=> array(10) { [0]=> string(2) "66" ["msg_id"]=> string(2) "66" [1]=> string(2) "54" ["uid_fk"]=> string(2) "54" [2]=> string(5) "jkljk" ["message"]=> string(5) "jkljk" [3]=> string(10) "1320870329" ["created"]=> string(10) "1320870329" [4]=> ecc...

non vorrei che fosse quell'if che avevo messo perchè nel dump ho visto un bool=>FALSE da qualche parte pensando che potesse essere un record con qualche campo vuoto.
c'è un'altra cosa che devo capire: perche raddoppia i valori, es: [0]=> string(2) "66" ["msg_id"]=> string(2) "66"
 
PHP:
class Wall_Updates { 


     
     // Updates        
      public function Updates($uid)  
    { 
     
    $q=mysql_query("SELECT user_1, user_2 FROM relationship WHERE (user_1=$uid OR user_2=$uid) AND amico='S'");  
while($am=mysql_fetch_assoc($q)){  
    $amici_grezzi[]=$am['user_1'];  
    $amici_grezzi[]=$am['user_2'];  
}  
//ripulisci l'array dei valori duplicati  

$amici=array_unique($amici_grezzi);  

     foreach($amici AS $valore){  
    $q=mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages AS M, users AS U WHERE M.uid_fk=$valore")or die(mysql_error());       
    $row=mysql_fetch_assoc($q); 
    
    $data[]=$row; 
    }
   
       return $data;
   
 }
così tutto come prima
 
cosí nada risultati

PHP:
  // Updates        
      public function Updates($uid)  
    { 
     
    $q=mysql_query("SELECT user_1, user_2 FROM relationship WHERE (user_1=$uid OR user_2=$uid) AND amico='S'");  
while($am=mysql_fetch_assoc($q)){  
    $amici_grezzi[]=$am['user_1'];  
    $amici_grezzi[]=$am['user_2'];  
}  
//ripulisci l'array dei valori duplicati  

$amici=array_unique($amici_grezzi);  

     foreach($amici AS $valore){    
    $q=mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages AS M, users AS U WHERE M.uid_fk=$valore")or die(mysql_error());         
    if(mysql_num_rows($q)>0){//aggiunto l'if 
        $row=mysql_fetch_array($q);   
        $data[]=serialize($row); //aggiunto serialize 
    } 
}   
var_dump($data);
 
ciao
non dire quattro sinchè non l'hai nel sacco, ma forse forse ci siamo

PHP:
//...
foreach($amici AS $valore){
    $q=mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username FROM messages AS M, users AS U WHERE M.uid_fk=$valore");
    $row=mysql_fetch_array($q);
	$data[0]=$row['msg_id'];//da php 5 il primo elemento di push deve essere un array
	array_push($data,$row['uid_fk'],$row['uid_fk'],$row['message'],$row['created'],$row['username']);
}
var_dump($data);
//return $data;

aggiunta: da quando i var_dump ti restituivano tutta quella pappardella ha modificato qualcos'altro?
 
Ultima modifica:
Stato
Chiusa ad ulteriori risposte.

Discussioni simili