Ir para conteúdo

POWERED BY:

Arquivado

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

x86bra

GetElementByID trazendo valor errado

Recommended Posts

Boa noite pessoal, sou novo no fórum e estou tendo uma dificuldade meio estranha com javascript.

Tenho esse trecho de código em php:

mysql_select_db($database_login, $login);
$query_Recordset1 = "SELECT * FROM funcionario";
$Recordset1 = mysql_query($query_Recordset1, $login) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>

<form id="form1" name="form1" method="GET">

<?php do { ?>
<table>
      <tr>
        <td><input type="checkbox" name="marcado" id="marcado" value="<?php echo $row_Recordset1['chave']; ?>" />
        <td><?php echo $row_Recordset1['chave']; ?></td>
        <td><?php echo $row_Recordset1['nome']; ?></td>
        <td><?php echo $row_Recordset1['funcao']; ?></td>
        <td><?php echo $row_Recordset1['fone']; ?></td>
        <td><?php echo $row_Recordset1['cel1']; ?></td>
        </tr>
                      <button onclick="setCookie();direciona()">Click me</button>
        <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>

</table>

E to tentando pegar o valor do checkbox "marcado" com javascript e colocar dentro de um cookie com essa parte aqui:

<script type="text/javascript">
 var x = document.getElementById("marcado").value;
function setCookie(name,value){
	var name="id";
	var value = x;
document.cookie = name + "="+x+";"
}

 

O cookie até que é gerado, mas sempre vai com o valor 1 , independentemente do checkbox marcado.:bawling:

Alguém pode me dar uma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

por que não faz tudo com php mesmo? o php também trabalha com cookies e tu não precisa fazer uma linguagem conversar com outra

Compartilhar este post


Link para o post
Compartilhar em outros sites

@x86bra  e @marsolim    Eu acho que o problema é a ordem.   Vi um código de outra pessoa que estava assim:

 

primeiro vem o código em HTML normal.

em segundo depois do </head>   vem um código em </script>  com o código javascript dentro </script>

em terceiro depois vinha um código PHP dentro de um <body>   e no final do código PHP eu vi um  </body>

Estava nessa ordem o código que eu vi horas atrás.   Pode ser que ordem tenha influência no resultado.

Eu sei um pouco de programação, mas o PHP eu ainda estou aprendendo....   Boa noite

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você ao menos já tentou ver o que está sendo imprimido no value?

Para verificar se ele realmente está pegando um valor inexistente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara o seu problema é que cada volta no While cria um novo  "marcado", então pra isso você precisa pegar o ID dele no javascript.


  var marcados = document.getElementById("marcado");
  var quantos = marcados.length;
  for(i=0; i < quantos; i++){
      console.log(marcado[i]s.value);
  }

Acho melhor você repensar sua aplicação do código.

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Ana Gauna disse:

@x86bra  e @marsolim    Eu acho que o problema é a ordem.   Vi um código de outra pessoa que estava assim:

 

primeiro vem o código em HTML normal.

em segundo depois do </head>   vem um código em <script>  com o código javascript dentro </script>

em terceiro depois vinha um código PHP dentro de um <body>   e no final do código PHP eu vi um  </body>

Estava nessa ordem o código que eu vi horas atrás.   Pode ser que ordem tenha influência no resultado.

Eu sei um pouco de programação, mas o PHP eu ainda estou aprendendo....   Boa noite

 
 
 
 
 
 

 

Pequei meu livro de PHP para conferir e é isso mesmo.

Livro: Scripts PHP Biblioteca de Scripts, Autor : Daniel dos Santos Cardoso, Editora Baraúna

 

Primeiro vem o código normal em HTML do cabeçalho <head>  com o conteudo do cabeçalho dentro  </head>

 

Em segundo vem o <script>   com o código javascript dentro </scrip>   

 

Em terceiro dentro do <body>   contém o código em PHP   </body>   

 

No livro que eu comprei o código está nessa ordem em um dos exemplos.

 

E horas atrás eu vi uma pessoa postando um código na mesma ordem, aqui dentro do fórum.

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha na verdade isso varia em alguns casos. eu mesmo não misturo html com php mas se for abrir e fechar html, head e body tem que abrir o ser algo tipo

<html...>
    <head>
    </head>
    <body>
        <?php
           ...
        ?>
    </body>
</html>

 

só que o php pode ser usado em qualquer parte do código porque ele não depende da estrutura html e nem do js, por exemplo podemos ter um title dinamico e pra isso podemos colocar entre as tags do head

<head>
    <title>
        <?php echo "um negócio um troço qualquer";?>
    </title>
</head>

 

quanto aos códigos js também pode ser colocado em qualquer parte dependendo da situação e até melhor ele ficar por último porque em alguns casos ele atrasa o carregamento do html da página uma vez que o html é carregado na ordem e se tiver script demorado para carregar vai atrasar o load da página por isso sempre coloco js por último depois de fechar o php isso quando é alguma coisa que só pertence aquela página mas no geral o js fica em um arquivo js separado e só incluímos ele na página usando src

Compartilhar este post


Link para o post
Compartilhar em outros sites
19 minutos atrás, Ana Gauna disse:

 

Pequei meu livro de PHP para conferir e é isso mesmo.

 

Primeiro vem o código normal em HTML do cabeçalho <head>  com o conteudo do cabeçalho dentro  </head>

 

Em segundo vem o <script>   com o código javascript dentro </scrip>   

 

Em terceiro dentro do <body>   contém o código em PHP   </body>   

 

No livro que eu comprei o código está nessa ordem em um dos exemplos.

 

E horas atrás eu vi uma pessoa postando um código na mesma ordem, aqui dentro do fórum.

 

 

Como o marsolim disse isso é indiferente.

O PHP é executado pelo servidor e não pelo navegador.

Após o mesmo ser carregado será gerado um código HTML.

 

E o mesmo está correto em dizer que em alguns casos é ruim fazer com que o script seja executado antes da página ser carregada podendo resultar em problemas lógicos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
21 horas atrás, marsolim disse:

por que não faz tudo com php mesmo? o php também trabalha com cookies e tu não precisa fazer uma linguagem conversar com outra

Eu não sou muito bom com programação web (dá pra ver né? :tounge_wink:) então, eu não sei se dá pra fazer um botão executar duas instruções com php (dá?)

 

21 horas atrás, Ana Gauna disse:

@x86bra  e @marsolim    Eu acho que o problema é a ordem.   Vi um código de outra pessoa que estava assim:

 

primeiro vem o código em HTML normal.

em segundo depois do </head>   vem um código em </script>  com o código javascript dentro </script>

em terceiro depois vinha um código PHP dentro de um <body>   e no final do código PHP eu vi um  </body>

Estava nessa ordem o código que eu vi horas atrás.   Pode ser que ordem tenha influência no resultado.

Eu sei um pouco de programação, mas o PHP eu ainda estou aprendendo....   Boa noite

Obrigado Ana pela contribuição, mas tentei aqui e não resultou :(

 

21 horas atrás, jamesbond disse:

Você ao menos já tentou ver o que está sendo imprimido no value?

Para verificar se ele realmente está pegando um valor inexistente?

No caso não é um valor inexistente, ele pega o numero 1 e joga no cookie assim que inicia

Compartilhar este post


Link para o post
Compartilhar em outros sites

explica melhor o que precisa fazer com o valor desse cookie. pode ser que usando session no php também consiga o que quer. session é quase a mesma coisa que cookie. tu pode pegar um valor de checkbox tipo

if(isset($_POST['nome_da_checkbox']){ // verifica se o checkbox foi enviado via POST clicando num botão SUBMIT
    if(!isset($_SESSION['id'])){ // verifica se a session ainda não foi criada
        $_SESSION['id'] = 'x'; // e se ainda não foi, cria ela com o nome de id e atribui a string 'x'
    }
}

if(isset($_SESSION['id'])){ // se a session foi criada...
    //faz o que tem que fazer
}

// se precisar destruir a session depois
unset($_SESSION['id']);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver da seguinte forma:

if (isset($_POST['marcado']))
    $marcado = $_POST['marcado'];
else
    $marcado = null;

Coloquei esse código na página que eu queria o ID e mudei o metodo de GET pra POST na pagina dos checkboxes :smiley: (Eu nem sabia que dava pra fazer isso, sou novato em php)

 

Obrigado @marsolim pelo tempo e paciência gastos comigo e obrigado a todos que responderam ao tópico

Compartilhar este post


Link para o post
Compartilhar em outros sites

é melhor declarar a variável antes dela entrar no if assim

$marcado = null;

if (isset($_POST['marcado'])){
    $marcado = $_POST['marcado'];
}

 

ou resumindo num if ternário

 

$marcado = ((isset($_POST['marcado'])) ? $_POST['marcado'] : null);

 

há casos em que uma variável não declarada antes de entrar numa condição dá erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só complementando o @marsolim 

A variavel $marcado é um bool (verdadeiro/falso)?

Caso sim utilize um boolean :

$marcado = ((isset($_POST['marcado'])) ? true : false);

quanto mais explicito estiver melhor.
Ai durante a execução pode fazer verificações simples sem se preocupar:

<?php
if($marcardo) {
  //Faz isso
}

imagina em um contexto grande você da um var_dump() e o retorno é null..
Se fica WTF essa p****? hehe
Vale o click:
http://php.net/manual/pt_BR/function.isset.php



Levando em conta o retorno do isset()

Citar

 

Valor Retornado 

Retorna TRUE se var existe; FALSE caso contrário.

 

 


Da pra deixar isso:

<php
     if (isset($_POST['marcado']))
    $marcado = $_POST['marcado'];
else
    $marcado = null;

Nisso:

$marcado = isset($_POST['marcado']);

 

 

Ps: Use as chaves {} se possível (pelo menos no php), é mais comum você ver códigos com chaves.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá.
      Estou atualizando meu conhecimento com Front-End e me deparei com o seguinte problema.
      Criei um sistema para fazer o upload de imagens e alguns campos text.
      Algo bem simples para depois começar a estudar javascript para mostrar a miniatura....
      Mas quando saio do navegador Chrome ou da aba por mais de 3 minutos, ao retornar o navegador as vezes atualiza ou nem chega atualizar mas limpa os campos.
      Estou usando um Smart Motorola com Android, mas um amigo testou no iPhone e acontece a mesma coisa.
      Gostaria de saber se há como usar javascript para evitar isso?
      Agradeço desde já.

      <!DOCTYPE html>
      <html>
      <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <title>Uploader</title>
      </head>
      <body>
          <form action="?" method="post" enctype="multipart/form-data">
              <br><br>
              <div>selecione a imagem 1</div>
              <input type="file" name="foto1" accept="image/*">
              <br><br>
              <input type="text" name="nome_imagem1">
              
              <br><br>
              <input type="file" name="foto2" accept="image/*">
              <br><br>
              <input type="text" name="nome_imagem2">
              
              <br><br>

              <input type="file" name="foto3" accept="image/*">
              <br><br>
              <input type="text" name="nome_imagem3">
              
              <br><br>
              <input type="submit" value="Enviar">
              <br><br>
          </form>
      <?php
      if ($_SERVER['REQUEST_METHOD'] == 'POST')
      {
          vardump ($_FILES);
      }
      ?>
      </body>
      </html>
       
       
       
    • Por belann
      Olá!
       
      Estou usando o nextjs versão 15.2.3 e criei uma navbar que quando é carregado o programa aparece com a home, mas na hora de clicar na página produtos desaparece a navbar.
      A navbar esta sendo chamada no layout.tsx estou usando typescript
      e fica dessa forma
      <div>           <Navbar/>             <main>{children}</main>             </div>  
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
×

Informação importante

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