1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

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

Discussão em 'Web Development' iniciada por toblesu, 16 de Setembro de 2007. (Respostas: 5; Visualizações: 679)

  1. toblesu

    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); */

    $linkmysql_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: 16 de Setembro de 2007
  2. mascker

    mascker Power Member

    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: 16 de Setembro de 2007
  3. toblesu

    toblesu Power Member

    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!!
     
  4. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    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.
     
  5. toblesu

    toblesu Power Member

    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: 16 de Setembro de 2007
  6. toblesu

    toblesu Power Member

    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!
     

Partilhar esta Página