Joao Domingues Posted September 30, 2016 at 03:54 PM Report #599253 Posted September 30, 2016 at 03:54 PM Boa tarde, tenho uma página (Conta.php) que só aparece no site se o utilizador entrar na conta que criou e outra página (Index.php) que o utilizador preenche um formulário e os dados que ele introduziu nesse formulário vão aparecer na página da Conta.php mas o meu problema é que ele esta a guardar os dados do formulário do Index.php em todas as contas. Queria que só guardasse no utilizador que a preencheu e não em todos os utilizadores.
M6 Posted October 1, 2016 at 11:06 AM Report #599265 Posted October 1, 2016 at 11:06 AM João, tens de colocar as tuas questões de forma clara e concreta. O titulo é um problema com base de dados, depois só descreves (e mal) a interação do teu site em páginas php e por fim ninguém consegue sequer adivinhar qual o problema porque dizes que querias que só guardasse o utilizador que preencheu (o que raio isso queira dizer)... Tens de ser claro e concreto, caso contrário ninguém vai conseguir perceber muito menos ajudar. Explica lá isso direito, com informação útil e código que possa ajuda a compreender o teu problema. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Joao Domingues Posted October 1, 2016 at 10:32 PM Author Report #599297 Posted October 1, 2016 at 10:32 PM Peço desculpa mas é difícil de explicar o meu problema porque sou novato neste tipo de coisas. Bem eu tenho como minha página principal e inicial o index.php que contêm um formulário do imc (altura, peso e o resultado do mesmo). O utilizador para preencher o formulário tem que se inscrever no site, de seguida entrar na conta criada para poder preencher o formulário de imc. Agora o meu problema é o seguinte, vamos ver se me consigo explicar direito, esses dados do formulário do imc na pagina index.php esta a guardar em todos os utilizadores e eu só quero que guarde no utilizador que a prencheu. Fiz me entender ou esta difícil de perceber? Tenho um pouco dificuldade em expressar, desculpa lá.
M6 Posted October 6, 2016 at 08:18 PM Report #599438 Posted October 6, 2016 at 08:18 PM Acho que já percebi. A primeira coisa a fazeres é criares uma páginas de login/registo e outra para o formulário, caso contrário vais ter uma confusão de código que vai ser dificil de gerir. A segunda coisa a fazeres é ligares os dados de imc ao utilizador usando uma chave estrangeira na base de dados, desta forma quando fazes um select, insert ou update filtras sempre usando a chave do utilizador que está autenticado. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
Joao Domingues Posted October 6, 2016 at 11:24 PM Author Report #599445 Posted October 6, 2016 at 11:24 PM Nao é isso a minha duvida, vou colocar codigo e imagens para ser mais fácil entender. Tenho um formulário de IMC (http://prnt.sc/cqqr7j) que quero guardar os dados inseridos nele para a página Conta.php (http://prnt.sc/cqqrdl) mas esta página da Conta.php só aparece se o utilizador criar uma conta no site, o problema é que os dados do formulário estao a ser guardados na página da Conta.php mas esta a guardar os dados para todos os utilizadores e só devia guardar no respetivo utilizador. Por exemplo tenho um utilizador Joao e outro Rita, ambos criam conta no site e entram nas mesmas, preenchem o formulário do IMC e os dados que cada um preencheu deve ir na sua Conta.php e o meu problema é esse, ele esta a guardar todos os dados inseridos no formulário e guarda para todos os utilizadores e eu só quero que guarde para o utilizador que a preencheu. Código Index.php (Onde está o formulário do IMC): <?php if ($_SERVER['REQUEST_METHOD'] == 'GET') { if (!empty($_GET['Peso']) && !empty($_GET['Altura'])) { $css = ''; $Peso = $_GET['Peso']; $Altura = $_GET['Altura']; $Data = date_default_timezone_set('Europe/Lisbon'); $Resultado = $Peso / ($Altura * $Altura); $Resultado = number_format($Resultado, 2, ',', '.'); if (isset($_SESSION['User_ID'])) { $Data = date("Y-m-d"); $DadosIMC = array("Data" => $Data, "Peso" => $Peso, "Altura" => $Altura, "Resultado" => $Resultado); InserirDados($DadosIMC); } } } ?> Código Database.php (Onde guardo os dados do formulário): <?php function InserirDados($DadosIMC) { // Inicializar uma vari�vel que sinaliza o sucesso ou insucesso da opera��o $sucesso = False; // Criar a liga��o $mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME); // Verificar se a liga��o foi efetuada com sucesso if (!$mysqli->connect_error) { // IMPORTANTE: Antes de interagir com a base de dados, estabelecer o character set. $mysqli->set_charset("utf8"); // Preparar a query if ($stmt = $mysqli->prepare("INSERT INTO imc (Data, Peso, Altura, Resultado) VALUES (?, ?, ?, ?)")) { $stmt->bind_param('ssss', $DadosIMC['Data'], $DadosIMC['Peso'], $DadosIMC['Altura'], $DadosIMC['Resultado']); // Executar a query e verificar que n�o retornou FALSE if ($stmt->execute()) { // A opera��o foi executada com sucesso $sucesso = True; } $stmt->close(); } // Terminar a liga��o $mysqli->close(); } return $sucesso; } function GetResultado($ID) { // Declarar e inicializar a vari�vel que ir� conter os dados $registo = NULL; // Criar a liga��o $mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME); // Verificar se a liga��o foi efetuada com sucesso if (!$mysqli->connect_error) { // IMPORTANTE: Antes de interagir com a base de dados, estabelecer o character set. $mysqli->set_charset("utf8"); // Preparar a query if ($stmt = $mysqli->prepare("SELECT * FROM imc WHERE ID = ?")) { $stmt->bind_param('i', $ID); // Executar a query e verificar que n�o retornou FALSE if ($stmt->execute()) { $result = $stmt->get_result(); // Verificar o n�mero de registos devolvidos if ($result->num_rows > 0) { $registo = $result->fetch_array(); $result->free(); } } $stmt->close(); } // Terminar a liga��o $mysqli->close(); } return $registo; } function GetResultados() { // Declarar e inicializar a vari�vel que ir� conter os dados $registos = NULL; // Criar a liga��o $mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME); // Verificar se a liga��o foi efetuada com sucesso if (!$mysqli->connect_error) { // IMPORTANTE: Antes de interagir com a base de dados, estabelecer o character set. $mysqli->set_charset("utf8"); // Preparar a query if ($stmt = $mysqli->prepare("SELECT ID, Data, Peso, Altura, Resultado FROM imc")) { // Executar a query e verificar que n�o retornou FALSE if ($stmt->execute()) { $result = $stmt->get_result(); // Colocar os dados obtidos na vari�vel $registos, em formato array associativo $registos = $result->fetch_all(MYSQLI_ASSOC); $result->free(); } $stmt->close(); } // Terminar a liga��o $mysqli->close(); } // Retornar os dados return $registos; } function EliminarResultado($ID) { // Inicializar uma vari�vel que sinaliza o sucesso ou insucesso da opera��o $sucesso = False; // Criar a liga��o $mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME); // Verificar se a liga��o foi efetuada com sucesso if (!$mysqli->connect_error) { // Preparar a query if ($stmt = $mysqli->prepare("DELETE FROM imc WHERE ID = ?")) { $stmt->bind_param('i', $ID); // Executar a query e verificar que n�o retornou FALSE if ($stmt->execute()) { // A opera��o foi executada com sucesso $sucesso = True; } $stmt->close(); } // Terminar a liga��o $mysqli->close(); } return $sucesso; } ?>
danielfpaiva Posted November 8, 2016 at 12:26 AM Report #600240 Posted November 8, 2016 at 12:26 AM (edited) Boas, Em primeiro lugar nesta query dizes que vais passar 4 parâmetros no entanto depois estás a passar 5. if ($stmt = $mysqli->prepare("INSERT INTO imc (Data, Peso, Altura, Resultado) VALUES (?, ?, ?, ?)")) { $stmt->bind_param('ssss', $DadosIMC['Data'], $DadosIMC['Peso'], $DadosIMC['Altura'], $DadosIMC['Resultado']); Parece-me que deverias ter um campo na tabela imc onde guardas o id do utilizador. Qual é a utilidade das funções GetResultado($ID) e GetResultados()? Vou deduzir que o GetResultados() é utilizado para preencher a tabela IMC's e que o GetResultado($ID) será para chamada quando o utilizador quiser ver o resultado completo de uma as entradas da tabela. Na função GetResultados() tens a seguinte query: if ($stmt = $mysqli->prepare("SELECT ID, Data, Peso, Altura, Resultado FROM imc")) Isto vai retornar todas as entradas que estão na base de dados, pois não tens nenhuma condição para "filtrar" as entradas que são de um determinado utilizador. Caso eu não tenha entendido a utilidade de cada uma das funções explica melhor se faz favor. Edited November 8, 2016 at 10:39 PM by danielfpaiva
Joao Domingues Posted November 8, 2016 at 09:43 PM Author Report #600263 Posted November 8, 2016 at 09:43 PM Eu frequentei um curso de profissional de informática e tive que fazer uma PAP (construir um website) e o meu professor ajudou me e algumas coisas como as funções de Resultado não sei para que servem.
danielfpaiva Posted November 8, 2016 at 10:40 PM Report #600267 Posted November 8, 2016 at 10:40 PM 56 minutos atrás, Joao Domingues disse: Eu frequentei um curso de profissional de informática e tive que fazer uma PAP (construir um website) e o meu professor ajudou me e algumas coisas como as funções de Resultado não sei para que servem. Sem saber exactamente onde elas são usadas torna-se complicado. Precisava de ver onde estão a ser usadas e qual a sua funcionalidade concretamente.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now