AJUDA.... php e inserção de dados numa BD

toblesu

Power Member
Oias...

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

PHP:
<?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.
 
Última edição pelo moderador:
Viva,

Substitui
Código:
$sql=mysql_query($add_user);
por
Código:
$sql=mysql_query($add_user) or die(mysql_error());

E coloca o resultado

Saudações
 
Última edição pelo moderador:
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!!
 
Só dois pormenores:
1) usa as tags [php][/php] à 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.
 
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!​

:)
 
Última edição:
nova duvida!!!

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!
 
Back
Topo