Ir para conteúdo
Fórum Script Brasil
  • 0

Por Que O Id Não Aparece?


dev

Pergunta

Estou postando abaixo parte do código que estou usando para cadastro de empresas e funciona bem, só que ao enviar o e-mail para a empresa que se cadastrou, a senha vai corretamente mas o ID, que é usado como código de acesso, aparece em branco no e-mail.

No BD está criado corretamente (auto-increment).

O que pode ser?

Obrigada.

<?

include "conecta.php"; //Conecta com o banco de dados MySQL

// include "sessempre.php"; //Verifica se a sessão está ativa

if (isset($_POST["Cadastrar"])) {

$contato = trim(ucfirst($_POST["contato"]));

$email = trim(strtolower($_POST["confemail"]));

$ip = $_SERVER["REMOTE_ADDR"];

$query = "SELECT id, empresa FROM empresas WHERE empresa='$empresa'";

$resultado = mysql_query($query) or die('error: ' . mysql_error());

$retorno = mysql_num_rows($resultado);

if ($retorno == 0) {

$query = "SELECT id, email FROM empresas WHERE email='$email'";

$resultado = mysql_query($query) or die('error: ' . mysql_error());

$retorno = mysql_num_rows($resultado);

if ($retorno == 0) {

function createpass($caracteres=8,$arg1=NULL){

if(is_string($caracteres)) $caracteres=strlen($caracteres);

$senha=""; //inicia string

foreach(range(1,$caracteres) as $i){ //faz um loop do nos numeros de caracteres

if(!$arg1) $numle=1; // somente letras

if($arg1) $numle=2; // somente numeros

if(is_null($arg1)) $numle=rand(1,2);  //sorteia entre 1 e 2<b></b>

if($numle==1)$senha .= chr(rand(97, 122)); // se 1 pega letras a - z e A - Z

if($numle==2)$senha .= chr(rand(48, 57)); //se 2 pega numeros 0 - 9

}

return $senha;

}

$senha_user = createpass();

$query = "INSERT INTO empresas (inclusao, liberar, senha, contato, email, ip)

  VALUES ( now(), 1, '$senha_user', '$contato', '$email', '$ip')";

   $resultado = mysql_query($query) or die('error: ' . mysql_error());

if (mysql_affected_rows()>0) {

   $query = "SELECT * FROM empresas WHERE id='$id'";

   $resultado = mysql_query($query) or die('error: ' . mysql_error());

   $num = mysql_num_rows($resultado);

              $from1    =  "contato@empresa.com.br";

              $to1      =  "$email";

     $subject1 =  "Dados para acesso.";

     $message1 =  "

                           Segue abaixo seus dados para acesso:

                           Seu Código: $id

                           Sua Senha: $senha_user";

           mail($to1,$subject1,$message1,"From: ".$from1);

// AS CHAVES ESTÃO SENDO FECHADAS CORRETAMENTE NO DECORRER DO CÓDIGO.

?>

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0

olá,

no inicio voce tem o recebimento dos dados:

if (isset($_POST["Cadastrar"])) {

$contato = trim(ucfirst($_POST["contato"]));

$email = trim(strtolower($_POST["confemail"]));

porem não tem do ID que usa no select e enviar no e-mail, coloque o _POST ou _GET para ele e teste novamente

Link para o comentário
Compartilhar em outros sites

  • 0

Só complementando...

Dei outra olhada no codigo,

voce colocaou :

$query = "SELECT * FROM empresas WHERE id='$id'";

não seria:

$query = "SELECT * FROM empresas WHERE ip='$ip'";

Se for buscar pelo IP Cadastrado é assim, se for pelo ID é no anterior smile.gif

E se for pelo "ip" este select é desnecessario, pois voce já tem as variaveis preenchidas, poderia tirar :

  $resultado = mysql_query($query) or die('error: ' . mysql_error());
if (mysql_affected_rows()>0) {
   $query = "SELECT * FROM empresas WHERE id='$id'";
   $resultado = mysql_query($query) or die('error: ' . mysql_error());
   $num = mysql_num_rows($resultado)

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que você tem razão...

Na captação dos dados não deu certo colocar o _POST para o ID, porque ele ainda não existe, por ser auto-increment...

Mas ele é criado antes do envio do e-mail, no INSERT, por que não está aparecendo?

$query = "INSERT INTO empresas (inclusao, liberar, senha, contato, email, ip)

  VALUES ( now(), 1, '$senha_user', '$contato', '$email', '$ip')";

   $resultado = mysql_query($query) or die('error: ' . mysql_error());

if (mysql_affected_rows()>0) {

   $query = "SELECT * FROM empresas WHERE id='$id'";

   $resultado = mysql_query($query) or die('error: ' . mysql_error());

   $num = mysql_num_rows($resultado);

              $from1    =  "contato@empresa.com.br";

              $to1      =  "$email";

     $subject1 =  "Dados para acesso.";

     $message1 =  "  Seu Código: $id

                             Sua Senha: $senha_user";

           mail($to1,$subject1,$message1,"From: ".$from1);

Obrigada.

Link para o comentário
Compartilhar em outros sites

  • 0

Realmente não consigo entender o que está acontecendo...

Tirei o SELECT como me orientou, Jissa, mas continua não enviando o "id". (Aliás, agora vi que que aquele SELECT era desnecessário, obrigada.)

A senha e o endereço de e-mail aparecem corretamente, só "id" que não.

O que mais pode ser?

Link para o comentário
Compartilhar em outros sites

  • 0

Vou dar uma dica, pode não funcionar.

Antes de mandar o email, faça um select max( Id ) , ele irá trazer o último Id cadastrado, pegue o valor do Id e some + 1, com isso você terá o Id para o envio do e-mail.

Link para o comentário
Compartilhar em outros sites

  • 0

Agradeço pela ajuda, mas também não deu certo.

Retornou valor 1, o que, me parece, prova que não está pegando o valor do "id".

O estranho é que no relatório do BD está tudo certo, aparece o "id", que é o código de acesso, e a senha. Tudo direitinho.

Só não estou conseguindo realmente puxar o valor do "id" após o INSERT.

Que coisa...

Fiz uns outros testes também, mas não adiantou.

Link para o comentário
Compartilhar em outros sites

  • 0

$sSql = "Select max( id ) from tabela";

$sResult = mysql_query( $sSql );

while( $iLinha = mysql_fetch_array( $sResult ))

{

$iUltimoId = $iLinha[ "id" ];

}

$iUltimoId = $iUltimoId + 1;

Link para o comentário
Compartilhar em outros sites

  • 0

Estou postando abaixo o código que coloquei após o INSERT e resolveu o problema.

Vocês podem me dizer se isso prejudica o desenvolvimento do BD?

Tipo ficar mais lento ou algo assim... Ou não tem problema?

Obrigada, pessoal.

Abraços.

$rs2 = mysql_query("SELECT id FROM empresas");

$test = mysql_num_rows($rs2);

if ($test > 0) {

while($array2 = mysql_fetch_array($rs2)) {

$id1 = $array2['id'];

}

}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...