Ir para conteúdo

POWERED BY:

Arquivado

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

anneviana

[Resolvido] foreach para update de valores no bd

Recommended Posts

Olá pessoal gostaria de uma ajudinha de vocês com um problema que estou com muita dificuldade de resolver

 

eu tenho uma página template com checkbox assim :

 

<input type=checkbox name="id[]" value="1" id="comment[{$comments[i].CID}]">

 

E quero passar isso para um foreach que dá o update na pagina de action do formulario do template está assim:

 

<?php
define('_VALID', true);
define('_ADMIN', true);
require '../include/config.php';

if(isset($_POST['approve_selected_comments'])) //botão de submit de aprovação do formulário
{
       foreach($_POST["id"] as $registro)
       {

               mysql_query("UPDATE video_comments SET aprovado=1 WHERE CID = $registro "); //aqui faz o update de cada registro.

       }
}

$redirecionar ="comentarios_all.php";
header("Location: $redirecionar");
?>


 

Ele simplesmente não funciona, não acontece nada quando clico em submit...queria saber se alguem sabe como lidar com isso quando o valor é recebido de uma pagina template, se é de alguma outra forma, ou se pode apontar no que estou errando...obrigada desde já galera..

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu não entendi porque disso id="comment[{$comments.CID}], esta fora da sintaxe correta do php.

 

O que você pode fazer é simples usar um name no lugar do seu segundo id no checkbox e esse name tem que ser o nome igual esta no banco e aí você põe na query que faz o update.

 

e me tira uma dúvida seu checkbox tem quantos valores?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada pela resposta elitediego!

 

isso

comment[{$comments[i].CID}]

 

faz parte do código smarty de paginas template...

 

vou tirar esse id e ver se funciona,mas estou achando que não esse é o problema...

 

ah esqueci de responder meu checkbox é dinamico , tenho uma tabela comentarios e quero aprovar/deletar os comentarios usando as checkbox

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim que você fizer a alteração post os possiveis erros que surgirão, para podermos tentar solucionar.

e essa sintaxe esta errada comment[{$comments.CID}]

 

e se eu entendi no caso você só vai poder selecionar uma valor de cada vez aprovar/deletar ?

porque se for isso você não precisa colocar id[] é só colocar id

Compartilhar este post


Link para o post
Compartilhar em outros sites

analise esse trecho de codigo abaixo e tente seguir como exemplo.

 

<select size="1" name="velocidade" style="color: #0000FF">

   <option selected><? echo $linha['velocidade']; ?></option>
   <option value="64kbps">64kbps</option>
   <option value="1mbps">1mbps</option>
   <option value="2mbps">2mbps</option>
   <option value="3mbps">3mbps</option>
   <option value="4mbps">4mbps</option>
   <option value="5mbps">5mbps</option>
   <option value="6mbps">6mbps</option>
   <option value="8mbps">8mbps</option>
   <option value="10mbps">10mbps</option>
 </select>

 

$velocidade=$_POST['velocidade'];

//abaixo a query realiza as alterações no banco
   $sql="Update artigos.clientes set id='$id', nome='$nome', endereco='$endereco', ip='$ip', tel='$tel', cel='$cel', data_ativ='$data_ativ', situacao='$situacao', valor='$valor', email1='$email1', email2='$email2', cpf_cnpj='$cpf_cnpj', obs='$obs', gateway='$gateway', mascara='$mascara', dns1='$dns1', dns2='$dns2', scm='$scm', sva='$sva', [b]velocidade='$velocidade'[/b], boleto='$boleto', data_vencimento='$data_vencimento' where id='$id'";

você não precisa de um foreatch para inserir dados no bd.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@elitediego Kra isto faz parte do smarty

 

comment[{$comments[i].CID}]
Assim como if
{if|valor} // etc...

 

Com relação ao codigo faça isso para debugar:

if(isset($_POST['approve_selected_comments'])) { //botão de submit de aprovação do formulário

    foreach($_POST["id"] as $registro) {
      //mysql_query("UPDATE video_comments SET aprovado=1 WHERE CID = $registro");

      echo "UPDATE `video_comments` SET `aprovado` = 1 WHERE `CID` = {$registro}";
    }
} else { echo 'Nao entrou no foreach'; }

Compartilhar este post


Link para o post
Compartilhar em outros sites

@elitediego Kra isto faz parte do smarty

 

comment[{$comments[i].CID}]
Assim como if
{if|valor} // etc...

 

