1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Botões Alterar e Cancelar - erro na funcionalidade

Discussão em 'Web Development' iniciada por khaluh, 19 de Junho de 2007. (Respostas: 9; Visualizações: 1773)

  1. khaluh

    khaluh Power Member

    Viva

    Estou aqui com um problema daqueles que devem ser básicos, mas de tanto procurar o erro, já me parece que está tudo bem feito.

    Então o código é o seguinte:
    PHP:
    <?php
        
    include '../ligacao_bd.php';

        
    //Captura da opção
        
    $opcao == $_GET['submit'];
        
    //Captura do id da memoria
        
    $id $_POST['id_memorias'];
        
    //Captura do estado da memoria
        
    $estado $_POST['estado_alt'];
        
        if (
    $opcao 'Alterar')
        {

             
    //Cria e executa consulta em SQL        
            
    $sql =     "
                    UPDATE memorias 
                    SET     
                        mem_estado = '
    $estado
                    WHERE mem_id_mem = 
    $id
                    "
    ;

            
    $resultado mysql_query($sql
            or die (
    "Erro ao actualizar dados da memória.");
            
            
    //Envia para a página memórias
            
    header("location:../index.php?opcao=memorias");

        }
         
        else if (
    $opcao 'Cancelar')
            {
            
    header("location:../index.php?opcao=memorias");
            }
        
    ?>

    A parte do alterar está a funcionar, só que quando faço cancelar apaga os dados relativos campo mem_estado.

    A variável
    PHP:
     //Captura do estado da memoria
        
    $estado $_POST['estado_alt'];
    vem do seguinte código na página onde escolho a alteração
    PHP:
    <td width="250">
                    <select name="estado"  onChange = "javascript:altera_estado_memorias();">
                    <option value='se' selected > Escolher </option>
                    <?php
                        
    while($row_mem=mysql_fetch_array($estado))
                        {
                              echo 
    "<option value='$row_mem[ep_estado]'>$row_mem[ep_estado]</option>";
                        }
                    
    ?>
                </select>
                <input type="hidden" name="estado_alt" id="estado_alt" size="3"> 
        </td>
    Eu penso que o erro talvez esteja no que escrevi no
    Código:
    else if ($opcao = 'Cancelar')
            {
            header("location:../index.php?opcao=memorias");
            }
    mas não sei qual será o erro.

    Obs. Quando faço cancelar, se tiver alterado o campo, ele atribui o valor existente no campo alterado (em suma, fazem os 2 botões o mesmo)
     
    Última edição: 19 de Junho de 2007
  2. scroll

    scroll Power Member

    boas,

    1 - não me parece boa prática -> $row_mem[ep_estado] mas sim $row_mem['ep_estado'].
    2 - else if ($opcao = 'Cancelar'), não funka. tens de ter: else if ($opcao == 'Cancelar'), idem idem...


    abraço,
     
    Última edição: 19 de Junho de 2007
  3. khaluh

    khaluh Power Member

    Estou a usar o Dreamweaver MX 2004 e ele aceita apenas como sintaxe correcta este código
    PHP:
    echo "<option value='$row_proc[ep_estado]'>$row_proc[ep_estado]</option>";
    Já tive else if ($opcao = 'Cancelar') e else if ($opcao == 'Cancelar') e dão-me todos o mesmo problema, ficam sempre no
    PHP:
    if ($opcao == 'Alterar')
        {

             
    //Cria e executa consulta em SQL        
            
    $sql =     "
                    UPDATE processadores 
                    SET     
                        pr_estado = '
    $estado
                    WHERE pr_id_proc = 
    $id
                    "
    ;

            
    $resultado mysql_query($sql) or die ("Erro ao actualizar dados do processador.");
            
            
    //Envia para a página processadores
            
    header("location:../index.php?opcao=processadores");

        }
    Ah, e se usar if ($opcao == 'Alterar') manda-me ir passear, se usar if ($opcao = 'Alterar') ele fica todo contente...

    Obrigado na mesma
     
  4. scroll

    scroll Power Member

    se calhar porque tens -> $opcao == $_GET['submit']; quando devias ter $opcao = $_GET['submit'];

    ... e porquê $_GET ?


    Abraço,

    ps - o teu DW deve tar marado... podes lixar no DW e 'forçar'' essa alteração.
     
    Última edição: 19 de Junho de 2007
  5. khaluh

    khaluh Power Member

    Essa era básica, fogo... >(
    Resolvida a questão, continuo com o mesmo problema

    Porque? Não te sei responder :-D mas como era só passar uma simples opção, nao me preocupei muito com o $_GET ou o $_POST, pois considerei que nao seria importante a nível de segurança usar um ou outro.

    Penso que seja um erro na formulação dos if's, pois mesmo com as alterações efectuadas acontece-me o mesmo.

    O que penso que poderei fazer é passar o valor actual (antes da alteração) e o alterado e caso seja escolhido o Alterar coloco o actual, se for o Cancelar, forço uma actualização, com o valor antes da alteração.

    O DW é uma versão educacional, pois estou numa escola de formação
     
  6. scroll

    scroll Power Member

    mas repara no seguinte:
    se o teu form faz action POST como esperas o retorno de um GET ?

    de qq forma if($opcao = 'Alterar') é que não pode ser. tens mesmo de utilizar o == .

    abraço,

    ps - podes sempre tentar uma aproximação mais directa. if($_POST['Submit']=='Alterar')... else if ($_POST['Submit']=='Cancelar') else ..... ou talvez se 'limpares' a variável $opcao antes: $opcao='' e depois $opcao=$_POST[Submit'].
     
    Última edição: 19 de Junho de 2007
  7. khaluh

    khaluh Power Member

    Já o meu prof está-me sempre a avisar do mesmo :lol: E como vou tendo sorte, as coisas vão funcionando

    Fiz essa alteração

    Optei por fazer uma limpeza inicial da variável $opcao e agora como fiz as 3 alterações em simultaneo, nao sei qual era ou se eram as 3

    Obrigado
     
  8. scroll

    scroll Power Member

    mas já tens o problema resolvido ?
     
  9. khaluh

    khaluh Power Member

    Já.

    Obrigado, era simples, como tinha dito inicialmente, só que de tanto ver, parecia tudo correcto.

    Relativamente ao
    ele apenas aceita como correcto o
    PHP:
    echo "<option value='$row_proc[ep_estado]'>$row_proc[ep_estado]</option>";
    fazendo o pretendido desta forma e dando erro usando a formula recomendada.
     
  10. scroll

    scroll Power Member

    ok, não entendo, mas ainda bem

    abraço,

    ps - aparece lá no fórum.
     

Partilhar esta Página