Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Anderson Baldner

join - php

Recommended Posts

bem pessoal,meu problema é o seguinte...eu estou programando mais para estudo mesmo,uma espécie de fórum,sendo que eu queria implementar nesse fórum,um sistema de profile.até ai tudo certo...já fiz os códigos pra adicionar,ler,apagar e editar os perfis,mais eu queria adicionar ainda a possibilidade de adicionar outros membros do fórum como amigos...eu já desenvolvi a´te a parte q aparece a mensagem na página inicial do usuário logo assim q ele entra,que tem alguém pedindo pra ser adicionado...mais o problema é só 1:

como exibir os amigos que o cara adicionar e/ou aceitar?

 

creio eu,q o apropriado pra esse caso,seja o INNER JOIN,só q eu já testei de td e naum funfa d jeito nenhum ¬¬

 

o código SQL da tabela q eu tenho aqui são esses:

CREATE TABLE IF NOT EXISTS `perfil` (
  `ID` int(11) NOT NULL auto_increment,
  `Nome` varchar(100) NOT NULL,
  `Apelido` varchar(50) NOT NULL,
  `Datanasc` varchar(10) NOT NULL,
  `Estado` varchar(100) NOT NULL,
  `Cidade` varchar(100) NOT NULL,
  `Pais` varchar(100) NOT NULL,
  `Descr` text NOT NULL,
  `Email` varchar(100) NOT NULL,
  `Sexo` varchar(10) NOT NULL,
  `Login` varchar(50) NOT NULL,
  `Senha` varchar(50) NOT NULL,
  `Foto` varchar(255) NOT NULL default 'imagens/padrao.JPG',
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11;

a tabela AMIGOS

Estrutura da tabela `amigos`
--

CREATE TABLE IF NOT EXISTS `amigos` (
  `Add` bigint(11) NOT NULL,
  `Added` bigint(11) NOT NULL,
  `Status` int(3) NOT NULL,
  `Msg` text NOT NULL,
  UNIQUE KEY `FriendPair` (`Add`,`Added`),
  KEY `Add` (`Add`),
  KEY `Added` (`Added`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

aqui vai o código q estou usando pra "listar",só q ele naum funciona corretamente...estou usando esse código em uma arquivo PHP externo das páginas do fórun que estou escrevendo,porque essa exibição é feita pelo ajax.

<?php

header("Content-Type: text/html; charset=ISO-8859-1",true);
include "valida_session.php";
include "conecta_db.php";
$_pagi_sql = "SELECT * FROM amigos";

$_pagi_cuantos = 10;			//quantidade de registros por pagina
$_pagi_nav_anterior = "anterior";	//string para anterior
$_pagi_nav_siguiente = "seguinte";	//string para seguinte
$_pagi_nav_primera = "primeira";	//string para primeira
$_pagi_nav_ultima = "última";		//string para última
$_pagi_nav_estilo = "paginacao";	//aqui é a classe do CSS para a barra de paginação

require("paginator.inc.php");

while($l = mysql_fetch_array($_pagi_result)){
	$add	 =ucfirst($l[0]);
	$added		= ucfirst($l[1]);
	
$sqlite = "SELECT * FROM amigos INNER JOIN perfil ON ( amigos.Add = perfil.ID OR amigos.Added = perfil.ID ) WHERE  ( amigos.Add = $userid OR amigos.Added = $userid ) AND amigos.Status = 1";
$sqlite_query = mysql_query($sqlite);
while($p = mysql_fetch_array($sqlite_query)){
	$id	 = ucfirst($p[0]);
	$navio		= ucfirst($p[1]);
	$apelido		= ucfirst($p[2]);
	$foto	= ucfirst($p[12]);
echo "$id / $navio / $apelido";
	echo "      <center><a href=perfil.php?perfil=$id ><img src=\"imagens/$foto\" alt=\"\" 

border=\"0\" name=\"imagem1\" width=\"110\" height=\"90\"><br>$apelido</center></a> ";
}
}
echo "</table>";

//incluimos a paginação
echo"<p><a href=\"amigos.php\"><div align=right> >>Ver Todos</div></a></p>";


?>

essa lógica me parece "certa" , mais ela naum ta funfando

 

alguém pode dar uma mãozinha aê? :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Anderson, voce nao esta apelidando as tabelas

 

seu codigo

 

$sqlite = "SELECT * FROM amigos INNER JOIN perfil ON ( amigos.Add = perfil.ID OR amigos.Added = perfil.ID ) WHERE ( amigos.Add = $userid OR amigos.Added = $userid ) AND amigos.Status = 1";

 

codigo correto

 

$sqlite = "SELECT amigos.* FROM amigos as amigos INNER JOIN perfil as perfil ON ( amigos.Add = perfil.ID OR amigos.Added = perfil.ID ) WHERE ( amigos.Add = $userid OR amigos.Added = $userid ) AND amigos.Status = 1";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Anderson, voce nao esta apelidando as tabelas

 

seu codigo

 

$sqlite = "SELECT * FROM amigos INNER JOIN perfil ON ( amigos.Add = perfil.ID OR amigos.Added = perfil.ID ) WHERE ( amigos.Add = $userid OR amigos.Added = $userid ) AND amigos.Status = 1";

 

codigo correto

 

$sqlite = "SELECT amigos.* FROM amigos as amigos INNER JOIN perfil as perfil ON ( amigos.Add = perfil.ID OR amigos.Added = perfil.ID ) WHERE ( amigos.Add = $userid OR amigos.Added = $userid ) AND amigos.Status = 1";

po marlon,naum funfou kra...=/

 

ele me retornou 6 valores repitidos...no caso ele me retornou só como se o usuário 7 tivesse se "auto adicionado" 6 vezes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim colega:

 

 

 

$sqlite = "SELECT amigos.*, perfil.* FROM (amigos INNER JOIN perfil ON amigos.Add = perfil.ID OR amigos.Added = perfil.ID) WHERE amigos.Add ='$userid' OR amigos.Added = '$userid' AND amigos.Status=1";

Compartilhar este post


Link para o post
Compartilhar em outros sites

não está indo...

 

$sqlite = "SELECT amigos.*, perfil.* FROM (amigos INNER JOIN perfil ON amigos.Add = perfil.ID OR amigos.Added = perfil.ID) WHERE amigos.Add ='$userid' OR amigos.Added = '$userid' AND amigos.Status=1";

retornou vários valores,mais não o esperado...

 

e o distinct naum funfou tb...até pensei q seria umaalternativa rpaeliminar os resultados"inuteis" q a funçãoinner join ta retornando,mais naumfunfou...euimplementei ele da seguinte forma

 

$sqlite = "SELECT DISTINCT amigos.*, perfil.* FROM (amigos INNER JOIN perfil ON amigos.Add = perfil.ID OR amigos.Added = 

perfil.ID) WHERE amigos.Add ='$userid' OR amigos.Added = '$userid' AND amigos.Status=1";

tavés a lógica esteja errada desde o princípio...se alguém souber um script q sirva para fazer esse esquema de adicionar amigos,ficaria realmente grato :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se retornou os valores é porque a query funcionou, mais afinal, qual resultado você espera ? qual o valor da variável que você está utilizando na query e para que serve o valor dela, está associado a que ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

po kra,oq eu to querendo é q retorne apenas o valor dinstinto do valor do ID do usuário...pq assim,eu tenho na tabela os seguintes campos:

 

Add | Added | Satus | Msg

7 | 8 | 0 | me add aÊ

10 | 7 | 0

 

nesse exemplo,eu tenho o usuário com ID 7,q adicionou o usuário com ID 8 e o usuário com ID 10 adicionou o usuário com ID 7,ambos com o Status 0,oq significa q a ação foi aceita pelos usuários "Added",caso contrário estaria 1 por padrão mesmo...

 

oq eu quero q exiba,é nesse exemplo,supondo q o usuário logado seja o com o ID 7,na tabela(HTML) onde será exibido os amigos dele apareça os valores 8 e 10 q são seus respectivos amigos devidamente aceitos e assim por diante, e não aquela grande confusão q está exibindo.

 

pra esse resultado,a lógica do meu código está errada?

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.