Boa tarde, eu estou a tentar fazer update de texto que tenho na base de dados mas apenas consigo editar 3 campos da base de dados... com esse código funciona , no entanto quando adiciono mais 2 campos para editar deixa tudo de funcionar e não edita nada... Este é o código que funciona com 3 campos
<!DOCTYPE html>
<?php
require_once('config.php');
?>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Exemplo 1 - BD</title>
<style>
body {font-size: 16px; font-family: sans-serif;}
</style>
<script>
function fazOperacao(operacao,id) {
window.location.href = 'consulta.php?op=' + operacao + '&id=' + id;
}
</script>
</head>
<body>
<h1>Os meus contactos</h1>
<a href="index.php">Voltar</a>
<?php
// orientada a objetos
$ligacao = new mysqli($hostdb,$userdb,$passdb,$namedb);
// sai do script se houver erro
if ($ligacao->connect_error) {
die ("erro de ligação");
}
// ----------------------------------------------------------
// Resolução de problemas com codificação de carateres
// ----------------------------------------------------------
// Para verificação de codificação ativa
// echo ("Codificação atual: " . $ligacao->character_set_name());
// ----------------------------------------------------------
// Alteração do charset
$ligacao->set_charset("utf8");
// ----------------------------------------------------------
// $_GET e $_POST são "superglobals": estão sempre acessíveis na página, independentemente do scope
// (ver detalhe de cada uma abaixo)
// verificação da existência do parâmetro 'op' na Querystring
// caso exista significa que foi dada ordem para 'Apagar' ou 'Editar'
//
// $_GET representa um array de variáveis enviadas para uma página PHP através de parâmetros no URL.
if (isset($_GET['op'])) {
$id_contato = $_GET['id'];
if ($_GET['op'] == 'delete') {
// ----------------------------------------------------------
// ELIMINAR um registo
// ----------------------------------------------------------
$query = "DELETE FROM contactos WHERE id_contacto = " . $id_contato;
$resultado = $ligacao->query($query);
} elseif ($_GET['op'] == 'update') {
// ----------------------------------------------------------
// SELEÇÃO apenas de um registo (conforme o escolhido na listagem)
// para preenchimento do formulário de edição
// ----------------------------------------------------------
$query = "SELECT * FROM contactos WHERE id_contacto = " . $id_contato;
$resultado = $ligacao->query($query);
if ($registo = $resultado->fetch_object()) {
echo '<form method="post" action="consulta.php">';
echo '<input type="hidden" name="id" value="'.$registo -> id_contacto.'" ></div>';
echo '<div>Quem <input type="text" name="quem" value="'.$registo -> quem.'" ></div>';
echo '<div>Proposito <input type="text" name="proposito" value="'.$registo -> proposito.'" ></div>';
echo '<div>creche <input type="text" name="creche" value="'.$registo -> creche.'" ></div>';
echo '<input type="submit" value="Gravar">';
echo '</form>';
}
}
}
// verificação da existência do parâmetro 'id' passado por HTTP POST.
// Este envio apenas acontece, nesta página, para o caso do envio dos dados para atualização na BD,
// ou seja, significa que estamos a enviar dados para atualização de um registo específico.
//
// $_POST representa um array de variáveis enviadas para uma página PHP através do método HTTP POST.
elseif (isset($_POST['id'])) {
$id_contato = $_POST['id'];
$novo_quem = $_POST['quem'];
$novo_proposito = $_POST['proposito'];
$novo_creche = $_POST['creche'];
$query = "UPDATE contactos SET ";
$query .= "quem = '" . $novo_quem . "',";
$query .= "proposito = '" . $novo_proposito . "',";
$query .= "creche = '" . $novo_creche . "'";
$query .= " WHERE id_contacto = " . $id_contato;
// echo $query;
$resultado = $ligacao->query($query);
echo "<div>Dados atualizados</div>";
}
$query = "SELECT * FROM contactos";
$resultado = $ligacao->query($query);
while ($registo = $resultado->fetch_object()) {
echo "<ul>";
echo "<li>" . $registo -> quem . "</li>";
echo "<li>" . $registo -> proposito . "</li>";
echo "<li>" . $registo -> creche . "</li>";
echo "</ul>";
?>
<input type="button" value="Apagar" onClick="javascript: fazOperacao('delete',<?php echo $registo -> id_contacto;?>);">
<input type="button" value="Editar" onClick="javascript: fazOperacao('update',<?php echo $registo -> id_contacto;?>);">
<?php
}
?>
</body>
</html>
Agora neste código adicionei 2 campos e deixa de editar :s
<!DOCTYPE html>
<?php
require_once('config.php');
?>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Exemplo 1 - BD</title>
<style>
body {font-size: 16px; font-family: sans-serif;}
</style>
<script>
function fazOperacao(operacao,id) {
window.location.href = 'consulta.php?op=' + operacao + '&id=' + id;
}
</script>
</head>
<body>
<h1>Os meus contactos</h1>
<a href="index.php">Voltar</a>
<?php
// orientada a objetos
$ligacao = new mysqli($hostdb,$userdb,$passdb,$namedb);
// sai do script se houver erro
if ($ligacao->connect_error) {
die ("erro de ligação");
}
// ----------------------------------------------------------
// Resolução de problemas com codificação de carateres
// ----------------------------------------------------------
// Para verificação de codificação ativa
// echo ("Codificação atual: " . $ligacao->character_set_name());
// ----------------------------------------------------------
// Alteração do charset
$ligacao->set_charset("utf8");
// ----------------------------------------------------------
// $_GET e $_POST são "superglobals": estão sempre acessíveis na página, independentemente do scope
// (ver detalhe de cada uma abaixo)
// verificação da existência do parâmetro 'op' na Querystring
// caso exista significa que foi dada ordem para 'Apagar' ou 'Editar'
//
// $_GET representa um array de variáveis enviadas para uma página PHP através de parâmetros no URL.
if (isset($_GET['op'])) {
$id_contato = $_GET['id'];
if ($_GET['op'] == 'delete') {
// ----------------------------------------------------------
// ELIMINAR um registo
// ----------------------------------------------------------
$query = "DELETE FROM contactos WHERE id_contacto = " . $id_contato;
$resultado = $ligacao->query($query);
} elseif ($_GET['op'] == 'update') {
// ----------------------------------------------------------
// SELEÇÃO apenas de um registo (conforme o escolhido na listagem)
// para preenchimento do formulário de edição
// ----------------------------------------------------------
$query = "SELECT * FROM contactos WHERE id_contacto = " . $id_contato;
$resultado = $ligacao->query($query);
if ($registo = $resultado->fetch_object()) {
echo '<form method="post" action="consulta.php">';
echo '<input type="hidden" name="id" value="'.$registo -> id_contacto.'" ></div>';
echo '<div>Quem <input type="text" name="quem" value="'.$registo -> quem.'" ></div>';
echo '<div>Proposito <input type="text" name="proposito" value="'.$registo -> proposito.'" ></div>';
echo '<div>Como <input type="text" name="como" value="'.$registo -> como.'" ></div>';
echo '<div>creche <input type="text" name="creche" value="'.$registo -> creche.'" ></div>';
echo '<div>Encarregado <input type="text" name="encarregado" value="'.$registo -> encarregado.'" ></div>';
echo '<input type="submit" value="Gravar">';
echo '</form>';
}
}
}
// verificação da existência do parâmetro 'id' passado por HTTP POST.
// Este envio apenas acontece, nesta página, para o caso do envio dos dados para atualização na BD,
// ou seja, significa que estamos a enviar dados para atualização de um registo específico.
//
// $_POST representa um array de variáveis enviadas para uma página PHP através do método HTTP POST.
elseif (isset($_POST['id'])) {
$id_contato = $_POST['id'];
$novo_quem = $_POST['quem'];
$novo_proposito = $_POST['proposito'];
$novo_como = $_POST['como'];
$novo_creche = $_POST['creche'];
$novo_encarregado = $_POST['encarregado'];
$query = "UPDATE contactos SET ";
$query .= "quem = '" . $novo_quem . "',";
$query .= "proposito = '" . $novo_proposito . "',";
$query .= "como = '" . $novo_como . "'";
$query .= "creche = '" . $novo_creche . "'";
$query .= "encarregado = '" . $novo_encarregado . "'";
$query .= " WHERE id_contacto = " . $id_contato;
// echo $query;
$resultado = $ligacao->query($query);
echo "<div>Dados atualizados</div>";
}
$query = "SELECT * FROM contactos";
$resultado = $ligacao->query($query);
while ($registo = $resultado->fetch_object()) {
echo "<ul>";
echo "<li>" . $registo -> quem . "</li>";
echo "<li>" . $registo -> proposito . "</li>";
echo "<li>" . $registo -> como . "</li>";
echo "<li>" . $registo -> creche . "</li>";
echo "<li>" . $registo -> encarregado . "</li>";
echo "</ul>";
?>
<input type="button" value="Apagar" onClick="javascript: fazOperacao('delete',<?php echo $registo -> id_contacto;?>);">
<input type="button" value="Editar" onClick="javascript: fazOperacao('update',<?php echo $registo -> id_contacto;?>);">
<?php
}
?>
</body>
</html>
Alguém sabe o erro? obrigado.