Ir para conteúdo

POWERED BY:

Arquivado

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

RodrigoGuimarães

[Resolvido]  relacionamento de tabelas.

Recommended Posts

Bom dia gostaria de saber se voces poderiam responder uma duvida.

Estou criando um site e oque esta acontecendo, criei dua tabelas uma login que contem os campos : uid, login, senha,geral_uid e a tabela geral que contem os campos : uid, nome, cidade, idade. criei dois usuario para teste o teste 1 e o teste 2 porem sempre puxa os dados do teste 1.

oque pode ser feito ?

 

 

 

Desde já muito obrigado e se eu não fui claro podem fazer suas perguntas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu problema é no SQL, ao você puxar o usuário 'fazer a seleção no banco de dados', você pode estar

errando, e não estar procurando pelo usuário na outra tabela, referente ao seu 'id', tem como você fazer um

inner join, no qual vai procurar o usuário na outra tabela, referente ao ID encontrado na tabela 'login'

SELECT * FROM `login` INNER JOIN `geral` ON `login`.`geral_uid` = `geral`.`uid` WHERE `login`.`login` = ... AND `senha` = ...

Isso vai procurar pelo usuário na tabela 'login', onde o login seja igual a '...' & 'senha' igual a '...', então vai relacionar

o id encontrado ao usuário logado, na tabela geral.

 

uma demonstração:

C:\Users\Andrey>cd ..

C:\Users>cd ..

C:\>cd \dev\mysql\bin\

C:\dev\mysql\bin>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.41 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database ex;
Query OK, 1 row affected (0.03 sec)

mysql> create table ex.tabela1(
   ->   id int( 11 ) not null,
   ->   nome varchar( 15 ) not null,
   ->   geral_uid int( 11 ) not null
   -> )Engine = InnoDB ROW_FORMAT = Default;
Query OK, 0 rows affected (0.15 sec)

mysql> create table ex.tabela2(
   ->   uid int( 11 ) not null,
   ->   cidade varchar( 42 ) not null
   -> )Engine = InnoDB ROW_FORMAT = Default;
Query OK, 0 rows affected (0.08 sec)

mysql> insert into ex.tabela1 values( 1, 'Andrey Knupp Vital', '1' ), ( 2, 'Lucas Dos Santos', 2 );
Query OK, 2 rows affected, 2 warnings (0.05 sec)
Records: 2  Duplicates: 0  Warnings: 2

mysql> insert into ex.tabela2 values( 1, 'Uma Cidade ...' ), ( 2, 'Uma Cidade ...' );
Query OK, 2 rows affected (0.05 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from `ex`.`tabela1` inner join `ex`.`tabela2` on `tabela1`.`geral_uid` = `tabela2`.`uid`;
+----+-----------------+-----------+-----+----------------+
| id | nome            | geral_uid | uid | cidade         |
+----+-----------------+-----------+-----+----------------+
|  1 | Andrey Knupp Vi |         1 |   1 | Uma Cidade ... |
|  2 | Lucas Dos Santo |         2 |   2 | Uma Cidade ... |
+----+-----------------+-----------+-----+----------------+
2 rows in set (0.00 sec)

 

Então, altero o valor do usuário 2 é seleciono novamente, só pra você ter uma noção melhor:

mysql> update ex.tabela2 set cidade = 'Cidade do usuário 2' where uid = 2;
Query OK, 1 row affected (0.07 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from `ex`.`tabela1` inner join `ex`.`tabela2` on `tabela1`.`geral_uid` = `tabela2`.`uid`;
+----+-----------------+-----------+-----+---------------------+
| id | nome            | geral_uid | uid | cidade              |
+----+-----------------+-----------+-----+---------------------+
|  1 | Andrey Knupp Vi |         1 |   1 | Uma Cidade ...      |
|  2 | Lucas Dos Santo |         2 |   2 | Cidade do usuário 2 |
+----+-----------------+-----------+-----+---------------------+
2 rows in set (0.01 sec)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pega normalmente no array em PHP

<?php 
      $PDO = new PDO( 'mysql:host=localhost;dbname=ex', 'root', 'sua senha' );
      $PDO->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
      $SQLQuery = $PDO->prepare( 'SELECT * FROM `tabela1` INNER JOIN `tabela2` ON `tabela1`.`geral_uid` = `tabela2`.`uid`' );
      $SQLQuery->execute();
      $Dados = $SQLQuery->fetchAll( PDO::FETCH_ASSOC );
      echo '<pre>';
      print_r( $Dados );

 

Saída:

Array
(
   [0] => Array
       (
           [id] => 1
           [nome] => Andrey Knupp Vi
           [geral_uid] => 1
           [uid] => 1
           [cidade] => Uma Cidade ...
       )

   [1] => Array
       (
           [id] => 2
           [nome] => Lucas Dos Santo
           [geral_uid] => 2
           [uid] => 2
           [cidade] => Cidade do usu rio 2
       )

)

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
 if (PHP_VERSION < 6) {
   $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
 }

 $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

 switch ($theType) {
   case "text":
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
     break;    
   case "long":
   case "int":
     $theValue = ($theValue != "") ? intval($theValue) : "NULL";
     break;
   case "double":
     $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
     break;
   case "date":
     $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
     break;
   case "defined":
     $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
     break;
 }
 return $theValue;
}
}
?>
<?php

