Ir para conteúdo

Arquivado

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

Biel.

redirecionar id vindo do banco de dados para link especifico

Recommended Posts

Boa noite a todos. Direto ao ponto. Pessoal abaixo temos o codigo php mysql que lista os nomes que estão no banco de dados
Quando passamos o cursor sobre os links na barra de status exibe este resultado
alterar_nome.php?id=1
alterar_nome.php?id=2
alterar_nome.php?id=3
Gostaria de criar uma regra que fizesse o seguinte:
Quando eu clicar no link que corresponde a joao gostaria que fosse para esta pagina -> alterar_pri_nome.php ou
Quando eu clicar no link que corresponde a pedro gostaria que fosse para esta pagina -> alterar_seg_nome.php ou
Quando eu clicar no link que corresponde a sandro gostaria que fosse para esta pagina -> alterar_ter_nome.php
tabela_aprendiz
id  nome
1    joao
2    pedro
3    sandro

...

<table width="100" border="0" cellpadding="5" cellspacing="5">
<?php
url = $_GET['id'];

$sql = mysql_query("SELECT * FROM tabela_aprendiz WHERE id = '".$url."'");
while($linha = mysql_fetch_array($sql)){
$id   = $linha['id'];
$nome = $linha['nome'];
?>

  <tr>
    <td>id</td>
    <td>nome</td>
    <td>.</td>
  </tr>
  
  <tr>
    <td><?php echo $id ?></td>
    <td><?php echo $nome ?></td>
    <td><a href="alterar_nome.php?id=<?php echo $id;?>" >ALTERAR</a></td>
  </tr>
  
<?php }?>  
</table>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se entendi direito, você pode fazer desse jeito:

<table width="100" border="0" cellpadding="5" cellspacing="5">
<?php
$url = $_GET['id'];
$links = [
  1 => 'alterar_pri_nome.php',
  2 => 'alterar_seg_nome.php',
  3 => 'alterar_ter_nome.php'
];

$sql = mysql_query("SELECT * FROM tabela_aprendiz WHERE id = '".$url."'");
while($linha = mysql_fetch_array($sql)){
$id   = $linha['id'];
$nome = $linha['nome'];
?>

  <tr>
    <td>id</td>
    <td>nome</td>
    <td>.</td>
  </tr>
  
  <tr>
    <td><?php echo $id ?></td>
    <td><?php echo $nome ?></td>
    <td><a href="<?=$links[$id]?>" >ALTERAR</a></td>
  </tr>
  
<?php }?>  
</table>

Apenas algumas coisas:

  • Funções mysql_* serão retiradas do php, então é melhor começar a usar ou mysqli_* ou PDO, além de serem mais seguras;
  • Ao invés de usar
    while($linha = mysql_fetch_array($sql)){
    ?>
    HTML
    <?php }?> 

    você pode usar

    while($linha = mysql_fetch_array($sql)):
    ?>
    HTML
    <?php endwhile; ?> 
    

Compartilhar este post


Link para o post
Compartilhar em outros sites

EmanuelFN, com sua dica consegui resolver dessa forma

<table width="100" border="0" cellpadding="5" cellspacing="5">
<?php
url = $_GET['id'];

$sql = mysql_query("SELECT * FROM tabela_aprendiz WHERE id = '".$url."'");
while($linha = mysql_fetch_array($sql)){
$id   = $linha['id'];
$links = array (
				'1' => 'alterar_pri_nome.php?id=' ,  	
				'2' => 'alterar_seg_nome.php?id=',   
				'3' => 'alterar_seg_nome.php?id=' 
				);

$nome = $linha['nome'];
?>

  <tr>
    <td>id</td>
    <td>nome</td>
    <td>.</td>
  </tr>
  
  <tr>
    <td><?php echo $id ?></td>
    <td><?php echo $nome ?></td>
    <td><a href="<?php echo $links[$id];?><?php echo $id;?>">alterar</a></td>
  </tr>
  
<?php }?>  
</table>

infelizmente postei a tabela errada. Desculpa! Esta é a tabela

tabela_aprendiz
id     idgrupo  nome
1      25       joao
2      25       pedro
3      25       sandro
4      26       josé
5      26       antonio
6      27       adriano
7      27       diogo
8      27       diego
Eu esqueci de mencinar um ponto crucial na primeira tabela que postei.
o primeiro id é auto incremento. Veja: Se eu excluir o id 1 ou id 2 ou id 3 e fazer outro cadastro com outro nome o resultado é que esta ordem
id
1
2
3
já não vai existir mais. E a regra array vai me levar para link cujo id não existe. Então pensando nisso acrescentei mais uma linha na tabela_aprendiz com nome idgrupo, pois essa idgrupo nunca vai mudar.
IMP: Não hora que eu clicar em um link para alterar um nome especifico tem que pegar sempre pelo id auto incremento, pois na tela de alteração é para exibir apenas um nome por vez.
com essa nova tabela que postei ainda não consegui fazer a coisa funcionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, isso?

<table width="100" border="0" cellpadding="5" cellspacing="5">
<?php
$url = $_GET['id'];
$links = [
  'alterar_pri_nome.php?id=',
  'alterar_seg_nome.php?id=',
  'alterar_ter_nome.php?id='
];
$contador = 0;

$sql = mysql_query("SELECT * FROM tabela_aprendiz WHERE id = '".$url."'");
while($linha = mysql_fetch_array($sql)){
$id   = $linha['id'];
$nome = $linha['nome'];
?>

  <tr>
    <td>id</td>
    <td>nome</td>
    <td>.</td>
  </tr>
  
  <tr>
    <td><?php echo $id ?></td>
    <td><?php echo $nome ?></td>
    <td><a href="<?=$links[$contador] . $id?>" >ALTERAR</a></td>
  </tr>
  
<?php }; contador++;?>  
</table>

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.