[PHP] - Input é executada duas vezes

Majin Vegeta

Power Member
boas pessoal e o seguinte, tenho uma input dentro de um ciclo for e a cada linha de dados listada tenho a aparecer um botao. o meu problema e que ao carregar nesse botao ele chama-me um scrip duas vezes em vez de chamar apenas uma. e ainda por cima se eu meter letras em bez de um input ou um input do tipo text, ele so executa uma vez :(

help please


Código:
for($i=0;$i<$nleiloes;$i++) {
$leilao = mysqli_fetch_assoc($result);
   $cod=$leilao['cod_leilao'];
   echo "<form action=\"index.php?pagina=meus_leiloes\" method=\"post\" enctype=\"multipart/form-data\">";
   echo '<tr><td align="center" ><font size="-1">' .$leilao['titulo'].    '</font></td>';
   echo '<td align="center" ><font size="-1">' .$leilao['descricao']. '</font></td>';
   echo "<td align=center><img src=\"imagem_leilao.php?pp=$cod\" width=30 height=30></td>";
   echo '<td align="center" ><font size="-1">' .$leilao['data_limite']. '</font></td>';
   echo '<td align="center" ><font size="-1">' .$leilao['valor']. '</font></td>';
   echo '<td align="center" ><font size="-1">' .$leilao['nick_cliente']. '</font></td>';
   echo '<td align="center" ><font size="-1">' .$leilao['estado_leilao']. '</font></td>';
   echo "<input type='hidden' value='".$leilao['cod_leilao']."' name='cod_leilao'>";
   echo "<td align='center'><input type='text' size='7' value='".$leilao['valor']."' name='valor'></td>";?>
   <td align="center">
  [COLOR=Red] <a href="javascript:confirmaExclusao('index.php?pagina=limpar_carrinho&id=<?php echo "$log";?>')"><input type="submit" name="cancelar" value="Cancelar"></a>[/COLOR]
    </td>
    <?php echo "</tr>";
echo "</form>";
}


esta ai codigo da pagina onde se encontra o botao para o caso de ajudar a resolver o problema.

cumps
 
Última edição pelo moderador:
e o que é faz a função confirmaExclusao ?

e no parametro dessa função ('index.php?pagin a=limpar_carrinho&id=<?php echo "$log";?>'), o que é a variavel $log?
é que não a estou a ver em mais lado nenhum, e assim todos esses botões (um por cada execução do for) vão ficar exactamente com o mesmo parametro. acho que não faz muito sentido. não seria antes $cod?

a tua duvida, já que se trocares o input por letras isso funciona, cheira-me que é porque tens o botão como submit, que vai obrigar a carregar novamente uma página
 
eu nao queria postar o codigo todo da pagina que era para nao parecer maçador mas eu posto.
a variavel $log e a variavel que leva o nick da pessoa com login efectuado.

aqui vai a pagina:

Código:
<head>
</head>
<body>
<?php
$ligax=mysqli_connect('localhost','root');
if (!$ligax){
    echo '<p>Falha  na ligação';exit;
}
?>

[COLOR=Red]<script language="javascript">
                function confirmaExclusao(aURL) {
                if(confirm('Você tem a certeza que deseja cancelar este leilão')) {
                location.href = aURL;
                }
                }
            </script>[/COLOR]
<?php
//$nick=$_SESSION['login'];
//echo $log;
mysqli_select_db($ligax,'diagonalley');
$sqlstm="select * from leilao, licitacoes where leilao.nick_cliente = '$log' and leilao.cod_leilao=licitacoes.cod_leilao order by leilao.cod_leilao"; 
//echo $sqlstm;
$result=mysqli_query($ligax,$sqlstm);
$nleiloes=mysqli_num_rows($result);


        



?>
    <table border="1" align="center" width="86%" cellpadding="1" cellspacing="1" rules="rows"> 
        <tr>
            <td align="center">
                <font size="-1"><font face="Lucida Fax"> Título </font></font>
            </td>
            <td align="center">
                <font size="-1"><font face="Lucida Fax"> Descrição </font></font>
            </td>
            <td align="center">
                <font size="-1"><font face="Lucida Fax"> Imagem </font></font>
            </td>
            <td align="center">
                <font size="-1"><font face="Lucida Fax"> Data Limite </font></font>
            </td>
            <td align="center">
                <font size="-1"><font face="Lucida Fax"> Última Licitação (€) </font></font>
            </td>
            <td align="center">
                <font size="-1"><font face="Lucida Fax"> Último Licitador </font></font>
            </td>
            <td align="center">
                <font size="-1"><font face="Lucida Fax"> Estado </font></font>
            </td>
        </tr> 
<?php 

for($i=0;$i<$nleiloes;$i++) {
$leilao = mysqli_fetch_assoc($result);
   $cod=$leilao['cod_leilao'];
   echo "<form action=\"index.php?pagina=meus_leiloes\" method=\"post\" enctype=\"multipart/form-data\">";
   echo '<tr><td align="center" ><font size="-1">' .$leilao['titulo'].    '</font></td>';
   echo '<td align="center" ><font size="-1">' .$leilao['descricao']. '</font></td>';
   echo "<td align=center><img src=\"imagem_leilao.php?pp=$cod\" width=30 height=30></td>";
   echo '<td align="center" ><font size="-1">' .$leilao['data_limite']. '</font></td>';
   echo '<td align="center" ><font size="-1">' .$leilao['valor']. '</font></td>';
   echo '<td align="center" ><font size="-1">' .$leilao['nick_cliente']. '</font></td>';
   echo '<td align="center" ><font size="-1">' .$leilao['estado_leilao']. '</font></td>';
   echo "<input type='hidden' value='".$leilao['cod_leilao']."' name='cod_leilao'>";
   echo "<td align='center'><input type='text' size='7' value='".$leilao['valor']."' name='valor'></td>";?>
   <td align="center">
   [COLOR=Red]<a href="javascript:confirmaExclusao('index.php?pagina=limpar_carrinho&id=<?php echo "$log";?>')"><input type="submit" name="cancelar" value="Cancelar"></a>[/COLOR]
    </td>
    <?php echo "</tr>";
echo "</form>";
}
//mysqli_close($ligax);
?>
</table>


cumps
 
Última edição pelo moderador:
Várias coisas que não consigo perceber:

1. Pq é que tens a form a apontar para um url e depois o tentas mudar (erradamente) com um javascript? Pq é que não usas logo o url de 'limpar_carrinho' na action?
2. Donde vêm o $log? Não tá no ciclo nem fora dele.
3. Porquê location.href? Se alguma coisa, devias passar o objecto da form para a função de confirmação e aí mudar-lhe o endereço com form.action = url? Vide http://www.devguru.com/Technologies/ecmascript/QuickRef/form.html

Estão-te a escapar várias coisas.
 
o que ele quer dizer é que, apesar de funcionar, isso fica muito confuso, e haveria maneiras mais simples e lógicas de fazer a mesma coisa

por exemplo, eu continuo a não perceber porque é que cada ciclo do for vai escrever um botão diferente, visto que todos esses botões serão iguais (o $log nunca muda por isso têm sempre o mesmo parametro). qualquer dos botões vai ter o mesmo resultado, porque não por apenas um botão no final de tudo?
 
Verdade que a variável $log não está declarada.

Quanto ao método do form, não é bem spaghetti, não tem nenhum inconveniente, fazer um redirect ou mudar o form action, porque a form só é processada depois de fazeres ok no prompt, e um sobrepõe-se ao outro.


Edit: Mas eu acho que o $log é o $_SESSION, que ele tem comentado e atribuido ao nick que depois vai mudar.
 
Última edição:
isto e o seguinte. o $log vinha de outro codigo semelhante que eu estava a usar noutra pagina e que servia para me levar o nome do cliente que tinha login efectuado.porque aqui ja nao estou a usar o $log mas outra variavel que me vai levar nao o nick mas um codigo que corresponde a cada produto.
eu sei que podia fazer um botao para percorrer o ciclo todo mas neste caso nao da para fazer isso porque o que eu quero e fazer um update, e posso so querer fazer um update de um certo produto percebem?

espero ter sido esclarecedor

cumps
 
Back
Topo