View Full Version : AJUDA.... php e inserção de dados numa BD


toblesu
16-09-2007, 11:34
Oias...

Tou com uns problemas no seguinte código....


<?php

//ligação à base de dados
$hostname="localhost";
$mysql_login="root";
$mysql_password="";
/*$database="softcont";

$db = @mysql_connect($hostname, $mysql_login , $mysql_password);
@mysql_select_db("$database",$db); */

$link= mysql_connect($hostname, $mysql_login , $mysql_password);
if (!$link)
{ die('Não foi possível conectar: ' . mysql_error()); }
$db_selected =mysql_select_db("softcont" , $link);
if (!$db_selected) { die ('Can\'t use foo : ' . mysql_error()); }
$bd=mysql_query("select ped_id from ped_ut");

// Adicionar um utilizador à BD
$num=mysql_num_rows($bd)+1;
$nome = $_POST['nome'];
$empresa = $_POST['empresa'];
$sede = $_POST['sede'];
$cidade = $_POST['cidade'];
$telf= $_POST['telf'];
$fax = $_POST['fax'];
$act = $_POST['actividade'];
$email = $_POST['email'];
$url = $_POST['url'];
$tipo_ut= $_POST['tipo_ut'];
$pedido = $_POST['pedido'];
$aceite=0;

$add_user="INSERT INTO ped_ut
(
ped_id,
ped_nome,
ped_data,
ped_empresa,
ped_sede,
ped_cidade,
ped_telf,
ped_fax,
ped_actividade,
ped_email,
ped_url,
ped_tipo,
ped_descritivo,
ped_aceite
)
VALUES
(
'$num',
'$nome',
NOW(),
'$empresa',
'$sede',
'$cidade',
'$telf',
'$fax',
'$act',
'$email',
'$url',
'$tipo_ut',
'$pedido',
'$aceite'
)";[/color]
// executa a query
// $sql=mysql_query($add_user);

if(!mysql_query($add_user, $link))
{
echo"<p align=center class=style1>Não foi possível registar seu o pedido!</p>";
echo"<p align=center class=style1> <a href=../form_pedido.php>Tente novamente!</a>";
}
else
{
echo"aceite";
}
?>

utilizo o deamweaver e o xampp, versão 1.6.3a... este código, nao dá erros mas nao insere nada na base de dados... chega à linha $sql=mysql_query($add_user); e nao funciona! já tentei mil e uma forma, tentei vários echos para ver onde seria o problema.... mas nao estou a conseguir!

Será que me podiam ajudar?? só este código nao dá p testar (obviamente!!), mas verificar se há algum erro,alguma coisa que nao está bem construida.... ou indicar-me outra forma de fazer a tal inserção na BD.


Obrigado.

mascker
16-09-2007, 13:21
Viva,

Substitui $sql=mysql_query($add_user); por $sql=mysql_query($add_user) or die(mysql_error());

E coloca o resultado

Saudações

toblesu
16-09-2007, 13:26
gerei outro código.... mas volta smp ao msm!! desta vez, nao chega a dar erro na tal linha...... k tb modifiquei... mas nao grava na msm....

a ligação a bd funciona!!

Kayvlim
16-09-2007, 13:49
Só dois pormenores:
1) usa as tags à volta do código. Fica bem mais legível, e se houver algum erro na construção, o highlight denuncia-o imediatamente.

2) Esse código está passível de SQL Injection. Toma muita atenção a isso!!! Como primeira "linha de defesa", troca um $_POST[...] por um mysql_real_escape_string($_POST[...]).

Quanto ao código em si, escreve antes do query um "echo $add_user;" e mostra-nos o resultado, só para termos a certeza de que o query está a ser bem construído.

toblesu
16-09-2007, 15:38
o novo código construido:

<?php
/*ligação à base de dados
$hostname="localhost";
$mysql_login="root";
$mysql_password="";
/*$database="softcont";

$db = @mysql_connect($hostname, $mysql_login , $mysql_password);
@mysql_select_db("$database",$db); */

/*$link= mysql_connect($hostname, $mysql_login , $mysql_password);
if (!$link)
{ die('Não foi possível conectar: ' . mysql_error()); }
$db_selected =mysql_select_db("softcont" , $link);
if (!$db_selected) { die ('Can\'t use foo : ' . mysql_error()); }*/
include "../ligabd.php";
$bd=mysql_query("select ped_id from ped_ut");

// Adicionar um utilizador à BD
$num=mysql_num_rows($bd)+1;
$nome = mysql_real_escape_string($_POST['nome']);
$empresa = mysql_real_escape_string($_POST['empresa']);
$sede = mysql_real_escape_string($_POST['sede']);
$cidade = mysql_real_escape_string($_POST['cidade']);
$telf= mysql_real_escape_string($_POST['telf']);
$fax = mysql_real_escape_string($_POST['tax']);
$act = mysql_real_escape_string($_POST['actividade']);
$email = mysql_real_escape_string($_POST['email']);
$url = mysql_real_escape_string($_POST['url']);
$tipo_ut= mysql_real_escape_string($_POST['tipo_ut']);
$pedido = mysql_real_escape_string($_POST['pedido']);
$aceite=0;

$add_user="INSERT INTO ped_ut
(
ped_id,
ped_nome,
ped_data,
ped_empresa,
ped_sede,
ped_cidade,
ped_telefone,
ped_fax,
ped_actividade,
ped_email,
ped_url,
ped_tipo,
ped_descritivo,
ped_aceite
)
VALUES
(
'$num',
'$nome',
NOW(),
'$empresa',
'$sede',
'$cidade',
'$telf',
'$fax',
'$act',
'$email',
'$url',
'$tipo_ut',
'$pedido',
'$aceite'
)";
// executa a query
$sql=mysql_query($add_user) or die(mysql_error());

if(!mysql_query($add_user, $link))
{
echo"<p align=center class=style1>Pedido Registado.</p>";
echo"<p align=center class=style1>A resposta será encaminhada para o seu email.</p>";
echo"<p align=center class=style1>Sendo aprovada, receberá os seus dados de acesso ao software.</p>";
echo"<br><br><br><p align=center class=style1>SoftCont agradece a sua preferência.....</p>";
}
else
{

echo"<p align=center class=style1>Não foi possível registar seu o pedido!</p>";
echo"<p align=center class=style1> <a href=../form_pedido.php>Tente novamente!</a>";
}
?>




a resposta:


INSERT INTO ped_ut ( ped_id, ped_nome, ped_data, ped_empresa, ped_sede, ped_cidade, ped_telefone, ped_fax, ped_actividade, ped_email, ped_url, ped_tipo, ped_descritivo, ped_aceite ) VALUES ( '10', '', NOW(), '', '', '', '', '', '', '', '', 'consultante', 'rtqerter', '0' )aceite

já deu!!! mt obrigado!!!

ahhh.... so uma cena, as tags envolveram o código.... aparecem desenhadas... (pode parecer grande ignorância...) dentro o
<?php...?> davam erro... dizia qq coisa como "unespected '[' at line 2....", depois coloquei fora, e foram impressas...... nao sei se as coloquei bem ou sequer percebi a dica!!


mas felizmente ja deu resultado!

:)

toblesu
16-09-2007, 17:54
Preciso de pesquisar uma password, atraves da inserção do email.... (nao será mt seguro este método, pk aparecerá imediatamente no ecrã - plo menos essa é a intenção! no entanto trata-se de um programa meramente académico!)
O código gerado é o seguinte:

<?php
include "../ligabd.php";
$email = mysql_real_escape_string($_POST['email']);
//executa query: pesquisa de email
$id=mysql_query("select ped_id from ped_ut where ped_email='$email'");
//conta o numero de registos existentes correspondentes
$res=mysql_num_rows($id);
if($res==1)
{
$pass=mysql_query("select password from users where ped_id='$id'");
echo $pass;
echo"<br>";
echo"<p align=center class=style1>A sua password de acesso ao sistema é:</p>";
echo $pass;
}
else
{
echo "<p align=center class=style1>" .$email." </p>";
echo"<p align=center class=style1>Registo nao encontrado</p>";
echo"<p align=center class=style1> Verifique se inroduziu devidamente o endereço electrónico</a>";
echo"<p align=center class=style1> <a href=../recup_passwd.php>Voltar</a>";
}
?>


a ideia é pesquisar na tabela "ped_ut" o id correspondente ao mail inserido... e depois com esse id pesquisar na tabela "users" a password..
o código gerado dá logo mau resultado no primeiro query... $id=mysql_query("select ped_id from ped_ut where ped_email='$email'");
nao devolvendo o suposto id...

será que me podem ajudar?

obrigado!