Com relação ao codigo faça isso para debugar:

if(isset($_POST['approve_selected_comments'])) { //botão de submit de aprovação do formulário

    foreach($_POST["id"] as $registro) {
      //mysql_query("UPDATE video_comments SET aprovado=1 WHERE CID = $registro");

      echo "UPDATE `video_comments` SET `aprovado` = 1 WHERE `CID` = {$registro}";
    }
} else { echo 'Nao entrou no foreach'; }

 

Já entendi acabei de pesquisar bastante sobre isso, e achei a sua forma de debugar bem coerente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada pela resposta André,

 

Testei seu código e não funcionou...

 

<?php
define('_VALID', true);
define('_ADMIN', true);
require '../include/config.php';

if(isset($_POST['approve_selected_comments'])) { //botão de submit de aprovação do formulário

foreach($_POST["id"] as $registro) {
      //mysql_query("UPDATE video_comments SET aprovado=1 WHERE CID = $registro");

      echo "UPDATE `video_comments` SET `aprovado` = 1 WHERE `CID` = {$registro}";

    }
} else { echo 'Nao entrou no foreach'; }



$redirecionar ="comentarios_all.php";
header("Location: $redirecionar");
?>


 

=\

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kra tem que remover o header, bom faz desta forma e copia o que mostrar na tela

 

<?php
define('_VALID', true);
define('_ADMIN', true);
require '../include/config.php';

echo '<pre>';
var_dump($_POST['approve_selected_comments'],$_POST["id"]);
echo '<br>'; 


if(isset($_POST['approve_selected_comments'])) { //botão de submit de aprovação do formulário

foreach($_POST["id"] as $registro) {
      //mysql_query("UPDATE video_comments SET aprovado=1 WHERE CID = $registro");

      echo "<br>SQL: UPDATE `video_comments` SET `aprovado` = 1 WHERE `CID` = {$registro}";

    }
} else { echo '<br>Nao entrou no foreach'; }



$redirecionar ="comentarios_all.php";
//header("Location: $redirecionar");
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi André apareceu isso na tela...

 


string(7) "Aprovar"
array(1) {
 [0]=>
 string(1) "1"
}


SQL: UPDATE `video_comments` SET `aprovado` = 1 WHERE `CID` = 1


Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo isso significa que está funcionando e entrando no laço, pois você recebeu o valor 'aprovado' e depois o valor 1 do campo ID

não vejo nada de errado no código

 

<?php
define('_VALID', true);
define('_ADMIN', true);
require '../include/config.php';

if(isset($_POST['approve_selected_comments'])) //botão de submit de aprovação do formulário
{
       foreach($_POST["id"] as $registro)
       {

               mysql_query("UPDATE video_comments SET aprovado=1 WHERE CID = $registro ") or die ("erro: ".mysql_error()); //aqui faz o update de cada registro.

       }
}

$redirecionar ="comentarios_all.php";
       header("Location: $redirecionar");
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então tirei o value"1" do meu input e pelo mens começou a dar o erro do update...

 


erro: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on' at line 1

 

Não sei mais onde possa estar errando meu código do input esta assim :

 

<input type=checkbox name="id[]">

 

e o php

 


<?php
define('_VALID', true);
define('_ADMIN', true);
require '../include/config.php';

if(isset($_POST['approve_selected_comments'])) //botão de submit de aprovação do formulário
{
       foreach($_POST["id"] as $registro)
       {

               mysql_query("UPDATE video_comments SET aprovado='1' WHERE 'CID' = $registro ") or die ("erro: ".mysql_error()); //aqui faz o update de cada registro.

       }
}



$redirecionar ="comentarios_all.php";
       header("Location: $redirecionar");
?>



Compartilhar este post


Link para o post
Compartilhar em outros sites

Para ter um name de input com colchetes significa que os inputs

estão sendo gerados. Se estão sendo gerados precisam ter um valor certo?

Se não não há lógica em existir mais de um input.

 

Se for gerado em PHP tem de ficar no mínimo assim:

 

<input type="checkbox" name="id[]" value="<?php echo $valor; ?>">

Onde $valor é o id que tem que ir em cada checkbox gerada dentro de um loop.

 

Pegou a idéia?

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu coloco o valor no input e simplesmente não retorna nem um erro como se tivesse sido executado..

o value do input no tpl dá pra ser algo tipo {$valor} não sei como direito usar php no tpl o {php} <?php $valor; ?>{/php} não funciona..

alguém sabe ?

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.