Jump to content


Photo

Comparando Valores


  • Faça o login para participar
11 replies to this topic

#1 AveNoturna

AveNoturna

    Normal

  • Usuários
  • 111 posts
  • Sexo:Não informado
  • Localidade:Brasília - DF

Posted 09/07/2004, 22:40

Galera...fiz a união de duas tabelas do meu BD...


e faço um teste para comparar se uma váriavel tem o mesmo valor que a variavel de outra tabela..... desse jeito:


if ( $variavel_da_tabela_1 ==  $variavel_da_tabela_2) {
echo " conteúdo a ser exibido ";
}



O programa deve funcionar assim...

se o usuário enviar um código de produto para a tabela_1 e esse código for igual ao da tabela 2 ele deve exibir apenas os dados relativos a esse produto....


o que eu toh conseguindo até agora é mostrar um conteúdo que não tem nada haver com o código de produto que o user enviou....



alguém pode me dar uma mãozinha em como sair dessa sinuca de bico....


eu quero é comparar uma variável de uma tabela com a varáivel de outra tabela e se os valores ( códigos de produto ) delas forem iguais mostrar apenas o conteúdo desse produto....

(y)


Valews

Edição feita por: AveNoturna, 09/07/2004, 22:41.

Vida Longa e Próspera...
E que a força esteja com Vocês!

#2 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 10/07/2004, 05:57

PHP
<?php

$nome
= "Felipe";

$s = mysql_query("SELECT nome FROM tabela WHERE nome='$nome'");
$s2 = mysql_query("SELECT nome FROM tabela WHERE nome='$nome'");
$n = mysql_num_rows($s);
$n2 = mysql_num_rows($s2);

echo ((
$n>0) or ($n2>0)) ? "Já registrado!" : "Ainda não foi registrado!";


?>

Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#3 <? K3RN3L_P4N1C ?>

<? K3RN3L_P4N1C ?>

    <? PHP4N1C ?>

  • Usuários
  • 287 posts
  • Sexo:Não informado
  • Localidade:Sinop - MT

Posted 10/07/2004, 08:50

Olá AveNoturna, :D

Você pode fazer isto na propria Query do Mysql, comparando duas tabelas na mesma query.
Feito assim o resultado sai bem mais rápido, pois está sendo feito a comparação no proprio banco de dados!

Vamos ao exemplo:

Digamos que tenhas duas tabelas TESTE1 e TESTE2.

Na TESTE1 você tem os seguintes campos:

ID
PRODUTO

Na TESTE2 você tem os seguintes campos:

ID
PRODUTO
DESCRICAO
PRECO
MARCA

Colocando essa comparação na query ficaria da seguinte maneira:

SELECT TB1.PRODUTO, TB2.PRODUTO FROM TESTE1 TB1,TESTE2 TB2 WHERE TB1.PRODUTO = TB2.PRODUTO

Este TB1 e TB2 que aparece na query seria um alias, ou seja, um apelido para as tabelas que foram utilizadas (TESTE1,TESTE2).
Eles são necessários para que haja uma diferenciação dos campos das duas tabelas, pois ambos tem o mesmo nome (PRODUTO).


O que você faria no php posteriormente seria um mysql_num_rows() para saber se a query retornou algum resultado !

Exemplo:

PHP
<?php


$cQuery
= "SELECT TB1.PRODUTO, TB2.PRODUTO FROM TESTE1 TB1,TESTE2 TB2 WHERE TB1.PRODUTO = TB2.PRODUTO"

$lQueryexec = mysql_query($cQuery);

$nRegs = mysql_num_rows($lQueryexec);

if (
$nRegs > 0){
//Tem o produto cadastrado nas duas tabelas
}else{
//Não tem o produto cadastrado nas duas tabelas
}


?>


Espero ter ajudado ;)
<?
$nome = Tiago Leão;
$nick = <? K3RN3L_P4N1C ?>;
$email = tiagoacl@ig.com.br;
$icq = 124996176;
$interesses = PHP;

//Acredite em Jesus, porque ele ja acreditou em você um dia...

?>

#4 AveNoturna

AveNoturna

    Normal

  • Usuários
  • 111 posts
  • Sexo:Não informado
  • Localidade:Brasília - DF

Posted 10/07/2004, 14:58

<? K3RN3L_P4N1C ?>, eu jah tentei usar alias....mas o resultado é o mesmo.... o programa exibe dados que não tem nada haver com o produto escolhido.....


Sem falar que os nomes dos campos não são iguais.... VEJA:

Na tabela 1 eu tenho o campo aleatorio esse campo recebe um número que é gerado pelo computador

$alfanumericos =array('a','b','c','d','e','f','g','h','i','j','k','m','n','o','p','q','r','s',
't','u','v','x','y','z','A','B','C','D','E','F','G','H','I','J','K','M',
'N','P','Q','R','S','T','U','V','W','X','Y','Z','2','3','4','5','6','7','8','9');

    $caracteres = sizeof($alfanumericos);
    $a = time( );
    mt_srand($a);
    for ($i=0; $i < 15; $i++) {
      $randnum = intval(mt_rand(0,100));
      $aleatorio .= $alfanumericos[$randnum];


    }



Beleza.... esse code é enviado ao BD como código do produto que é cadastrado.

Quando o usuário faz uma pesquisa no site e acha o produto que ele quer.... é exibido os dados do produto e esse code para que ele possa fazer a solicitação a central do assinante.... ( JOIA até aqui )



