Ir para conteúdo

POWERED BY:

Arquivado

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

heeladm

Update não funciona

Recommended Posts

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

 

 

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

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

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

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

@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

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

@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

@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

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

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

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

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

@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

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 coluna
curioso que foi possivel criar a coluna e inserir valores,
mas na hora de atualizar aqui deu problema (como era esperado)
ou utilize crases

5. 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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.