Selecionando itens de registros com Javascript

Jan 26, 2011 by     7 Comments    Posted under: JavaScript, MySQL, PHP

Salve, salve, queridos leitores e visitantes! Depois de um mês de férias, vamos voltar à ativa com novos posts e tutoriais. Demorei a voltar, mas garanto que valeu a pena, pois estou cheio de novas idéias e experiências para compartilhar com todos. Então, chega de “nhen-nhen-nhen” e vamos ao que interessa.

Vamos começar o ano com um tutorial bem interessante usando recursos de PHP, MySQL e JavaScript. Trata-se de como listar, selecionar e identificar um registro de banco de dados usando essas três linguagens básicas internet. Na verdade, este tutorial é uma sequência do tutorial escrito em novembro/2010, Filtros e buscas com php e mysql, o qual sugiro que leiam antes de dar continuidade a este.

A idéia é fazer a listagem dos registros existentes em uma tabela do banco de dados, colocando ao lado de cada linha (registro) um checkbox que fará a seleção do respectivo registro e permitirá executar ações como editar e excluir. Não vou entrar em detalhes de como fazer a listagem, pois isto já foi explicado no post citado acima. Vou apenas explicar o que alterei e adicionei, ok. Vamos lá. :)

O banco de dados é o mesmo do post que citei acima e não haverá modificações.

O PHP e o HTML também serão os mesmos com as seguintes modificações:

Em primeiro lugar, vamos fazer com que nossa tabela seja envolvida por um formulário, adicionando o seguinte código acima da linha 01:

<form name="grid" id="grid" action="" method="post">

* Detalhe importante: Retire o formulário do filtro que se encontra da linha 04 à 09. Caso deseje utilizá-la também, você pode colocá-lo em uma tabela acima dessa para não dar comflito, pois um formulário dentro de outro certamente vai dar problema.

O próximo passo é fechar o formulário abaixo da tag de fechamento da tabela, abaixo da linha 66

- Continuando com os ajustes, logo abaixo da linha 12, vamos inserir uma nova célula na tabela e em seu conteúdo haverá o checkbox que será responsável por marcar/desmarcar todos os demais checkboxes existentes no documento, ou seja, todos os registros vindos do banco de dados através de uma função javascript que é chamada sempre que marcado e desmarcado. Veja o código:

<td><input type="checkbox" name="marcatodos" id="marcatodos" value="" onClick="javascript:marcaTodos();" /></td>

- Abaixo da linha 56 será inserido também uma nova célula que se repetirá durante a execução do while responsável pela listagem dos registros. Essa célula também tem um checkbox cujo valor é o id do registro atual, ou que está sendo impresso pelo PHP. Assim, sempre que selecionar esse checkbox, automaticamente se está selecionando o registro o qual ele representa.

<td><input type="checkbox" name="checkbox" id="checkbox" value="< ? echo $rowCliente['id'];?/>" /></td>

Agora vamos ao javascript. O código abaixo pode ser colocado dentro da tag head da sua página da seguinte forma:

<script language="javascript">
function marcaTodos() {
var form = document.grid;
// se o checkbox é marcado, deve marcar todos os demais
if (form.selectall.checked == 1) {
for (i = 0; i < form.elements.length; i++) {
if (form.elements[i].type == "checkbox") {
form.elements[i].checked = 1;
}
}
}
// se o checkbox é desmarcado, deve desmarcar todos os demais
if (form.selectall.checked == 0) {
for (i = 0; i < form.elements.length; i++) {
if (form.elements[i].type == "checkbox") {
form.elements[i].checked = 0;
}
}
}
}
</script>

Colocarei o código acima dentro de um arquivo chamado script.js, salvo na mesma pasta do meu arquivo html principal e o chamarei dentro da tag head da minha página, através da linha abaixo:

<script type="text/javascript" src="script.js"></script>

