heeladm 0 Denunciar post Postado Outubro 17, 2014 Olá estou com um erro, na verdade não é bem um erro, porque já reli meu código fonte umas 30 mil vezes e estou a 2 dias tentando solucionar e hoje apelei para os universitários . Bom vou explicar melhor oque acontece, estou fazendo uma área administrativa, nela tenho um arquivo chamado setup.php , ele fica incumbido de fazer as configurações do site, tais com titulo, slogan, email preferencia, telefone pra contato. Esse arquivos consulta oque tem no banco de dados lista em um INPUT que já esta preparado para receber os novos dados e inclui-los no banco de dados, mais ele não esta fazendo esse processo . Vou postar o código fonte de toda a página setup.php , já aviso que não esta totalmente orientado a objetos, pois oque estou fazendo é para aprender então a partir desse desenvolvimento pretendo elaborar minhas técnicas de lógica de programação . Código Fonte da Página : <? ini_set( 'display_errors', true ); error_reporting( E_ALL ); include "modules/class/logs.class.php"; if ( isset( $_GET['action'] ) && $_GET['action'] == 'atualiza' ) { $setup_id = $_GET['id']; $setup_titulo = $_POST['titulo']; $setup_slogan = $_POST['slogan']; $setup_email = $_POST['email']; $setup_contato = $_POST['contato']; $setup_update = $_POST['update']; $cond = " set titulo = '$setup_titulo', slogan = '$setup_slogan', email = '$setup_email', contato = '$setup_contato', update = '$setup_update'"; $db->query( "update op_setup $cond where id = $setup_id" ); @header( 'Location: index.php?pag=setup&success' ); } if ( isset( $_GET['success'] ) ) { echo "<script>window.onload = function(){notify('<h1>Dados Atualizados</h1>')}</script>"; } if ( isset( $_GET['error'] ) ) { echo "<script>window.onload = function(){notify('<h1>Informe todos os dados!</h1>')}</script>"; } ?> <h1>Área de Configurações do Site</h1> <? if ( isset( $_GET['edit'] ) && !empty( $_GET['edit'] ) ){ $id = $_GET['edit']; $db->query( "select * from op_setup where id = $id" )->fetchAll(); $u = ( object ) $db->data[0]; ?> <div id="home" style="min-height: 550px;"> <p> </p> <div class="grid_6"> <p class="message warning">Os campos marcados com (*) são de preenchimento obrigatório!</p> <form method="post" class="form" onsubmit="return valida()" action="index.php?pag=setup&action=atualiza&id=<?= $u->id ?>"> <p class="one-line-input grey-bg with-padding"> <span class="relative"> <label for="titulo">Titulo </label> <input type="text" name="titulo" size="50" autocomplete="off" value="<?= $u->titulo ?>"> <p class="one-line-input grey-bg with-padding"> <span class="relative"> <label for="slogan" class="">Slogan</label> <input type="text" name="slogan" size="50" autocomplete="off" value="<?= $u->slogan ?>"> <p class="one-line-input grey-bg with-padding"> <span class="relative"> <label for="email" class="">E-mail</label> <input type="text" name="email" size="50" autocomplete="off" value="<?= $u->email ?>"> <p class="one-line-input grey-bg with-padding"> <span class="relative"> <label for="contato" class="">Contato</label> <input type="text" name="contato" size="50" autocomplete="off" value="<?= $u->contato ?>"> <p class="one-line-input grey-bg with-padding"> <span class="relative"> <label for="session" class="">Session</label> <input type="text" name="session" size="50" disabled="disabled" value="<?= $u->session ?>" /> <p class="one-line-input grey-bg with-padding"> <span class="relative"> <label for="udpate" class="">Update Key</label> <input type="text" name="update" size="50" autocomplete="off" value="<?= $u->update ?>"> <p> <button>Atualizar Informações</button> </p> </form> </div> <p> </p> </div> <? }else{ $db->query( "select * from op_setup order by id asc" )->fetchAll(); ?> <table class="table w-all" id="tbl_list_serv" style="width: 100%" cellspacing="0"> <thead> <tr> <th width="171">Titulo</th> <th width="154">Slogan</th> <th width="116">E-mail</th> <th width="113">Contato</th> <th width="93">Session</th> <th width="79">Update Key</th> <th width="11"> </th> </tr> </thead> <tbody> <?php if ( $db->rows >= 1 ) { foreach ( $db->data as $op_setup ) { $u = ( object ) $op_setup; echo "<tr>"; echo "<td>$u->titulo</td>"; echo "<td>$u->slogan</td>"; echo "<td>$u->email</td>"; echo "<td>$u->contato</td>"; echo "<td>$u->session</td>"; echo "<td>$u->update</td>"; echo " <td> "; echo "<a class=\"with-tip edit\" title=\"editar usuário\" id=\"$u->id\" href=\"index.php?pag=setup&edit=$u->id\">"; echo "<img src=\"media/imgs/pencil.png\" width=\"16\" height=\"16\">"; echo "</a> "; echo "</td>"; echo "</tr>"; } } } ?> <tfoot> <tr> <th> </th> <th> </th> <th> </th> <th> </th> <th> </th> <th> </th> <th> </th> </tr> </tfoot> </table> </div> <p> </p> </div> <p> </p> Esta ai, espero que alguém possa me ajuda, desde já agradeço a todos pela atenção, e muito obrigado . Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Outubro 17, 2014 Esse arquivos consulta oque tem no banco de dados , lista em um INPUT que já esta preparado para receber os novos dados e inclui-los no banco de dados, mais ele não esta fazendo esse processo . Qual das três ações não está acontecendo? Compartilhar este post Link para o post Compartilhar em outros sites
heeladm 0 Denunciar post Postado Outubro 17, 2014 Tá no titulo do tópico *-*, mais mesmo assim eu respondo pra você é o UPDATE cara. Tipo sei que não ta errado a função ( eu acho, não é possível que eu tenha errado 999 vezes), mais não faz o update no banco de dados nem a pau, to 2 dias sem dormi , juro cara 2 dias sem dormi mesmo terminar isso . Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Outubro 17, 2014 Essa linha... $db->query( "update op_setup $cond where id = $setup_id" ); retorna algum erro?? Você é redirecionado pra página de sucesso mesmo sem atualizar o banco? Você já imprimiu na tela a consulta pra ver se ela está sendo montada corretamente? echo "update op_setup $cond where id = $setup_id"; Em todo o código informado, ficou impossível descobrir como [inline]$db[/inline] se comporta. Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Outubro 17, 2014 1 chute rápido: tente assim: "update op_setup '$cond' where id = $setup_id"; Compartilhar este post Link para o post Compartilhar em outros sites
heeladm 0 Denunciar post Postado Outubro 17, 2014 @Evandro Oliveira, ele retorna todos valores como o numera 1 update op_setup ' set titulo = '1', slogan = '1', email = '1', contato = '1', update = '1' ' where id = 1 não puxa os valores a variável $cond , e mesmo assim retorna para a página de sucesso . @Fernando C , já tentei esse método, persiste o erro . Compartilhar este post Link para o post Compartilhar em outros sites
Khwesten Heiner 9 Denunciar post Postado Outubro 18, 2014 Parceiro, esse teu $id aew, recebe o $_GET['edit'], mesmo? Não seria um $_GET['id']? <h1>Área de Configurações do Site</h1> <? if ( isset( $_GET['edit'] ) && !empty( $_GET['edit'] ) ){ $id = $_GET['edit']; $db->query( "select * from op_setup where id = $id" )->fetchAll(); $u = ( object ) $db->data[0]; ?> Compartilhar este post Link para o post Compartilhar em outros sites
heeladm 0 Denunciar post Postado Outubro 18, 2014 @Khwesten Heiner isso esta correto, é justamente dessa forma . Compartilhar este post Link para o post Compartilhar em outros sites
Khwesten Heiner 9 Denunciar post Postado Outubro 18, 2014 Heeladm não aparece os valores referentes a consulta do BD naqueles echo <td>, é? O que aparece, no lugar do que deveria? Compartilhar este post Link para o post Compartilhar em outros sites
heeladm 0 Denunciar post Postado Outubro 18, 2014 @Khweten Heiner aqueles atributos apena pucha os valores da tabela e lista eles para visualização com um botão de editar. O Problema central é o UPDATE, o resto tudo funciona . Compartilhar este post Link para o post Compartilhar em outros sites
Khwesten Heiner 9 Denunciar post Postado Outubro 18, 2014 Põe o $setup_id dentro de aspas simples, na query... Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Outubro 20, 2014 @Evandro Oliveira, ele retorna todos valores como o numera 1 update op_setup ' set titulo = '1', slogan = '1', email = '1', contato = '1', update = '1' ' where id = 1 não puxa os valores a variável $cond , e mesmo assim retorna para a página de sucesso . Por algum motivo está sendo adicionada uma aspa antes da condição e outra depois dela, repare antes do 'where' Compartilhar este post Link para o post Compartilhar em outros sites
heeladm 0 Denunciar post Postado Outubro 21, 2014 Então até agora agradeço a todos que tentaram ajudar, e quero dizer que ainda não consegui solucionar o problema, mais vou tentar ser mais especifico . Então código PHP do UPDATE : <? if ( isset( $_GET['action'] ) && $_GET['action'] == 'atualiza' ) { if ( isset( $_POST['titulo']) && !empty( $_POST['titulo'] ) ) { $setup_titulo = $_POST['titulo']; $setup_slogan = $_POST['slogan']; $setup_email = $_POST['email']; $setup_contato = $_POST['contato']; $setup_update = $_POST['update']; $cond = "SET titulo = '$setup_titulo', slogan = '$setup_slogan', email = '$setup_email', contato = '$setup_contato', update = '$setup_update'"; $db->query( "UPDATE op_setup $cond WHERE id = '$id'" ); @header( 'Location: index.php?pag=setup&success' ); } } if ( isset( $_GET['success'] ) ) { echo "<script>window.onload = function(){notify('<h1>Dados Atualizados</h1>')}</script>"; } if ( isset( $_GET['error'] ) ) { echo "<script>window.onload = function(){notify('<h1>Informe todos os dados!</h1>')}</script>"; } ?> Bom sei que a coleta de dados está funcionando, porque testei e dei um ECHO na variável $db->query , e ela retorno os dados digitados no inputs, então o Problema só pode estar no Banco de Dados, não é nome de tabelas porque já verifiquei todos. Bom criei a tabela é inseri os valores manualmente (valores DEFAULT) que são CREATE TABLE `op_setup` ( `id` int(1) NOT NULL, `titulo` varchar(100) NOT NULL, `slogan` varchar(100) NOT NULL, `email` varchar(100) NOT NULL, `contato` varchar(100) NOT NULL, `session` varchar(100) NOT NULL, `update` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `op_setup` VALUES (1, 'Meu CMS v2.0', 'CMS Facil', 'contato@meudominio.com.br', '(00) 0000-0000', 'A4S5F47R8F5D6h', '0x000A546'); Pode haver algum problema de não estar fazendo o update por conta que inseri os valores dessa forma ? se não me engano já vi isso em um fórum uma vez . Não sei se pode divulgar email, skype , então caso alguém tenha um interesse maior em ajudar envie um MP que envio algum dos meus contato, desde já agradeço a Todos vocês . Compartilhar este post Link para o post Compartilhar em outros sites
Marcos_imasters 288 Denunciar post Postado Outubro 21, 2014 $id ta pegando o valor onde? Compartilhar este post Link para o post Compartilhar em outros sites
heeladm 0 Denunciar post Postado Outubro 21, 2014 do Banco, PADRÃO 1, até porque só tem 1 ID mesmo . Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Medina 17 Denunciar post Postado Outubro 21, 2014 Fala aí, heeladm. Como vai? Veja só, você já tentou executar essa query diretamente na administração do banco, para verificar se ela funciona, ou se retorna alguma mensagem de erro? Coloca uma exceção de erro nesse código e testa de novo. Tenta executar direto pelo banco, depois via código. Se funcionar, converte os valores para variável. Eventualmente você vai pegar o que falta. Boa sorte! Compartilhar este post Link para o post Compartilhar em outros sites
heeladm 0 Denunciar post Postado Outubro 21, 2014 Como assim @Lucas Medina , viajei agora . Como assim @Lucas Medina , não entendi muito bem oque você quis dizer, pode fazer uma representação por favor ? Compartilhar este post Link para o post Compartilhar em outros sites
heeladm 0 Denunciar post Postado Outubro 22, 2014 Fala aí, heeladm. Como vai? Veja só, você já tentou executar essa query diretamente na administração do banco, para verificar se ela funciona, ou se retorna alguma mensagem de erro? Coloca uma exceção de erro nesse código e testa de novo. Tenta executar direto pelo banco, depois via código. Se funcionar, converte os valores para variável. Eventualmente você vai pegar o que falta. Boa sorte! Como assim @Lucas Medina , viajei agora . Como assim @Lucas Medina , não entendi muito bem oque você quis dizer, pode fazer uma representação por favor ? Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Medina 17 Denunciar post Postado Outubro 23, 2014 @heeladm Tenta usar algum gerenciador, ou administração de banco MySQL, como o phpMyAdmin. Lá tem uma seção de SQL onde você pode executar a query manualmente. Veja se consegue executar a query manualmente. Após isso, veja se consegue fazer a query corretamente digitada pelo PHP (digite os valores exatos na query, somente para testar). Aí por último, você converte esses valores para as variáveis (que é o que você está fazendo no momento), e tenta realizar novamente. Em um desses passos, o erro vai ocorrer. Se estiver na query, o erro vai acontecer em um dos dois primeiros passos; se o erro for no valor das variáveis, use um snippet pra depurar as variáveis que você usa: echo "<pre>"; var_dump($_GET, $kind); echo "</pre>"; Acho que a partir disso, você vai encontrar o problema, e poderá corrigi-lo. Abraços. ;) Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Outubro 26, 2014 olha.,. se ainda não resolveu, algumas sugestões:1. utilize a tag de abertura completa: <?php 2. verifique a conexão;3. a sql tem umas aspas simples erradas (v. post #2);4. update é palavra reservada; troque o nome da colunacurioso que foi possivel criar a coluna e inserir valores,mas na hora de atualizar aqui deu problema (como era esperado)ou utilize crases5. de um echo na variavel id;6. suas colunas estão como "não nulas" e vc não está passando o valor da coluna "session";verifique..7. crie uma nova pg em branco e tente esse código simples com conexão PDO(onde tem tres XXX adapte, claro): <?php $db = new PDO('mysql:host=XXX;dbname=XXX', 'XXX', 'XXX'); $atualizar=$_POST['action']; echo $atualizar; if(isset($atualizar) && $_POST['action'] == 'atualiza') { if (isset($_POST['titulo']) && !empty($_POST['titulo'])) { $setup_titulo = $_POST['titulo']; $setup_slogan = $_POST['slogan']; $setup_email = $_POST['email']; $setup_contato = $_POST['contato']; $setup_session = $_POST['session']; $setup_update = $_POST['update']; $cond = "SET titulo = '$setup_titulo', slogan = '$setup_slogan', email = '$setup_email', contato = '$setup_contato', session= '$setup_session', `update` = '$setup_update' "; $db->query("UPDATE op_setup $cond WHERE id = 1"); } } ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>teste imasters</title> </head> <body> <form id="form1" name="form1" method="post" action=""> <label>titulo <input name="titulo" type="text" id="titulo" /> </label> <br /> <label>slogan <input name="slogan" type="text" id="slogan" /> </label> <br /> <label>email <input name="email" type="text" id="email" /> </label> <br /> <label>contato <input name="contato" type="text" id="contato" /> </label> <br> <label>session <input name="session" type="text" id="session"> </label> <br /> <label>update <input name="update" type="text" id="update" /> </label> <br /> <label> <input name="action" type="submit" id="action" value="atualiza" /> </label> </form> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites