Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
Alguém pode me dar uma luz?
@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 noiteVocê ao menos já tentou ver o que está sendo imprimido no value?
Para verificar se ele realmente está pegando um valor inexistente?
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.>
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.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>
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.>
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é? ) 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
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']);
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 (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é 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á erroSó 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']; $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.
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