Quando esse número chega a central ( ou a minha administração ) ele deve ser comparado com o número que existe dentro dessa tabela ( tabela de produtos ) se o numero enviado pelo user ( que fica gravado em outro campo da tabela 2 ) for igual a esse número ele deve exibir o conteúdo.... Pra que? ! Para que eu possa enviar os dados relativos a mercadoria para o cliente e dessa forma eu não rpecisaria fazer tudo no dedão....



Sakou!.... soh que usando a comparação que eu estou fazendo tanto com alias ou com testes de condição do PHP estão voltado dados errados.


Toh numa sinuca de bico e sem ver a luz no fim do túnel.....


Alguém tem a solução para esse meu dilema....exibir os dados corretos do produto ....

Edição feita por: AveNoturna, 10/07/2004, 14:59.

Vida Longa e Próspera...
E que a força esteja com Vocês!

#5 AveNoturna

AveNoturna

    Normal

  • Usuários
  • 111 posts
  • Sexo:Não informado
  • Localidade:Brasília - DF

Posted 11/07/2004, 21:56

E ai....alguém tem a solução pra esse meu dilema?!


Grato! (y)
Vida Longa e Próspera...
E que a força esteja com Vocês!

#6 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 11/07/2004, 22:22

Amigo,
mostre como tá seu código e explique claremente o que precisa de fato.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#7 AveNoturna

AveNoturna

    Normal

  • Usuários
  • 111 posts
  • Sexo:Não informado
  • Localidade:Brasília - DF

Posted 11/07/2004, 22:30

Ok! vamos lah novamente!!!!


Pra resumir a história...

tenho duas tabelas.

Na primeira tabela tenho o campo aleatorio

Na segunda tabela tenho o campo cod_1.

O que eu preciso é saber quando um valor ( código gerado aleatoriamente )enviado pelo usuário ao BD é igual ao valor ( código gerado aleatoriamente ) que eu jah tenho cadastrado na primeira tabela.

tento fazer a comparação

if ($cod_1 == $aleatorio ) {
echo " os´códigos são iguais" ;

}else{

echo "bla, bla,bla....";
}



O qua acontece é que eu sei que há valores iguais nos campos de ambas as tabelas...mas o programa não está exibindo isso na tela....


Sakou!?

Ou compliquei ainda mais!?
Vida Longa e Próspera...
E que a força esteja com Vocês!

#8 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 11/07/2004, 22:41

Amigo,
pelo que entendi deve ser isso...

PHP
<?php
//exemplo..........................

# campo nome de um form
$nome = $_POST['nome'];

# verificando se há info. igual a do form
$s = mysql_query("SELECT * FROM tabela WHERE nome='$nome'");
$n = mysql_num_rows($s);

echo (
$n>0) ? "Já tem!" : "Não tem!";
?>


Acima eu tou conferindo se a informação do form já existe no bd. ;)
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#9 AveNoturna

AveNoturna

    Normal

  • Usuários
  • 111 posts
  • Sexo:Não informado
  • Localidade:Brasília - DF

Posted 11/07/2004, 22:50

Valews cara...


Mas não é atraves de form HTML que eu faço a verificação da existência do código..

O usuário tem um form que envia o numero aleatorio para o BD ( tabela 2 )

O que eu quero é saber quando esse numero que é enviado pelo user e fica gravado na tabela 2 no campo cod_1 é igual ao numero que existe dentro da tabela 1 que fica gravado no campo aleatorio...


Sakou....


o campo cod_1 da tabela 2 tem que ter o mesmo numero aleatorio do campo da tabela 2.... pra soh depois exibir o resultado
Vida Longa e Próspera...
E que a força esteja com Vocês!

#10 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 11/07/2004, 23:04

Tabela 1

cod_id | campo | campo2


Tabela 2

cod_id | campo | campo2


Daí você recebe por exemplo um número: 0777

Daí verifica nas tabelas

$s = mysql_query("SELECT * FROM Tabela1 WHERE cod_id='0777'");
$s2 = mysql_query("SELECT * FROM Tabela2 WHERE cod_id='0777'");

$n = mysql_num_rows($s); $n2 = mysql_num_rows($s2);
if(($n>0) or ($n2>0)){ echo 'Já cadastrado!'; }


Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#11 AveNoturna

AveNoturna

    Normal

  • Usuários
  • 111 posts
  • Sexo:Não informado
  • Localidade:Brasília - DF

Posted 11/07/2004, 23:13

Certo... mas isso não funciona pro meu caso....

Acho que vou usar a query da MySQl para fazer abusca....

Veja....

$query= "SELECT * FROM tabela1";
$pesquisa=mysql_query($query);

while($res1=mysql_fetch_array($query)){


$query_2 = "SELECT * FROM tabela_2 where cod_1 = '$res1[aleatorio]'";
$res2=mysql_query($query_2);
$res2=mysql_fetch_array($res2);


echo "$res1[aleatorio] / $res2[cod_1]<br>";



Soh que isso tmb não tah funfando.... os dados estão nas tabelas e nos seus respectivos campos... mas o script diz que não tem nada....


Oh céus!
Vida Longa e Próspera...
E que a força esteja com Vocês!

#12 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 11/07/2004, 23:31

Olha isso...

$s = mysql_query("SELECT * FROM tabela1");

while($res1=mysql_fetch_array($s)){
$aleatorio = $res1[aleatorio];

$s2 = mysql_query("SELECT * FROM tabela_2 WHERE cod_1= '$aleatorio'");
$n = mysql_num_rows($s2);

if($n>0){ $codigo = "Tem na tabela 2!"; } else { $codigo = "Não tem na tabela 2"; }
echo "O valor aleatorio >>".$aleatorio.$codigo."<br>";
}


Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq