Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 125
Sexo: Masculino

Relação entre duas tabelas

09-07-2013 03:47

Olá, tudo bem?

Gostaria de fazer uma realação entre duas tabelas, mas tô apanhando e não tô conseguindo, pois por mais que eu tente, aparece um milhão de repetições...

O primeiro SELECT vai listar os dados e paginar:

$_pagi_sql = "SELECT * FROM comments WHERE categories = 'Esportes' ORDER BY id_c DESC, datas ASC"; $names = $coluna["names"]; $citys = $coluna["citys"]; $datas = $coluna["datas"]; $comment = $coluna["comment"]; 

o outro SELECT vai consultar somente o NOME:

$sql_c = mysql_query("SELECT nome FROM usuarios LEFT JOIN comments ON usuarios.usuario=comments.users WHERE categoria = 'Esportes'"); while($dados = mysql_fetch_array($sql_c)) { $nome = $dados["nome"]; 

As duas tabelas terá o mesmo nome de usuário, isso é para relacioná-las...
$nome e $names também são iguais nas duas tabelas...

Na hora de listar, é o $name que aparece na página, porém o usuário poderá mudar seu nome na tabela USUARIOS... Então, como eu posso trazer este novo nome para a página?

Tentei algo assim:

<?  if($users == $usuario) {  if($names == $nome) { echo "$names"; } else { echo "$nome"; }  } ?>

Mas não está funfando!
Pode me ajudar?
Obrigado!

MOVIDO PARA MYSQL
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Relação entre duas tabelas

09-07-2013 12:55

Não entendi muito bem.
Você disse que tem $nome e $names, o que mostra seria o $names.

Essa relação do if que fez, qual o objetivo que você quer?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 125
Sexo: Masculino

Relação entre duas tabelas

09-07-2013 14:12

A relação é para mostrar o nome atualizado, caso o usuário altere o seu nome na tabela 'usuarios' ($nome), pois a tabela 'comments' grava o nome ($names) na data do comentário, mas se o usuário, mais tarde, alterar o seu nome ($nome) na tabela 'usuarios', eu gostaria de ignorar $names da tabela 'comments' (nome antes da atualização do usuário) e usar $nome da tabela 'usuarios' (nome depois da atualização do usuário).

Obrigado!
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Relação entre duas tabelas

09-07-2013 16:34

Acho que você deve se basear assim

if($names != $nome) { // se for diferente echo "$names"; } else { echo "$nome"; } 

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 125
Sexo: Masculino

Relação entre duas tabelas

09-07-2013 17:16

Mas eu quero imprimir o $nome e não o $names. Pois quando $nome for diferente de $nome, é porque o usuário já atualizou o nome dele, então terá que imprimir $nome.

O usuário só pode alterar o nome dele na tabela 'usuarios' -> $nome

A minha dúvida é: como listar o $nome da tabela 'usuários', se a página está mostrando os registros da tabela 'comments'?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Relação entre duas tabelas

09-07-2013 17:50

Tenta pegar os dados sem usar consulta Dados-da-consulta-sem-while_19_4168.html
Seguindo esse exemplo, você pode pegar a coluna da primeira consulta, e exibir na segunda consulta.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 125
Sexo: Masculino

Relação entre duas tabelas

10-07-2013 01:52

Olá web, obrigado, mas não funfoou... só imprime o primeiro usuário de id=1 da tabela 'usuarios'

$base = mysql_query("SELECT U.usuario,U.nome,C.users,C.names FROM usuarios U INNER JOIN comments C ON U.usuario=C.users") or die (mysql_error()); $total = mysql_num_rows($base);  echo mysql_result($base , 0, "nome"); 

ou

$base = mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario'") or die (mysql_error()); $total = mysql_num_rows($base);  //echo mysql_result($base , 0, "nome"); <? if($nome == $names) { echo "$nome"; } else { echo "$names"; } ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Relação entre duas tabelas

10-07-2013 06:54

Já colocou a consulta que é dependente, dentro da outra? O select que pega somente o nome, fica dentro do primeiro while.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 125
Sexo: Masculino

Relação entre duas tabelas

10-07-2013 15:18

Sim.

$_pagi_sql = "SELECT comments.* FROM comments INNER JOIN usuarios  ON comments.users=usuarios.usuario WHERE comments.categories = 'Esportes' GROUP BY comments.id_c DESC, comments.datas ASC";

Mas a páginação pára de funcionar e continua mostrando o $nome de id=1 da tabela 'usuarios'.
Então coloquei:

$_pagi_sql = "SELECT * FROM comments WHERE categories = 'Esportes' ORDER BY id_c DESC, datas ASC"; 

A páginação volta a funcionar, mas continua mostrando o $nome de id=1 da tabela 'usuarios'.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Relação entre duas tabelas

10-07-2013 15:25

O que indiquei foi colocar a query da consulta, dentro da primeira consulta


// primeira consulta while($...) { // segunda consulta mysql_query(.... // fim da primeira consulta } 

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 125
Sexo: Masculino

Relação entre duas tabelas

10-07-2013 17:04

Foi o que eu fiz:

$_pagi_sql = "SELECT comments.* FROM comments INNER JOIN usuarios  ON comments.users=usuarios.usuario WHERE comments.categories = 'Esportes' GROUP BY comments.id_c DESC, comments.datas ASC"; (...) while($coluna = mysql_fetch_array($_pagi_result_r)) { (...) $base = mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario'") or die (mysql_error()); $total = mysql_num_rows($base);  <?  if($names== $nome) {  echo "$names";  } else {  echo "$nome";  } ?> <? } mysql_close(); ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Relação entre duas tabelas

10-07-2013 17:09

Na segunda consulta não tem o while? Nessa segunda consulta, você pode usar aquela linha para pegar o valor sem while.

echo mysql_result($sua_query , 0, "sua_coluna"); 

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 125
Sexo: Masculino

Relação entre duas tabelas

10-07-2013 18:05

Continua mostrando o $nome de id=1
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Relação entre duas tabelas

10-07-2013 18:47

Você deve ter duas querys

$query1 = mysql_query....
$query2 = mysql_query....

A $query2 está dentro da 1

echo mysql_result($query2 , 0, "sua_coluna"); 

Supondo que a $query2 é gerada com o valor da $query1, nesse echo acima, que está baseado na $query2 deve aparecer o resultado.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 125
Sexo: Masculino

Relação entre duas tabelas

10-07-2013 19:56

Sim e aparece somente o $usuario da tabela 'usuarios' (que é o que eu quero), porém é o mesmo para todos...
Veja o printScreen: http://infosoftbh.ueuo.com/teste/images ... _names.jpg

O NOME (atualizado) DEVE APARECER ABAIXO DA FOTO DO USUÁRIO

Usando:

<?  if($nome == $names) {  echo "$names";  } else {  echo "$nome";  }  ?>

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Relação entre duas tabelas

10-07-2013 20:06

Tem como passar um sql, das duas tabelas com alguns valores, e o arquivo que está usando para paginar?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 125
Sexo: Masculino

Relação entre duas tabelas

11-07-2013 04:06

Estava lotadas então dei uma enxugada... OK

O $nome já está atualizado na tabela 'usuarios' e na tabela 'comments' está com o $names do $nome antigo e atual (Paulo César Souza & Paulo César Souza Oliveira)
Link (sql e paginação): http://infosoftbh.ueuo.com/teste/for_web/tables_pag.zip

Obrigado!
0
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 125
Sexo: Masculino

Relação entre duas tabelas

11-07-2013 14:03

Desculpe-me, esqueci de falar...
Para a paginação funfar:

<?php $_pagi_sql = "SELECT * FROM tabela"; $_pagi_cuantos = 20;  $_pagi_nav_anterior = "Anterior"; // Titulo texto link página anterior  $_pagi_nav_siguiente = "Próximo"; // Titulo texto link próxima página  $_pagi_nav_primera = "&#9668;"; // Texto link primeira página  $_pagi_nav_ultima = "&#9658;"; // Texto link última página  include("paginacao.php"); while($coluna = mysql_fetch_array($_pagi_result)) { $id = $coluna["id"]; (...) } ?> <? echo $_pagi_navegacion; ?>

No caso de duas paginação na mesma página, eu altero:
paginacao.php | paginacao_n.php
$_pagi_navegacion | $_pagi_navegacion_n
$_pagi_sql | $_pagi_sql_n
$_pagi_result | $_pagi_result_n
Tanto na página quanto no paginacao.php

Obrigado!
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Relação entre duas tabelas

11-07-2013 17:04

Fiz aqui o seguinte:

Na primeira consulta, eu criei

$id = $coluna["id_c"]; $names = $coluna["names"]; 

E coloquei o seguinte:

$base = mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$id."'") or die (mysql_error()); $nome = @mysql_result($base , 0, 'nome'); if($names==$nome) { echo "$nome"; } else { echo "$names"; } 

Testa ai.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 125
Sexo: Masculino

Relação entre duas tabelas

11-07-2013 23:52

Pois é web... voltou à mesma situação de antes, ele está pegando o nome completo de usuário da tabela comments, ou seja o nome não atualizado...

De tanto tentar, eu desisti e fiz o update da tabela 'usuarios' apontar para a tabela 'comments', até porque, são três os dados alteráveis: nome, cidade e uf.

fiz assim:

$result = mysql_query("UPDATE usuarios SET nome='$nome', dia='$dia', mes='$mes', ano='$ano', cidade='$cidade', uf='$uf' WHERE usuario ='{$usuario}'"); $result2 = mysql_query("UPDATE comments SET names='$nome', citys='$cidade', ufs='$uf' WHERE users ='{$usuario}'");      if ( $result != 1 ) { echo "Houve um erro ao atualizar a tabela Usuários "; } if ( $result2 != 1 ) { echo "Houve um erro ao atualizar a tabela Comments"; } 

Isso porque estou há muito tempo às voltas com este problema e não consigo solução!

Nem sei o que dizer e nem como agradecer a sua gentileza e boa vontade em me ajudar... E não só a mim, pois estou neste fórum a pouco tempo e já "vi mais luzes nos finais dos túneis" do que em qualquer outro fórum.

Peço, sinceramente, que aceite meu pedido de desculpa em ter tomado o seu tempo e ter te dado todo esse trabalho!

E por fim, lhe agradeço muitíssimo pelo seu esforço... e isso que você me passou aqui eu vou usar em outro script um pouco menos "complicado" rsrs.

Luz e Paz, meu amigo web!
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17677
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Relação entre duas tabelas

12-07-2013 08:46

Sem problema. ;)
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado