Guh Costa 0 Denunciar post Postado Setembro 1, 2011 Boa tarde! Procurei pelos fóruns e não achei nenhuma situação semelhante para tirar minha dúvida... Meu problema é o seguinte: Tenho uma tabela montada por valores do meu banco SQL (ID, NOME e COR DA PELE), e cada linha tem um checkbox, onde irei selecionar os que eu quero alterar. Depois de selecionar e clicar no button, preciso que abra uma página para escolher a COR DA PELE (branca por exemplo) e ao salvar, altera todos checkbox que eu selecionei para cor da pele BRANCA. Agradeço des de já! Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 1, 2011 Ok, você lista todos os registros, então seleciona o checkbox para alterar os registros desejados, então altera todos esses selecionados ? <input type="checkbox" name="id[]" value="id de cada linha" /> Então você recebe um array de todos selecionados pelo POST | GET. Compartilhar este post Link para o post Compartilhar em outros sites
Guh Costa 0 Denunciar post Postado Setembro 1, 2011 Ok, você lista todos os registros, então seleciona o checkbox para alterar os registros desejados, então altera todos esses selecionados ? <input type="checkbox" name="id[]" value="id de cada linha" /> Então você recebe um array de todos selecionados pelo POST | GET. Consegui fazer tudo isso. Só travei na hora de inserir a CORDAPELE nos array que trouxe pelo POST. foreach ($_POST['id'] as $id) { echo "<input type='text' name='id[]' value='$id'><br/>"; //LISTEI TODOS SELECIONADOS } echo "<select name='codapele'> <option value='' selected>selecione</option> <option value='branco' selected>Branco</option> <option value='negro' selected>Negro</option> <option value='pardo' selected>Pardo</option>"; //SELECIONEI A COR DA PELE QUE QUERO APLICAR PARA OS CHECKBOX SELECIONADOS. $sql = "UPDATE tabela SET cordapele = $cordapele WHERE id = ??? (aqui tenho que colocar o array) "; Grato novamente! Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 1, 2011 Não amigo, você não lê todos os registros do banco de dados e imprime os dados ? você vai fazer a mesma coisa com o checkbox, vai imprimir cada um: while( $dados = mysql_fetch_array( $query ) ) { echo '<input type="checkbox" name="id[]" value="'.$dados[ "id" ].'" />'; } Então, quando você submeter o formulário, você vai fazer um implode para montar a query: <?php if( isset( $_POST[ 'id' ] ) { $SQL = sprintf( "UPDATE `tabela` SET `cordapele` = '%s' WHERE `id` IN( %s )" , $_POST[ 'cordapele' ] , implode( ',' , $_POST[ 'id' ) ); echo $SQL; } Execute dessa forma, poste o retornado. Compartilhar este post Link para o post Compartilhar em outros sites
Hudson Pereira 4 Denunciar post Postado Setembro 1, 2011 Vê se ajuda. <?php include( 'conecta.php' ); $cores = $pdo->prepare( 'SELECT * FROM cores' ); $cores->execute(); if( $_SERVER['REQUEST_METHOD'] == 'POST' ) { $resultado = $_POST['cordapele']; if( $resultado != "" ) { $escolhido = $pdo->prepare( 'UPDATE cores SET escolhido = escolhido + 1 WHERE id = ?' ); $escolhido->bindParam( 1, $resultado ); $escolhido->execute() or die('Erro ao incrementar valor na base de dados'); echo 'Ok'; }else echo 'Selecione uma cor...'; } ?> <!-- VIEW --> <form method="post"> <select name="cordapele"> <?php foreach ( $cores->fetchAll() as $cor ): ?> <option value="<?php echo $cor['id']; ?>" ><?php echo $cor['desc']; ?></option> <?php endforeach; ?> <option value="" selected="1">Selecione uma cor</option> </select> <input type="submit" value="Escolher" /> </form> Compartilhar este post Link para o post Compartilhar em outros sites
Guh Costa 0 Denunciar post Postado Setembro 1, 2011 Não precisei usar: while( $dados = mysql_fetch_array( $query ) ) { echo '<input type="checkbox" name="id[]" value="'.$dados[ "id" ].'" />'; } Funcionou certinho =D Obrigado cara! Agora está perfeito, mais só pra ver se eu entendi a lógica... Quando fiz foreach ($_POST['id'] as $id) { echo "<input type='text' name='id[]' value='$id'><br/>";} eu armazenei todas checks num vetor. E o implode neste vetor me resulta em (id1, id2, id3, id4 ...) ? Na verdade o implode lê o vetor id[] então? Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 1, 2011 Exatamente, ele vai colocar vírgula entre cada item no array. Compartilhar este post Link para o post Compartilhar em outros sites