Ir para conteúdo

POWERED BY:

Arquivado

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

Ph3i

Ordenar registros em uma tabela

Recommended Posts

Bom, preciso de uma ajuda!

 

Eu não sei como se fachama essa função ou se da pra fazer isso.

O que eu preciso é poder ordenar uma tabela, por exemplo, tenho uma tabela com quatro registros ai eu preciso que o terceiro fique no lugar do segundo e o segundo no lugar do terceiro, ou seja, preciso definir prioridades para os registros.

 

Estou colocando uma tabela como exemplo do que estou tentando explicar.

tabela.gif

 

Valeu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas ele quer mudar dinamicamente de posições e respectivamente mudar de prioridade no banco...

Já fiz isso cara é muito pau... mas para me atrapalhar eu tinha um campo Data, eu tinha que mudar todas as datas.

 

O que você pode fazer é o seguinte:

 

1 - Coloque a prioridade do registro como parametro no LINK da seta pra cima ou pra baixo. Ex:

echo "<a href='pagina.php?alt=$res[prioridade]&sentido=cima&cod=$res[codigo]'> <img src='seta.png'> </a>";
echo "<a href='pagina.php?alt=$res[prioridade]&sentido=baixo&cod=$res[codigo]'> <img src='seta.png'> </a>";

 

2 - Ao receber o valor do parametro no PHP, você pergunta o sentido que você clicou... clicou para cima, então vai subtrair -1 ao valor do GET que você tbm recebeu e atualizar o registro.

 

3 - Vai fazer um While na tabela com uma condição... todos os registros tenham prioridade > valor do GET + 1 e dar um update nos registor que também a prioridade seja > valor GET + 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas ele quer mudar dinamicamente de posições e respectivamente mudar de prioridade no banco...

Já fiz isso cara é muito pau... mas para me atrapalhar eu tinha um campo Data, eu tinha que mudar todas as datas.

 

O que você pode fazer é o seguinte:

 

1 - Coloque a prioridade do registro como parametro no LINK da seta pra cima ou pra baixo. Ex:

echo "<a href='pagina.php?alt=$res[prioridade]&sentido=cima&cod=$res[codigo]'> <img src='seta.png'> </a>";
echo "<a href='pagina.php?alt=$res[prioridade]&sentido=baixo&cod=$res[codigo]'> <img src='seta.png'> </a>";

 

2 - Ao receber o valor do parametro no PHP, você pergunta o sentido que você clicou... clicou para cima, então vai subtrair -1 ao valor do GET que você tbm recebeu e atualizar o registro.

 

3 - Vai fazer um While na tabela com uma condição... todos os registros tenham prioridade > valor do GET + 1 e dar um update nos registor que também a prioridade seja > valor GET + 1

 

 

Cara que idéia boa, vou tentar fazer e depois posto o resultado.

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas ele quer mudar dinamicamente de posições e respectivamente mudar de prioridade no banco...

Já fiz isso cara é muito pau... mas para me atrapalhar eu tinha um campo Data, eu tinha que mudar todas as datas.

 

O que você pode fazer é o seguinte:

 

1 - Coloque a prioridade do registro como parametro no LINK da seta pra cima ou pra baixo. Ex:

echo "<a href='pagina.php?alt=$res[prioridade]&sentido=cima&cod=$res[codigo]'> <img src='seta.png'> </a>";
echo "<a href='pagina.php?alt=$res[prioridade]&sentido=baixo&cod=$res[codigo]'> <img src='seta.png'> </a>";

 

2 - Ao receber o valor do parametro no PHP, você pergunta o sentido que você clicou... clicou para cima, então vai subtrair -1 ao valor do GET que você tbm recebeu e atualizar o registro.

 

3 - Vai fazer um While na tabela com uma condição... todos os registros tenham prioridade > valor do GET + 1 e dar um update nos registor que também a prioridade seja > valor GET + 1

 

Go Back... preciso de mais uma ajuda!

 

Estou fazendo a ordenação e não consegui atualizar o restante dos registros na tabela, por exemplo:

 

Tenho 6 projetos com prioridades de 1 até 6, se eu mudar o que tem prioridade 3 pra cima ele ficará com prioridade 4, só que já existe um projeto com esta prioridade. É isso que não consigo fazer, mudar a prioridade dele pra 3 e dos demais registros da tebela.

 

Pode me ajudar com essa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Pessoal...

 

Consegui fazer de uma maneira bem simples:

 

No arquivo index.php eu apenas exibi os dados do banco em uma tabela.

 

<?php
//Conexão com o Banco 
require_once('includes/php/config.php');

//Selecina os dados da tabela
$SQL = mysql_query("SELECT * FROM `tecnicos` WHERE `suporte` = 'true' ORDER BY `prioridade` DESC") or die ("Erro no SELECT: ".mysql_error());

//Seleciona o valor máximo da prioridade	
$SQLMax = mysql_query("SELECT MAX(prioridade) FROM `tecnicos` WHERE `suporte` = 'true' ORDER BY `prioridade` DESC") or die ("Erro no SELECT MAX: ".mysql_error());
$RESMax = mysql_fetch_array($SQLMax);

