Ir para conteúdo

POWERED BY:

Arquivado

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

faguinho

Passar variável no update

Recommended Posts

Pessoal, estou precisando de uma ajuda.

Tenho o seguinte código:

echo "<tr>
        <form method='post' action='cadastrar.php'>
        <td bgcolor=#FFE4C4>" . $dados['id'] . "</td>
        <td bgcolor=#FFE4C4>" . $dados['nome'] . "</td>
        <td bgcolor=#FFE4C4 align='center'>" . $dados['lista'] . "</td>
        <td bgcolor=White><center>
            <input type='text' name='nome2' value='Seu nome...' />
            <input type='submit' value='Assinar' />
            </form>
        </center></td>
    </tr>";

Preciso pegar o valor que ele lista na variável $dados['id'] e conseguir passar no update do código abaixo.

$nome = $_POST['nome2']; // Recendo o que foi digitado no campo nome2 do formulário.
$id = $_POST['' . $dados['id'] . '']; // Recendo o que foi digitado no campo nome do formulário.

$query = mysql_query("UPDATE chadoarthur SET lista='$nome' WHERE id='$id'") or die(mysql_error());

Porém com esse meu código, ele não ta fazendo o update pois não consegue pegar o valor de ID.

Alguém tem alguma sugestão?


Ele vem de uma query Select. Segue abaixo o código todo.

// Monta a consulta MySQL para a busca
$sql = mysql_query ("SELECT id, nome, lista FROM chadoarthur ORDER BY id ASC");


//echo "$num_rows Rows\n"
$count = mysql_num_rows($sql);
// conta quantos registros encontrados com a nossa especificação
if ($count == 0) {
echo "<center>Nenhum resultado!</center>";
} else {
// senão
if ($count == 1) {
echo "<center>1 resultado encontrado!</center>";
}

// se houver mais de um resultado diz quantos resultados existem
while ($dados = mysql_fetch_array($sql)) {
// enquanto houverem resultados...
echo "<center><table cellspacing='0' border='1'>
        <tr>
            <td bgcolor=DarkRed><center><font color='White'><b>ID</b></font></center></td>
            <td bgcolor=DarkRed><center><font color='White'><b>Nome</b></font></center></td>
            <td bgcolor=DarkRed><center><font color='White'><b>Assinado Por</b></font></center></td>
            <td bgcolor=DarkRed><center><font color='White'><b>Assinar Lista</b></font></center></td>
        </tr>";
        
        /*Enquanto houver dados na tabela para serem mostrados será executado tudo que esta dentro do while */
while($dados=mysql_fetch_array($sql))

/*Escreve cada linha da tabela dados[RequestUrl] dados[EventCode] */
echo "<tr>
        <form method='post' action='cadastrar.php'>
        <td bgcolor=#FFE4C4>" . $dados['id'] . "</td>
        <td bgcolor=#FFE4C4>" . $dados['nome'] . "</td>
        <td bgcolor=#FFE4C4 align='center'>" . $dados['lista'] . "</td>
        <td bgcolor=White><center>
            <input type='text' name='nome2' value='Seu nome...' />
            <input type='submit' value='Assinar' />
            </form>
        </center></td>
    </tr>";
}
}

echo "</table></center>"; /*fecha a tabela após término de impressão das linhas*/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está querendo pegar os campos dinamicamente, mas numa lista de itens, não há como saber exatamente qual id é.

 

O problema não está no banco, mas no recebimento, não? Se for isso, o problema está no PHP, na interpretação.

 

 

Coloque o id num campo de tipo "hidden", ou então coloque o nome como sendo parte de um vetor ("nome2[" . $dados['id'] . "]"), desta forma também funciona.

 

Depois no PHP tu faz assim:

$nome = array();
$id = array();
foreach ( $_POST[nome2] as $id_form => $value_form ) {
  id[] = $id_form; // não joguei nada dentro dos colchetes para trabalhar como auto_increment: 0, 1, 2, 3, ... (sempre começa do zero)
  $nome[] = $value_form;
}

Desta forma, mesmo que sejam informados mais itens, irá tratar o recebimento de cada um.

 

Pode ver este post do William Bruno, me ajudou muito a resolver um problema semelhante.

 

Aqui a parte 1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

AMigo,

 

Na verdade os IDs já existem.

 

Estou fazendo um SELECT no meu banco, ele lista o id e o nome do produto, ao lado, eu quero utilizar um UPDATE para preencher um campo de lista.

 

Segue o link de exemplo.

www.chadoarthur.com/index2.php

 

Para fazer o UPDATE na linha correta, ele precisa levar o ID justamente para não atualizar todas as linhas. Isso que eu não to conseguindo passar no código php.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que no código que você criou, como existe um formulário para cada item, e o ID não é passado pelo formulário, somente o nome2, não há uma outra forma mais confiável, afinal, como identificar qual o ID a ser tratado?

 

Qual foi o resultado do teste com a solução que sugeri?

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.