if (!isset($_SESSION)) {
 session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
 $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['usuario'])) {
 $loginUsername=$_POST['usuario'];
 $password=$_POST['senha'];
 $MM_fldUserAuthorization = "";
 $MM_redirectLoginSuccess = "inicio.php";
 $MM_redirectLoginFailed = "login.php";
 $MM_redirecttoReferrer = false;
 mysql_select_db($database_redesocial, $redesocial);

 $LoginRS__query=sprintf("SELECT login, senha FROM login WHERE login=%s AND senha=%s",
   GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

 $LoginRS = mysql_query($LoginRS__query, $redesocial) or die(mysql_error());
 $loginFoundUser = mysql_num_rows($LoginRS);
 if ($loginFoundUser) {
    $loginStrGroup = "";

if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
   $_SESSION['MM_Username'] = $loginUsername;
   $_SESSION['MM_UserGroup'] = $loginStrGroup;	      

   if (isset($_SESSION['PrevUrl']) && false) {
     $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
   }
   header("Location: " . $MM_redirectLoginSuccess );
 }
 else {
   header("Location: ". $MM_redirectLoginFailed );
 }
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz assim:

$LoginRS__query=sprintf("SELECT * FROM login INNER JOIN `geral` ON `login`.`geral_uid` = `geral`.`uid` WHERE login=%s AND senha=%s",
   GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, agora algumas coisas que quero deixar bem claro aqui.

vejo que você deseja criar uma rede social, ou um microblog .. algo que requer um nível de experiência maior

falando sinceramente pra você, eu acho que você não tem o conhecimento básico para se arriscar dessa forma

então as minhas recomendações são simples:

 

  • Estude um pouco mais

  • Quando tiver uma dúvida, tente 'chutar' uma solução que você acha que funciona

  • o Google é seu amigo, então fale com ele

  • Não tente fazer algo, que você não se acha capaz, ou que não sabe

 

Eu acho isso, porque passar valores pra session, são bem simples, e você está com dúvida nisso

mais todo mundo tem que aprender, 'se tiver vontade' claro, então eu sei que você está na fase de aprendizagem, o PHP é uma linguagem

bem grandinha, então estude o quanto puder .. faça uns 'treinamentos' por si próprio, porque é assim que agente ganha na vida

você ficar postando aqui no fórum, não vai resolver nada, apenas vai te atrapalhar, você pode não estar notando

mais um dia isso vai te fazer mal, porque a hora que você precisar de algo rápido, é o fórum não e helpdesk, então nem sempre

vai ter alguém pra te ajudar, é ai, como que fica ?

 

Um abraço, bons estudos ...

espero que você se torne um programador que saiba solucionar de forma pacifica e simples suas próprias dúvidas

como desejo para todos aqui no fórum ..

 

;)

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.