anneviana 0 Denunciar post Postado Fevereiro 25, 2011 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
elitediego 0 Denunciar post Postado Fevereiro 25, 2011 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
anneviana 0 Denunciar post Postado Fevereiro 25, 2011 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
elitediego 0 Denunciar post Postado Fevereiro 25, 2011 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
welitonjose 1 Denunciar post Postado Fevereiro 25, 2011 kra eu nao entendi você tah tentando listar o checkbox ou tentando gravar o foi selecionado nela??? Compartilhar este post Link para o post Compartilhar em outros sites
anneviana 0 Denunciar post Postado Fevereiro 25, 2011 To tentando gravar no bd o que foi selecionado nela... eu tirei o id e simplesmente não executa nada... =\ Compartilhar este post Link para o post Compartilhar em outros sites
elitediego 0 Denunciar post Postado Fevereiro 25, 2011 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
André Severino 3 Denunciar post Postado Fevereiro 25, 2011 @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 0 Denunciar post Postado Fevereiro 25, 2011 @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
anneviana 0 Denunciar post Postado Fevereiro 25, 2011 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
André Severino 3 Denunciar post Postado Fevereiro 25, 2011 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
anneviana 0 Denunciar post Postado Fevereiro 25, 2011 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
André Severino 3 Denunciar post Postado Fevereiro 25, 2011 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
anneviana 0 Denunciar post Postado Fevereiro 25, 2011 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
André Severino 3 Denunciar post Postado Fevereiro 25, 2011 você tirou o 1 significa que não está passando nada para o foreach, ou seja, você nao tem o ID, o valor (value='valor') WHERE 'CID' = $registro Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Fevereiro 25, 2011 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
anneviana 0 Denunciar post Postado Fevereiro 25, 2011 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
anneviana 0 Denunciar post Postado Março 9, 2011 Resolvi meu problema, obrigada a todos que me ajudaram,depois posto como eu fiz :) Compartilhar este post Link para o post Compartilhar em outros sites