Jump to content
Sign in to follow this  
DougCoder

Problemas em transferir dados para outro arquivo (session / input hidd

Recommended Posts

Bom dia a todos,

MODERADORES: Desculpe pelo Título com >> Problemas << se possível editar para mim por favor !!

 

Estou desde ontem lendo posts no fórum e pesquisando no google. Sei que este é um assunto que basicamente já existe e não é nada atual. O problema é que nenhuma "solução" que encontrei, não consegui implementar. Sempre da um erro diferente. Então, vamos lá...

<div id="div-popover-edt" class="hide">
        <form class="form-horizontal" action="editar/editar_autor.php" method="POST" role="form">

                <div class="form-group">
                <label for="basic" class="col-lg-2 control-label"></label>
                    <div class="col-lg-10">
                        <select name="edt-id" class="selectpicker show-tick form-control">
                        
                    <?php 
                    $sql = "select * from autores"; 
                    $res = Connection::getInstance()->query($sql);
                      
                    while($linha=mysqli_fetch_array($res)) { ?>
                    <option value=""><?php $linha["AUT_ID"]; $id = $linha["AUT_ID"]; echo $linha["AUT_NOME"]; ?></option>
                    
                    
                    <?php $_SESSION["dados"] = $linha;  }  ?>                  
                    
                    </select>
                    </div>
                
                     
                    <label>Digite o Novo Nome do Autor: </label> <br>
                    <input type="text" name="txtnovoautor" /> <br>	
                    <input type="submit" class="btn btn-success" value="Cadastrar" />
                </div>
 
        <button type="reset" id="btn-fechar" class="btn btn-danger" data-dismiss="clickover">Fechar</button>
        </form>
    </div>

Tendo em mãos o seguinte código acima, tenho um select que puxa do banco os autores de uma biblioteca virtual, abaixo dele, possui um input text para eu inserir o novo nome do autor, ou seja, a idéia é que o autor atual do select seja o autor que eu desejo editar e abaixo será o novo nome para eu editá-lo. Em seguida puxa meu arquivo editar_autor.php:

<?php

session_start(); 

include("conexao.php");

$id2 = $_POST['dados'];
//$pega_array = $_SESSION["dados"];
//$_SESSION['id'][] = $id;
$id = $_SESSION["dados"];
//echo ("<script type='text/javascript'>alert ('$id[id2]');</script>");


if ($conn) {
   
    if (mysqli_query($conn, "UPDATE autores SET AUT_NOME='".$_POST['txtnovoautor']."' where AUT_ID='".$id."'")){
	//echo "<b> Autor cadastrado com sucesso </b>";
        echo("<script type='text/javascript'> alert('Autor Deletado com Sucesso !!!'); location.href='/portal_academico/view/main.php';</script>");

        //header("Location: /portal_academico/view/main.php");
    } else {
	echo "<b>erro de exclusão</b>";
    }
        
} else {
		echo "<b>erro de conexao</b>";
}

Não consigo passar o ID do autor de jeito nenhum... Eu tenho o cadastro 100% via post, mas o editar e delete que eu preciso passar o id, não consigo de forma alguma. O que estou fazendo de errado?

 

Pode ver que no meu editar_autor.php tem alguns comentários de testes e gambiarras que eu estava fazendo. Os erros que apresentam são de undefined index e array to string conversion. Se eu por o $id[0] ele puxa o id do último autor. Mas eu preciso que ele puxe o id do autor que eu selecionar.

Edited by DougCoder

Share this post


Link to post
Share on other sites

se entendi bem tente assim:
1.seu select:

<select name="edt-id" class="selectpicker show-tick form-control">
<option value="<?php echo $linha["AUT_ID"];?>"><?php echo $linha["NOME"];?></option>
</select>

2. na SQL da pg "editar_autor" vc precisa fornecer o id do registro
além do novo nome ou toda a coluna será alterada;
ex:

$idselecionado=$_POST['edt-id'];
$novonomeautor=$_POST['txtnovoautor'];

sql:

UPDATE autores SET AUT_NOME='$novonomeautor' where id='$idselecionado';

mas é melhor prática usar
prepared statements e "bind params" (ou bind values);
ex em PDO:

$sql = $conn->prepare("UPDATE autores SET AUT_NOME=? where id=?);
$sql->bindValue(1, $novonomeautor);
$sql->bindValue(2, $idselecionado);
$sql->execute();

+ 2 dicas:

- verifique a "action" do form (está "editar/editar_autor.php");

- cuidado com maiusculas:

 

$linha["AUT_ID"]
$id2 = $_POST['dados'];

se possivel padronize

dicas boas:
http://www.devmedia.com.br/introducao-ao-php-pdo/24973
http://www.rafaelwendel.com/2011/12/tutorial-pdo-php-data-object/
http://www.devmedia.com.br/crud-com-php-pdo/28873

  • +1 1

Share this post


Link to post
Share on other sites

se entendi bem tente assim:

1.seu select:

<select name="edt-id" class="selectpicker show-tick form-control">
<option value="<?php echo $linha["AUT_ID"];?>"><?php echo $linha["NOME"];?></option>
</select>

2. na SQL da pg "editar_autor" você precisa fornecer o id do registro

além do novo nome ou toda a coluna será alterada;

ex:

$idselecionado=$_POST['edt-id'];
$novonomeautor=$_POST['txtnovoautor'];

sql:

UPDATE autores SET AUT_NOME='$novonomeautor' where id='$idselecionado';

mas é melhor prática usar

prepared statements e "bind params" (ou bind values);

ex em PDO:

$sql = $conn->prepare("UPDATE autores SET AUT_NOME=? where id=?);
$sql->bindValue(1, $novonomeautor);
$sql->bindValue(2, $idselecionado);
$sql->execute();

+ 2 dicas:

- verifique a "action" do form (está "editar/editar_autor.php");

- cuidado com maiusculas:

 

se possivel padronize

 

dicas boas:

http://www.devmedia.com.br/introducao-ao-php-pdo/24973

http://www.rafaelwendel.com/2011/12/tutorial-pdo-php-data-object/

http://www.devmedia.com.br/crud-com-php-pdo/28873

 

BINGO !!! AMIGO,

 

Utilizei suas dicas do 1, 2 e do sql. Funcionou 100%, além de me corrigir em um erro que eu fiz devido a vários testes... O update em "where id" na verdade é where "AUT_ID". Erro besta meu... Corrigido.

 

Coloquei o echo para visualizar os parâmetros passados. Quando vi que ele passou correto, apliquei no update, funcionou ! Muito obrigado.

 

Só tem uma coisa que não entendi,

Você me disse para verificar a action do form... O que há de errado nela? Ele puxa de uma pasta "editar" o arquivo que edita o autor e assim eu tenho demais arquivos para cada edição (provavelmente irei unir em 1 só... Vou verificar isso só depois que implantar todos requisitos funcionais 100%).

 

Corrigido as maiusculas/minusculas que na verdade, foram removidas pois não foi necessário utilizar o session, apesar de ser mais seguro, segundo as pesquisas que verifiquei.

 

Vou verificar as dicas de PHP Data Object com certeza, porém infelizmente não vou poder aplicá-las agora porque tenho menos de 1 mês para finalizar a biblioteca virtual e ainda falta bastante coisa, sem contar que pelo link que você colocou, verifiquei que tem o PDO para conexão, inserção e delete também, ou seja, se eu for implementá-lo (se der tempo), terá que ser todos eles porque não faz sentido colocar só o PDO na edição e não padronizar nos demais.

 

Enfim, muito obrigado pelas dicas !!

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By Evandrorussi
      Olá pessoal,
       
      Trabalho com PHP a uns 6 anos e me deparei com um problema de session que nunca ouvi falar, pelo menos não encontrei nada pela internet desse tipo. Tenho um servidor dedicado no Google Cloud e o site tem um sistema de login via session. O problema é que a session funciona aleatoriamente, tem hora que não funciona, o cliente troca de tela e o servidor perde a session e pede pra logar novamente, isso não acontece com todos usuários, comigo por exemplo não acontece.
      O cara que trabalha comigo não ocorria esse problema mas agora começou a acontecer e ele reparou que com guia anônima o problema não ocorre.
       
      Caso alguém pergunte, session_start() está iniciando em todas as páginas.
       
      Abraço
       
       
    • By darkside88
      Esse é meu código porém não está exibindo dentro dos inputs as informações recuperadas da página EDITAR nos campos! <?php //ini_set('display_errors', 0); include('conexao/connection.php'); session_start(); $cli_codigo = intval($_GET['usuario']); if(isset($_POST['confirma'])){     //Registrar Dados     if(!isset($_SESSION))         session_start();       foreach($_POST as $chave=>$valor)         $_SESSION[$chave] = $con->real_escape_string($valor);       //Validar     if (strlen($_SESSION['nome']) == 0)     $erro[] = "Preencha o campo Nome";            if (strlen($_SESSION['wpp']) == 0)     $erro[] = "Preencha o campo WhatsApp";       if (strtotime($_SESSION['dt1']) > strtotime($_SESSION['dt2']) || strtotime($_SESSION['dt1']) == strtotime($_SESSION['dt2']))     $erro[] = "A Data de Criação no IPTV deve ser menor que a Data de Vencimento no IPTV ou não podem ser iguais";           //Inserir       if(count($erro) == 0){         $sql_code = "UPDATE cadastrocliente set             nomecli = '$_SESSION[nome]',             email = '$_SESSION',             wpp = '$_SESSION[wpp]',             srv = '$_SESSION[srv]',              srv = '$_SESSION[dt1]',                         dataVI = '$_SESSION[dt2]',             app = '$_SESSION[app]'             WHERE nomecli = '$cli_codigo'";         $confirma = $con->query($sql_code) or die($con->error);         if($confirma){             unset(                 $_SESSION[nome],                 $_SESSION,                 $_SESSION[wpp],                 $_SESSION[srv],                 $_SESSION[dt1],                 $_SESSION[dt2],                 $_SESSION[app]                          );                         header("Location: index.php?p=listarcliente");         }else{             $erro[] = $confirma;         }     }else{         $sql_code = "SELECT * FROM cadastrocliente WHERE id_cliente= '$cli_codigo'";         $sql_query = $con->query($sql_code) or die($con->error);         $linha = $sql_query->fetch_assoc();           $_SESSION[nome] = $linha['nomeCli'];         $_SESSION = $linha['email'];         $_SESSION[wpp] = $linha['wpp'];         $_SESSION[srv] = $linha['srv'];         $_SESSION[srv] = $linha['dt1'];         $_SESSION[dt2] = $linha['dt2'];         $_SESSION[app]  = $linha['app'];     } }   ?> <?php   if (count($erro) > 0) {     echo "<div class='alert alert-danger'>";     foreach ($erro as $valor)         echo "$valor <br>";          echo "</div>";}  ?> <form class="container-fluid" action="index.php?p=editar&usuario=<?php echo $cli_codigo?>" method="POST">     <label for="nome">Nome do Cliente</label>     <input type="text" name="nome" value="<?php echo $_SESSION[nome]?>" class="form-control" placeholder="Nome Completo do Cliente">     <label for="email">Email</label>     <input type="email" name="email" value="<?php echo $_SESSION?>" class="form-control" placeholder="nome@exemplo.com">     <label for="mensagem">WhatsApp</label>     <input type="text" name="wpp" value="<?php echo $_SESSION[wpp]?>" class="form-control" placeholder="Digite o seu Whatsapp (DD) 9 XXXX-XXXX"         id="celular" name="mensagem">     <script type="text/javascript">     $("#telefone,#celular").mask("(00) 0 0000-0000");     </script>     <label for="srv">Servidor do Cliente</label>     <input type="text" name="srv" value="<?php echo $_SESSION[wpp]?>" class="form-control" placeholder="Servidor do Cliente">     <label for="dt1">Data de Criação no IPTV</label>     <input type="date" value="<?php echo $_SESSION[dt1]?>" data- provide="datepicker" name="dt1" class="form-control">     <label for="dt2">Data de Vencimento no IPTV</label>     <input type="date" name="dt2" value="<?php echo $_SESSION[dt2]?>" class="form-control">     <label for="app">App doCliente</label>     <input type="text" name="app" value="<?php echo $_SESSION[app]?>" class="form-control" placeholder="App do Cliente">     <input type="submit" name="confirma" class="form-control btn btn-dark mt-4 mb-4 " value="Cadastrar">   </form>
    • By fabina
      Ola tenho um questionario feito  em php  guardo o valor das respostas no banco   e depois    tem um resultado por cada area  que ele respondeu ate ai responde  super bem mais quando  duas pessoas começam a fazer  ele  perde o valor da session e nao  exibe o valor para o meu usuario ,ou as vezes troca o nome do usuario x para y 
    • By Redschenko
      Boa tarde.

      Tenho um sistema onde o usuário faz login e grava a sessão
      $_SESSION['LOGADO'] = true; Nesta página com acesso restrito verifico se o usuário está logado. Caso não, redireciono para página de login.
       
      if(!isset ($_SESSION['LOGADO']) == true) { header("Location:../../index.php?t=d&m=4"); exit(); } Isto estava funcionando corretamente, porém após passar a utilizar https, na página com acesso restrito a verificação ($_SESSION['LOGADO'] == true) está sempre redirecionando para a página de login.
      Alguém sabe se há alguma particularidade para casos onde seja HTTPS?
       
      Agradeço a atenção
      Rodrigo de Oliveira
    • By brunoogm
      Pessoal tenho o seguinte codigo:
       
      <!DOCTYPE html>
      <html lang="pt-br">
          <head>
              <meta charset="utf-8">
              <meta http-equiv="X-UA-Compatible" content="IE=edge">
              <meta name="viewport" content="width=device-width, initial-scale=1">
              <title>KADAM - Menu Digital</title>
              <link rel="icon" href="../imagens/img.png" type="image.png" />
              <link href="../css/bootstrap.min.css" rel="stylesheet">
              <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
              <link rel='stylesheet' href='https://use.fontawesome.com/releases/v5.7.0/css/all.css' integrity='sha384-lZN37f5QGtY3VHgisS14W3ExzMWZxybE1SJSEsQp9S+oqd12jhcu+A56Ebc1zFSJ' crossorigin='anonymous'>
              <script src="../js/bootstrap.min.js"></script>
              
              <script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
              <script src="sweetalert2.all.min.js"></script>
              <script src="https://cdn.jsdelivr.net/npm/promise-polyfill"></script>
          </head>
          <body>
              <div class="container theme-showcase" role="main">

      <?php
      session_start();
      include_once("php/conexao.php");

      $idPessoa = $_SESSION['id_pessoa'];
      $id_cliente = $_SESSION['id_user']; 
      $cont = $_SESSION['cont'];
       
      echo "ID cliente: ".$id_cliente."<br>";
      echo "Cont: ".$cont."<br>";
       
      $endereco = filter_input(INPUT_POST, 'endereco');
      $total = filter_input(INPUT_POST, 'Total');
      $metodopag = filter_input(INPUT_POST, 'pagamento');
      $troco = filter_input(INPUT_POST, 'troco');
      $cpfnota = filter_input(INPUT_POST, 'cpfnota');
      $query= "Select * from enderecocliente WHERE CodigoEndereco = $endereco";
      $resulta = mysqli_query($conectar, $query);
      $resultado = mysqli_fetch_array($resulta);

      //echo "Cod Endereco: ".$endereco."<br>";
      //echo "Nome Cidade: ".$resultado['NomeCidade']."<br>";
      //echo "Endereco: ".$resultado['Endereco']."<br>";
      //echo "Cep: ".$resultado['CEP']."<br>";
      //echo "numero: ".$resultado['Numero']."<br>";
      //echo "Cod Endereco: ".$resultado['Bairro']."<br>";
      //echo "Cod Endereco: ".$resultado['Estado']."<br>";
      //echo "Cod Endereco: ".$metodopag."<br>";
      //echo "Total: ".$total."<br>";

      $query ="UPDATE comanda SET ValorTotal= '$total', CodigoEndereco= $resultado[CodigoEndereco], CodigoMetodoPag = $metodopag, CodigoSituacao = '3' WHERE CodigoComanda = $cont";
      $resultado = @mysqli_query($conectar, $query);
      $query2 ="INSERT INTO pagamento  (CodigoComanda, CpfNota, CodigoMetodoPag, Troco, ValorTotal) VALUES ('$cont', '$cpfnota', '$metodopag', '$troco', '$total')";
      $resultado2 = @mysqli_query($conectar, $query2);
      $_SESSION['cont'] = 0;
      if (mysqli_affected_rows($conectar)) {
              
      ?>
      <script>
          swal({
              
              closeOnEsc: false,
              closeOnClickOutside: false,
              title: "Sucesso!",
              text: "Parabéns! Pedido enviado com sucesso!",
              icon: "success",
              button: "Ok",
                  }).then(function(){   
                      window.location.href = "../carrinho.php"; 
                      });
      </script>
                  
                  <?php } else { ?>
      <script>
          swal({
              
              closeOnEsc: false,
              closeOnClickOutside: false,
              title: "Erro!",
              text: "Ops! Seu pedido não foi enviado!",
              icon: "error",
              button: "Ok",
                  }).then(function(){   
                      window.location.href = "../carrinho.php"; 
                      });
      </script>
      <?php } ?>
       
       
      Testando em localhost esse código funciona normalmente onde os valores das sessions estão sempre disponíveis,
      porem agora que coloquei o site no ar essas sessões não estão mais apresentando valores, e é somente nessa pagina que isso acontece
      nas outras paginas elas apresentam seus valores corretamente...
       
      Alguém tem alguma sugestão, do que poderia ser ?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.