Artigos comentados e explicados sobre MySQL
Moderador: web
por web Offline » Sáb Jul 25, 2009 10:51 pm
|
|
Depois de muito estudo, estou postando aqui um script que montei para reordenar os dados de uma tabela.
A idéia do script é a seguinte:
Eu tenho o seguinte
id - info 1 - a 2 - b 3 - c
Eu quero ter links para subir o posicionamento das linhas, por exemplo
1 - a 2 - b | SOBE 3 - c | SOBE
Ou seja, se eu clicar em SOBE no id 3, a ordenação passa a ser a seguinte
1 - a 2 - c | SOBE 3 - b | SOBE
Você notou que a coluna info submiu, ou seja, b foi para o lugar de c, e vice-versa, e o id se manteve em ordem.
Para quem quer estudar o script para adaptar em algum sistema, crie uma tabela chamada datas e IMPORT o seguinte
* Um detalhe, quando você troca a segunda linha com a primeira, a primeira passa a ser a última linha
- Código: Selecionar todos
CREATE TABLE `datas` ( `id` int(10) NOT NULL auto_increment, `info` varchar(1) collate latin1_general_ci NOT NULL, UNIQUE KEY `id` (`id`) ) INSERT INTO `datas` (`id`, `info`) VALUES (1, 'a'), (2, 'b'), (3, 'c');
Crie um arquivo chamado conecta.php com o seguinte:
- Código: Selecionar todos
<?php $conexao = mysql_connect("localhost", "seulogin", "suasenha") or die(mysql_error()); $db = mysql_select_db("seubd"); ?>
Agora vai o script principal, chamarei de principal.php
- Código: Selecionar todos
<?php include("conecta.php"); if($_GET['atualiza']) { extract($_GET); include("conecta.php");
// pega id anterior $selec = mysql_query("SELECT id FROM datas WHERE id < $atual ORDER BY id DESC LIMIT 1") or die(mysql_error()); $anterior = mysql_fetch_array($selec);
// pega ultimo id $selec2 = mysql_query("SELECT id FROM datas ORDER BY id DESC LIMIT 1") or die(mysql_error()); $ultimo = mysql_fetch_array($selec2);
// atualiza id $atualiza = mysql_query("UPDATE datas SET id = ".($ultimo[id]+1)." WHERE id=".$anterior[id]."") or die(mysql_error());
// ordena ids $atu = "SELECT id, info FROM datas ORDER BY id ASC"; $exec = mysql_query($atu, $conexao) or die(mysql_error()); $i = 1; while($dados=mysql_fetch_array($exec)) { extract($dados); $update="UPDATE datas SET id='$i' WHERE info='$info'"; mysql_query($update) or die(mysql_error()); $i++; } // atualiza esse documento header("Location:principal.php"); }
$selec = "SELECT id, info FROM datas ORDER BY id"; $exec = mysql_query($selec, $conexao) or die(mysql_error()); $total = mysql_num_rows($exec); $i = 0; while($campos=mysql_fetch_array($exec)) { extract($campos); $i++; if($i==1) { echo "$info - primeiro<br>"; } else { echo "$info - <a href='?atualiza=sim&atual=$id'>SOBE</a><br>"; } } ?>

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb [@] hotmail [.] com
web
ADMIN
Mensagens: 11904
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
Voltar para Artigos sobre MySQL
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante
|
|
|