//Seleciona o valor mínimo da prioridade
$SQLMin = mysql_query("SELECT MIN(prioridade) FROM `tecnicos` WHERE `suporte` = 'true' ORDER BY `prioridade` DESC") or die ("Erro no SELECT MIN: ".mysql_error());
$RESMin = mysql_fetch_array($SQLMin);
?>

<!-- Fazendo a tabela -->
<table id="myTable">
<thead>
           <tr>
	<td>Id</td>
               <td>Nome</td>
	<td>Telefone</td>
               <td>Ações</td>
    </tr>
</thead>
<tbody>
   	    <?php
	$i = '1';
	while ($ROW = mysql_fetch_array($SQL)) {
	    echo "<tr>";
	    echo "<td>$i</td>";
	    echo "<td>".$ROW['tec_nome']."</td>";
	    echo "<td>".$ROW['tec_telefone']."</td>";

	    //Se o valor máximo for igual a prioridade - Adiciona apenas a letra B (Baixo)
	    if ($RESMax[0] == $ROW['tec_prioridade']) {
	        echo "<td align=\"center\"><a href='orden.php?prioridade=$ROW[prioridade]&sentido=baixo&Id=$ROW[id]'>B</a></td>";
	    //Se o valor mínimo for igual a prioridade - Adiciona apenas a letra C (Cima)
                   } elseif ($RESMin[0] == $ROW['tec_prioridade']) {
		echo "<td align=\"center\"><a href='orden.php?prioridade=$ROW[prioridade]&sentido=cima&Id=$ROW[id]'>C</a></td>";	
	    //Se não adicina as duas letras C e B
                   } else {
		echo "<td align=\"center\"><a href='orden.php?prioridade=$ROW[prioridade]&sentido=cima&Id=$ROW[id]'>C</a> <a href='orden.php?prioridade=$ROW[prioridade]&sentido=baixo&Id=$ROW[id]'>B</a></td>";	
	    }
	    echo "</tr>";
	    $i++;
	}
    ?>
</tbody>
</table>

 

E no arquivo ordem.php eu fiz o seguinte:

 

<?php
//Conexão com o Banco
require_once('includes/php/config.php');

//Recebo os valores via GET
$prioridade = $_GET['prioridade'];
$Id = $_GET['Id'];

if ($_GET['sentido'] == 'cima') {
	//Se for para cima soma mais um no valor da prioridade
	$prioridade = $prioridade + 1;

	//Atualizo a prioridade para o Id que recebi
	$UPdate = mysql_query("UPDATE `tecnicos` SET `prioridade` = '$prioridade' WHERE `Id` = '$Id' LIMIT 1") or die ("Erro no UPDATE para Cima: ".mysql_error());

	//Seleciona o Id que tenha a mesma prioridade, mas que seja diferente do Id que recebi
	$SQL = mysql_query("SELECT * FROM `tecnicos` WHERE `suporte` = 'true' AND `prioridade` = '$prioridade' AND `Id` <> '$Id' ORDER BY `prioridade` DESC") or die ("Erro no SELECT: ".mysql_error());
	$ROW = mysql_fetch_array($SQL);

	if ($SQL) {
		//Se retornar algo: Subitrair um da prioridade
		$prioridade = $prioridade - 1;
		$id = $ROW['Id'];

		//Atualiza o registro com sua nova prioridade -1
		$UPdate = mysql_query("UPDATE `tecnicos` SET `prioridade` = '$prioridade' WHERE `Id` = '$id' LIMIT 1") or die ("Erro no UPDATE para Cima: ".mysql_error());
		header("Location: index.php");
	}
 } else {
	//Se for para baixo subitrai um no valor da prioridade
	$prioridade = $prioridade - 1;

	//Atualizo a prioridade para o Id que recebi
	$UPdate = mysql_query("UPDATE `tecnicos` SET `prioridade` = '$prioridade' WHERE `Id` = '$Id' LIMIT 1") or die ("Erro no UPDATE para Cima: ".mysql_error());

	//Seleciona o Id que tenha a mesma prioridade, mas que seja diferente do Id que recebi
	$SQL = mysql_query("SELECT * FROM `tecnicos` WHERE `suporte` = 'true' AND `prioridade` = '$prioridade' AND `Id` <> '$Id' ORDER BY `prioridade` DESC") or die ("Erro no SELECT: ".mysql_error());
	$ROW = mysql_fetch_array($SQL);

	if ($SQL) {
		//Se retornar algo: Soma mais um na prioridade
		$prioridade = $prioridade + 1;
		$id = $ROW['Id'];

		//Atualiza o registro com sua nova prioridade +1
		$UPdate = mysql_query("UPDATE `tecnicos` SET `prioridade` = '$prioridade' WHERE `Id` = '$id' LIMIT 1") or die ("Erro no UPDATE para Cima: ".mysql_error());
		header("Location: index.php");
	}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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