• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

_Rest_

PHP e BD

27 mensagens neste tópico

Boas,

Eu não percebo muito de PHP e não sei o que estou a fazer mal, se alguém poder dar uma dica...

Então é o seguinte:

Eu estou a usar o easyPHP e não sei porquê não consigo registar nem aceder aos dados da BD que criei.

1º criei essa pagina de html onde tem o formulario.

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Inscrições</title>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="Microsoft Theme" content="network 011, default">
<meta name="Microsoft Border" content="none, default">
</head>

<body>
<div align ="center" style="width: 899; height: 299">
<h1>Pré-Inscrição</h1>
<form method="POST" action ="inserir.php">
<br>Nome<br>
<input type="TEXT" name="$nome" size="20">
<br>Telefone<br>
<input type="TEXT" name="$telefone" size="20">
<br>mail<br>
<input type="TEXT" name="$mail" size="20">
<br>morada<br>
<input type="TEXT" name="$morada" size="20">
<br><input type="SUBMIT" value="Inserir">
</form>
</div>

</body>

</html>

E depois criei outra em PHP com as config

<?

    $servidor = "localhost";
    $user = "root";
    $pass = "";
    $nome_bd = "teste";

?>

E outra que supostamente registava na BD

<html>
<head>
<title>inserir.php</title>
</head> 
<body>
<?
include 'config.php';
$connect = mysql_connect($servidor,$user,$pass) or die ("Erro a Ligar a Base de Dados");
mysql_select_db($nome_bd) or die ("Erro a Ligar a Tabela");

mysql_db_query ("INSERT INTO Alunos(nome,telefone,mail,morada) VALUES('$nome','$telefone','$mail','$morada')");
?>

<h1><div align="center"> Registo Inserido</div></h1>
<div align="center">
<a href="index.htm">Home</a>
</div>
</body>
</html>;

Já tentei fazer só um

mysql_db_query(" Select * From alunos");

e não devolve dados nenhuns.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sou grande experienciado em php, mas tanto quanto sei é mysql_query, e não mysql_db_query.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na query os campos de texto tem de levar " na própria query

por ex:

$query = 'INSERT INTO Alunos(nome,telefone,mail,morada) VALUES("'.$nome.'","'.$telefone.'","'.$mail.'","'.$morada.'")";

mysql_query($query) or die (mysql_error());

a query fica : INSERT INTO Alunos(nome,telefone,mail,morada) VALUES("nome","111222333","fake@email.com","morada")

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

<?php
$query = "Insert into alunos (nome,telefone,mail,morada) VALUES ($nome, $telefone, $mail, $morada)";
mysql_query($query) or die (mysql_error());
?>

assim funca

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

$query = 'INSERT INTO Alunos(nome,telefone,mail,morada) VALUES("'.$nome.'","'.$telefone.'","'.$mail.'","'.$morada.'")";

Falta-te fechar a string:
$query = 'INSERT INTO Alunos(nome,telefone,mail,morada) VALUES("'.$nome.'","'.$telefone.'","'.$mail.'","'.$morada.'")"';

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já tentei das duas maneiras:

<?

include 'config.php';
$connect = mysql_connect($servidor,$user,$pass) or die ("Erro a Ligar a Base de Dados");
mysql_select_db($nome_bd) or die ("Erro a Ligar a Tabela");

$query = "Insert into alunos (nome,telefone,mail,morada) VALUES ($nome, $telefone, $mail, $morada)";
mysql_query($query) or die (mysql_error());
?>

<?

include 'config.php';
$connect = mysql_connect($servidor,$user,$pass) or die ("Erro a Ligar a Base de Dados");
mysql_select_db($nome_bd) or die ("Erro a Ligar a Tabela");

$query = 'INSERT INTO Alunos(nome,telefone,mail,morada) VALUES("'.$nome.'","'.$telefone.'","'.$mail.'","'.$morada.'")"';
mysql_query($query) or die (mysql_error());
?>

e não deu nenhuma delas. Eu não percebo porque é que não dá, é que não me dá erro nenhum, simplesmente não faz. Talvez seja de alguma config da BD. Com o easyPHP eu fui ao PHPadmin e lá tem a opção criar nova base de dados. Depois disso criei a tabela alunos.

Falta alguma coisa?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se a tua tabela se chama alunos, não podes usar Alunos. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Da primeira maneira está alunos e na segunda maneira já alterei para alunos e também não dá

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

faz um echo mysql_error() depois do mysql_query($query)...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já fiz mas não aparece nada. Eu não percebo mesmo o que está a acontecer. A única coisa que me aparece é o link para voltar ao Home.

Alguém que use o easyPHP que posso tentar a criar uma BD e meter este código para ver se funciona juntamente com a código de HTML do formulario que postei no primeiro post sff.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Será por a versão do PHP que estás a usar ter o register globals off, e não estares a usar a superglobal $_POST?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

só agora é que li o código como deve ser...

para começar, tens de alterar os nomes dos inputs no form... todos têm o $ no nome e não devem ter...

depois, no inserir.php, os valores têm de ser recebidos pelo $_POST, que é o método que usaste no form...

a linha do query tem de ficar:

$query = "INSERT INTO Alunos (nome,telefone,mail,morada) VALUES ('".$_POST['nome']."', '".$_POST['telefone']."', '".$_POST['mail']."', '".$_POST['morada']."')";

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok então no form tirei os $ e fica assim

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Inscrições</title>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta name="Microsoft Theme" content="network 011, default">
<meta name="Microsoft Border" content="none, default">
</head>