Vamos às explicações: a função marcaTodos tem o objetivo de percorrer todo o documento html em busca dos elementos do tipo checkbox e marcá-los, caso o checkbox marcatodos esteja sendo marcado ou desmarcá-los caso ele esteja sendo desmarcado.

Bom, por enquanto é isto!

Espero que tenham gostado. Fiquem à vontade e deixem suas dúvidas, críticas e sugestões nos comentários.

Até o próximo post. :)

No related posts.

7 Comments + Add Comment

  • Oi Sergio,

    Parabéns, muito legal a sua disposição em compartilhar conhecimentos.
    Isso é exatamente o que preciso.
    Sei que é pedir muito, mas por acaso você não tem esses arquivos (desse post + do post “Filtros e buscas com PHP e MySQL”) para disponibilizar para download?
    Como sou iniciante e estou precisando disso com urgência, me perco em erros bobos como de sintaxe…

    Obrigada e me desculpe o incomodo!

  • Oi, Priscila. Obrigado pelos elogios.

    Sei como é difícil quando se está começando, mas pegar pronto e utilizar não é o melhor caminho.
    Me envie quais problemas está tendo com estes códigos. Todos eles foram testados e utilizados em sistemas que desenvolvi (disposto no meu portfolio).

    Assim, te dou uma ajuda por aqui e todos que acessam o site aprendem também, pode ser?

    Abs.

  • Ok, Sergio. Muito obrigada! Mas não estou falando que seus códigos estão com erro, ok? O problema é comigo mesmo, por ser iniciante.

    No primeiro artigo, criei o banco de dados, criei um arquivo index.php com os códigos e fiz a conexão com o bd utilizando

    Quando peço para busca pelo nome Pri (nome que está cadastrado no banco) somente, retorna o erro:
    “You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘LIKE ‘%Pri%” at line 1″
    O que deve ser exatamente o que você me falou no outro post… que pode ser aspas e tal!
    Mas até agora não consegui encontrar o que é! Não estou vendo problema com as aspas!
    Aqui segue meu arquivo index.php http://www.sendspace.com/file/73y8ku
    Muito obrigada!

  • Oi, Priscila.

    Tudo bem, então. Vamos depurar o seu código.

    Primeira coisa a ser feita é visualizar o SQL que está sendo gerado. Sendo assim, coloque imediatamente acima da linha que executa seu código ($queryClientes = mysql_query($sqlClientes) or die(mysql_error()); ) o seguinte:

    print $sqlClientes; break;

    Isso vai imprimir na tela o SQL que gerou ao executar a busca. Vai aparecer outra linha de erro referente ao BREAK, simplesmente ignore-a, pois vc vai apagar essa linha quando o SQL estiver correto. O comando BREAK força o PHP a parar imediatamente a execução e geralmente é usado dentro de laços de repetição. Nesse caso ele é útil também para não deixar a execução prosseguir.

    Feito isso, realize a busca e preste atenção no código SQL que está gerando. Um erro muito comum de quando se trabalha com concatenação de strings é o esquecimento em deixar espaço entre as strings concatenadas. Para ajudar, você pode copiar a SQL gerada e executá-la diretamente no banco de dados.

    Acho que isso resolve pelo menos parte do seu problema.

    Qualquer outra dúvida, comente novamente.

    Abs.

  • Oi Sergio, achei meu erro!
    “é o esquecimento em deixar espaço entre as strings concatenadas.”
    Foi simplesmente isso! Não deixei espaço onde deveria!
    Poxa, um erro tão besta!
    Muito obrigada pela ajuda!

  • Ahh… normal acontecer.

    Já sofri muito com erros como este quando estava iniciando.

    Qualquer dúvida, posta ae!

    Abs.

  • Boa tarde! Eu fiz tudo como voce explicou, mas nao funcionou parte, onde quero selecionar todos checkbox ou desmarcar selecção. Onde que pode ser o erro. Ajudam por favor.

Got anything to say? Go ahead and leave a comment!

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Refresh



Arquivo

January 2011
S M T W T F S
« Dec   Apr »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Tags