lucianosiqueirinha Postado Março 29, 2021 Denunciar Share Postado Março 29, 2021 (editado) 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 Março 29, 2021 por lucianosiqueirinha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Frank K Hosaka Postado Fevereiro 20, 2023 Denunciar Share Postado Fevereiro 20, 2023 (editado) 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! Editado Fevereiro 20, 2023 por Frank K Hosaka Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
lucianosiqueirinha
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?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.