<body background="netbkgnd.gif" bgcolor="#FFFFFF" text="#000000" link="#0066CC" vlink="#999999" alink="#669999">
<!--mstheme--><font face="trebuchet ms, Arial, Helvetica">
<div align ="center" style="width: 899; height: 299">
<!--mstheme--></font>
<h1><!--mstheme--><font face="trebuchet ms, Arial, Helvetica" color="#000000">Pré-Inscrição<!--mstheme--></font></h1>
<!--mstheme--><font face="trebuchet ms, Arial, Helvetica">
<form method="POST" action ="inserir.php">
<br>Nome<br>
<input type="TEXT" name="nome" size="20">
<br>Telefone<br>
<input type="TEXT" name="telefone" size="20">
<br>mail<br>
<input type="TEXT" name="mail" size="20">
<br>morada<br>
<input type="TEXT" name="morada" size="20">
<br><input type="SUBMIT" value="Inserir">
</form>
</div>

<!--mstheme--></font>

</body>

</html>

e o inserir.php ficou assim

<html>
<head>
<title>inserir.php</title>
</head> 
<body>
<?

include 'config.php';
$connect = mysql_connect($servidor,$user,$pass) or die ("Erro a Ligar a Base de Dados");
mysql_select_db($nome_bd) or die ("Erro a Ligar a Tabela");

$query = "INSERT INTO alunos (nome,telefone,mail,morada) VALUES ('".$_POST['nome']."', '".$_POST['telefone']."', '".$_POST['mail']."', '".$_POST['morada']."')";
mysql_query($query) or die (mysql_error());
echo mysql_error()

?>
<h1><div align="center"> Registo Inserido</div></h1>
<div align="center">
<a href="index.htm">Home</a>
</div>
</body>
</html>;

Mas continua a não funcionar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já fizeste um echo da query para ver se está tudo certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No inserir.php mete a seguir ao include('config.php');

echo '<pre>';
print_r($_POST);
echo '</pre';
...

E vê se os valores que inseriste no formulário aparecem ai definidos!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, aparece isto

'; print_r($_POST); echo '

Registo Inserido

Home

;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Devem ter faltar umas ' , ou tens umas a mais. Experimenta o echo da $query

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta meter aqui o código dos ficheiros utilizados: http://rafb.net/paste/

Relativamente ao código do inserir.php

<?

include 'config.php';
$connect = mysql_connect($servidor,$user,$pass) or die ("Erro a Ligar a Base de Dados");
mysql_select_db($nome_bd) or die ("Erro a Ligar a Tabela");

$query = "INSERT INTO alunos (nome,telefone,mail,morada) VALUES ('".$_POST['nome']."', '".$_POST['telefone']."', '".$_POST['mail']."', '".$_POST['morada']."')";
mysql_query($query) or die (mysql_error());
echo mysql_error()

?>

Falta-te um ; no echo mysql_error() ou seja, deve ficar: echo mysql_error();

Deves usar <?php em vez de <?

Relativamente ao erro propriamente dito, se com o que já foi sugerido e o que aqui sugiro não ficar resolvido, envia os ficheiros para o site que falei acima, para podermos dar uma vista de olhos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dá me este erro:

Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ';' in C:\Program Files\EasyPHP 2.0b1\www\Inserir.php on line 16

e a minha linha 16 é esta :

$query = "INSERT INTO alunos (nome,telefone,mail,morada) VALUES ('".$_POST['nome']."', '".$_POST['telefone']."', '".$_POST['mail']."', '".$_POST['morada']."')";

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

<?php

$connect = mysql_connect('localhost', 'user', 'pass') or die ("Erro a Ligar a Base de Dados");
mysql_select_db('bd') or die ("Erro a Ligar a Tabela");

$_POST["nome"] = "ze manel";
$_POST["telefone"] = "265236206";
$_POST["mail"] = "zm@zm.zm";
$_POST["morada"] = "rua etc etc";

$query = "INSERT INTO alunos (nome,telefone,mail,morada) VALUES ('".$_POST['nome']."', '".$_POST['telefone']."', '".$_POST['mail']."', '".$_POST['morada']."')";
mysql_query($query) or die (mysql_error());

?>

Fiz esse teste e funcionou!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, assim regista os valores na BD só que estás a definir o valor das variaveis na pagina inserir.php e era com objectivo de as variaveis ficarem com o valor inserido no formulario.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Claro, o que escrevi acima era um teste/exemplo, desta forma dá para veres que o problema não estava no query!

Supostamente, se apagares os valores que defini para o POST os recebidos são os enviados pelo formulário!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dá me este erro:

Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ';' in C:\Program Files\EasyPHP 2.0b1\www\Inserir.php on line 16

e a minha linha 16 é esta :

$query = "INSERT INTO alunos (nome,telefone,mail,morada) VALUES ('".$_POST['nome']."', '".$_POST['telefone']."', '".$_POST['mail']."', '".$_POST['morada']."')";

Normalmente este erro refere-se à linha anterior. O PHP está a dizer que quando chegou à linha 16 encontrou algo que não esperava, ele esperava encontrar um ;

Logo devia-te faltar um ; na linha anterior.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exatamente! Esse erro era do echo mysql_error(); que não tinha posto ; quando fiz o ultimo teste.

Finalmente a funcionar... Obrigado pela ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora