Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com codigo PHP


lucianosiqueirinha

Pergunta

Olá  a todos os membros,  eu estou novo em php,  estou usando com Livro PHP orientado a Objetos do Pablo Dall'Oglio. Estou com problemas no codigo  não roda, 

------>codigo php<---

<?php 
if (!empty($_REQUEST['action']))
 { 
     $dsn = "host=localhost port=5432 dbname=livro user=postgres password="; 
     $conn = pg_connect($dsn); 
         if ($_REQUEST['action'] == 'edit')     
             { 
                 $id = (int) $_GET['id'];
                  $result = pg_query($conn, "SELECT * FROM pessoa WHERE id='{$id}'"); 
                  $pessoa = pg_fetch_assoc($result); 
              } 
         else if ($_REQUEST['action'] == 'save') 
             { 
                 $pessoa = $_POST; 
                     if (empty($_POST['id']))
                      { 
                          $result = pg_query($conn, "SELECT max(id) as next FROM pessoa"); 
                          $next = (int) pg_fetch_assoc($result)['next'] +1;
                           $sql = "INSERT INTO pessoa (
                                       id, 
                                       nome, 
                                       endereco,
                                       bairro,
                                       telefone, 
                                       email, 
                                       id_cidade) 
                                   VALUES ( 
                                       '{$next}', '
                                       {$pessoa['nome']}', 
                                       '{$pessoa['endereco']}', 
                                       '{$pessoa['bairro']}', 
                                       '{$pessoa['telefone']}', 
                                       '{$pessoa['email']}', 
                                       '{$pessoa['id_cidade']}'
                                        )";
                                         $result = pg_query($conn, $sql); 
                     } else 
                         { 
                             $sql = "UPDATE pessoa SET 
                             nome = '{$pessoa['nome']}', 
                             endereco = '{$pessoa['endereco']}', 
                             bairro = '{$pessoa['bairro']}', 
                             telefone = '{$pessoa['telefone']}', 
                             email = '{$pessoa['email']}', 
                             id_cidade = '{$pessoa['id_cidade']}' 
                             WHERE id = '{$pessoa['id']}'";
                          $result = pg_query($conn, $sql); 
                         } 
                         print ($result) ? 'Registro salvo com sucesso' : pg_last_error($conn); 
                     pg_close($conn);
                 }
             } 
             else 
                 { 
                     $pessoa = []; $pessoa['id'] = ''; 
                     $pessoa['nome'] = '';
                      $pessoa['endereco'] = ''; 
                      $pessoa['bairro'] = ''; 
                      $pessoa['telefone'] = ''; 
                      $pessoa['email'] = ''; 
                      $pessoa['id_cidade'] = '';
                       } 
                       require_once 'lista_combo_cidades.php'; 
                       $form = file_get_contents('Cadastro.html');  O Problema esta indicando aqui
                       $form = str_replace('{id}', $pessoa['id'], $form);
                       $form = str_replace('{nome}', $pessoa['nome'], $form); 
                       $form = str_replace('{endereco}', $pessoa['endereco'], $form);
                       $form = str_replace('{bairro}', $pessoa['bairro'], $form); 
                       $form = str_replace('{telefone}', $pessoa['telefone'], $form);
                       $form = str_replace('{email}', $pessoa['email'], $form); 
                      $form = str_replace('{id_cidade}', $pessoa['id_cidade'], $form);
                      $form = str_replace('{cidades}', lista_combo_cidades( $pessoa['id_cidade'] ), $form);
                       print $form;
?>

-> Cadastro.html<-

<html> 
    <head>     
            <meta charset="utf-8">     
                <title> Cadastro de pessoa </title>    
                 <link href="form.css" rel="stylesheet" type="text/css" media="screen" /> 
   </head>    
         <body>     
                 <form enctype="multipart/form-data" method="post" action="pessoa_form.php?action=save">         
                     <label>Código</label>     
                         <input name="id" readonly="1" type="text" value='{id}'> 
                     <label>Nome</label> 
                         <input name="nome" type="text" style="width: 50%" value="{nome}"> 
                     <label>Endereço</label> 
                         <input name="endereco" type="text"style="width: 50%" value="{endereco}"> 
                     <label>Bairro</label> 
                         <input name="bairro" type="text" style="width: 25%" value="{bairro}">
                     <label>Telefone</label>
                           <input name="telefone" type="text" style="width: 25%" value="{telefone}"> 
                     <label>Email</label>       
                         <input name="email" type="text" style="width: 25%" value="{email}"> 
                     <label>Cidade</label> 
                         <select name="id_cidade" style="width: 25%"> '{cidades}'
                              </select> 
                              <input type="submit">
                 </form>
     </body> 
</html>

--> Navegador<-

Warning: file_get_contents(Cadastro.html): Failed to open stream: No such file or directory in C:\Apache24\htdocs\pessoa_form.php on line 64

 

-> Pasta do windows onde roda localhost <-

C:\Apache24\htdocs

 

Alguém pode me ajudar?

 

 

 

Editado por lucianosiqueirinha
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Estamos em 2023, acredito que você já descobriu que os arquivos cadastro.html e pessoa_form.php devem estar no mesmo diretório. Mesmo assim, a sua lista está repleto de curiosidades, apesar de eu não ter a lista da classe que define os métodos que manipulam o banco de dados, o arquivo lista_combo_cidades.php e o form.css, eu consegui montar um pequeno código chamado astudy.php que pega os dois arquivos ao mesmo tempo.

<form enctype="multipart/form-data" method="post" action="?action=save">         
    <label>Código</label>     
    <input name="id" readonly="1" type="text" value='{id}'> 
    <label>Nome</label> 
    <input name="nome" value="{nome}"> 
    <input type="submit">
</form>
<?php
if(!isset($_POST['id'])){exit;}
$pessoa = $_POST; 
$mysqli=new mysqli("localhost","root","","astudy");
$query=$mysqli->query("UPDATE pessoa SET nome = '{$pessoa['nome']}' WHERE id = '{$pessoa['id']}'");
echo ($query) ? 'Registro salvo com sucesso' : $mysqli->error; 
echo "<p>UPDATE pessoa SET nome = '{$pessoa['nome']}' WHERE id = '{$pessoa['id']}'";

 A lista é bem pequena, mas está repleto de bobagens. Primeiro: a gente usa o <form enctype> somente para trabalhar com arquivos. Segundo: não há nenhum motivo para definir "save" na ação do <form>. Terceiro: se o objetivo do <form> é cadastrar uma nova pessoa, o campo id não deveria estar nesse formulário. Quarto, se for definir o id da pessoa manualmente o <input> deveria estar desbloqueado e não travado em readonly.

Apesar de tanto absurdo, eu testei o programa e obtive sucesso! Mas não salvou coisa alguma. Para dar certo, eu defini a chave primária da tabela pessoa como varchar(45). Mas, ele não gravou nada, pois o comando update é para atualizar uma pessoa com o id='{id}'. Quando a gente salva um novo registro, a gente usa o comando insert into e não update.

Tudo parece perda de tempo, mas eu gostei do comando

echo ($query) ? 'Registro salvo com sucesso' : $mysqli->error; 

Esse comando funciona!

 

Screenshot_1.png

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...