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

duvida num codigo php e my sql

Discussão em 'Web Development' iniciada por saskia, 22 de Junho de 2008. (Respostas: 14; Visualizações: 878)

  1. saskia

    saskia Power Member

    boa noite eu kero implementar o codigo que esta abaixo mas quando abro o navegador da o seguinte erro: Warning: mysql_db_query(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\ariana2\inserir.php on line 14
    Erro de inclusão

    como posso resolver este erro?? desde ja obrigado

    PHP:
    <?
    $local "localhost";
    $user "root";
    $pass "";
    $db "ariana";
     
    $conexao mysql_connect("$local""$user""$pass") or die ("Erro de mysql - Conexao = " mysql_error());
     
    $sql mysql_select_db("$db") or die ("Erro de mysql - Conexao = " mysql_error());
    if(
    $conexao){
     
    $sql="insert into empresa"
     
    ."(nome,endereco,bairro,cidade,estado,cep,telefone,cnpj,ie)"
     
    ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";
     
    $res2 mysql_db_query(empresa,$sql,$res1);
       if (
    $res2) {
          echo (
    "Novo registro adicionado");
       } 
       else {
          echo(
    "Erro de inclusão ".mysql_error()."\n");
       }

    else {
      echo(
    "Erro de conexão ".mysql_error()."\n");
    }
    mysql_close($conexao);

    ?>
     
    Última edição pelo moderador: 24 de Junho de 2008
  2. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Antes de mais, para perceber melhor o código,
    PHP:
    <?php
    $local 
    "localhost";
    $user "root";
    $pass "";
    $db "ariana";
     
    $conexao mysql_connect($local$user$pass) or die ("Erro de mysql - Conexao = " mysql_error());
    $sql mysql_select_db($db) or die ("Erro de mysql - Conexao = " mysql_error());
     
    if(
    $conexao){
     
    $sql="insert into empresa"
         
    ."(nome,endereco,bairro,cidade,estado,cep,telefone,cnpj,ie)"
         
    ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";
     
    $res2 mysql_db_query(empresa,$sql,$res1);
     
     if (
    $res2) {
      echo (
    "Novo registro adicionado");
     } else {
      echo(
    "Erro de inclusão ".mysql_error()."\n");
     }
     
    } else {
     echo(
    "Erro de conexão ".mysql_error()."\n");
    }
     
    mysql_close($conexao);
    ?>
    Estava tão desorganizado que nem dava para olhar para ele.
    Logo à partida, aconselho-te a não usares as aspas em volta de variáveis (tipo "$var") quando não há texto à volta. São inúteis :)

    edit - ok, estou a ver duas coisas na mesma linha:
    PHP:
     $res2 mysql_db_query(empresa,$sql,$res1);
    1) Coloca empresa entre aspas. É uma string.
    2) Estás a passar como identificador da ligação a variável $res1, mas ali estás a criar o identificador com o nome $conexao:
    PHP:
    $conexao mysql_connect($local$user$pass) or die ("Erro de mysql - Conexao = " mysql_error());
    Testa isto:

    PHP:
    <?php
    $local 
    "localhost";
    $user "root";
    $pass "";
    $db "ariana";
     
    $conexao mysql_connect($local$user$pass) or die ("Erro de mysql - Conexao = " mysql_error());
    $sql mysql_select_db($db) or die ("Erro de mysql - Conexao = " mysql_error());
     
    if(
    $conexao){
     
    $sql="insert into empresa"
         
    ."(nome,endereco,bairro,cidade,estado,cep,telefone,cnpj,ie)"
         
    ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";
     
    $res2 mysql_db_query("empresa",$sql,$conexao);
     
     if (
    $res2) {
      echo (
    "Novo registro adicionado");
     } else {
      echo(
    "Erro de inclusão ".mysql_error()."\n");
     }
     
    } else {
     echo(
    "Erro de conexão ".mysql_error()."\n");
    }
     
    mysql_close($conexao);
    ?>
     
    Última edição: 22 de Junho de 2008
  3. saskia

    saskia Power Member

    antes demaisobrigada pela tua ajuda!!!
    ja testei e dao seguinte erro:
    Erro de inclusão Unknown database 'empresa'
     
  4. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Agradecia que não enviasses PMs :P o tópico serve para esclarecer esta questão, e continuá-la em privado não só não faz sentido como deixa o tópico incompleto ;)

    Sabes como trabalha o mysql_db_query? Supostamente, o primeiro argumento é o nome de uma base de dados; o segundo é o query e o terceiro é um link para uma conexão à BD.
    Aquela linha dizia que a BD onde estás a fazer o query é a "empresa", e não a "ariana", como seleccionavas acima.
    Se isto não estiver certo, usa o mysql_query em vez do mysql_db_query e remove o primeiro argumento, ficando
    PHP:
    $res2 mysql_query($sql,$conexao);
     
  5. saskia

    saskia Power Member

    desculpa ter respondido po privado...
    tentei o k m disseste e da o seguinte erro
    Erro de inclusão You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''','','','','','','','','')' at line 1
     
  6. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Troca o query por isto:
    PHP:
    $sql="insert into empresa "
         
    ."(`nome`,`endereco`,`bairro`,`cidade`,`estado`,`cep`,`telefone`,`cnpj`,`ie`) VALUES "
         
    ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";
     
  7. saskia

    saskia Power Member

    desculpa la a burrice mas isso nao é o k tenho nas linhas de codigo anteriores???

    PHP:
    <?php
    $local 
    "localhost";
    $user "root";
    $pass "";
    $db "ariana";
     
    $conexao mysql_connect($local$user$pass) or die ("Erro de mysql - Conexao = " mysql_error());
    $sql mysql_select_db($db) or die ("Erro de mysql - Conexao = " mysql_error());
     
    if(
    $conexao){
     
    $sql="insert into empresa"
         
    ."(nome,endereco,bairro,cidade,estado,cep,telefone,cnpj,ie)"
         
    ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";
     
    $res2 mysql_query($sql,$conexao);
     
     if (
    $res2) {
      echo (
    "Novo registro adicionado");
     } else {
      echo(
    "Erro de inclusão ".mysql_error()."\n");
     }
     
    } else {
     echo(
    "Erro de conexão ".mysql_error()."\n");
    }
     
    mysql_close($conexao);
    ?>
     
    Última edição pelo moderador: 24 de Junho de 2008
  8. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Tem diferenças. Repara, no teu caso não tens `` à volta dos nomes das colunas, e não tens "VALUES" entre os () ().
    O teu código está como
    INSERT INTO tabela(coluna,coluna)("valor","valor")
    em vez de
    INSERT INTO tabela (`coluna`,`coluna`) VALUES ("valor","valor")
    como deve estar, e é assim que eu pus.

    Troca aquilo que puseste a amarelo por aquilo que eu escrevi :)
     
    Última edição: 22 de Junho de 2008
  9. saskia

    saskia Power Member

    desculpa tar te a incomodar tanto mas eu sou um zero a esquerda nestas coisas :P

    agora ja grava na bd mas a minha intençao era numa pagina chamada empresa com o seguinte codigo :
    PHP:
    <p align="center"><font face="arial" size="4" color="green"><b>Cadastro da Empresa</b></p> <BR>
    <center>
    <form method="POST" action="inserir.php">
     
    </form>
    </center>
    <table border="0" width="30%" bgcolor="#B0B0B0">
    <tr >
    <td width="10%"><font face="arial" size="3" color="green">Nome:</font></td>
    <td> <input type="text" size="20" name="nome"></td>
    </tr>
     
    <tr>
    <td><font face="arial" size="3" color="green">Endereço:</font></td>
    <td><input type="text" size="20" name="endereco"></td>
    </tr>
     
    <tr>
    <td><font face="arial" size="3" color="green">Bairro:</font></td>
    <td> <input type="text" size="20" name="bairro"></td>
    </tr>
     
    <tr>
    <td><font face="arial" size="3" color="green">Cidade:</font></td>
    <td><input type="text" size="20" name="cidade"></td>
    </tr>
     
    <tr>
    <td><font face="arial" size="3" color="green">Estado:</font></td>
    <td><input type="text" size="20" name="estado"></td>
    </tr>
    <tr>
     
    <td><font face="arial" size="3" color="green">Cep:</font></td>
    <td> <input type="text" size="20" name="cep"></td>
    </tr>
    <tr>
     
    <td><font face="arial" size="3" color="green">Telefone:</font></td>
    <td> <input type="text" size="20" name="telefone"></td>
    </tr>
     
    <tr>
    <td><font face="arial" size="3" color="green">Cnpj:</font></td>
    <td><input type="text" size="20" name="cnpj"></td>
    </tr>
     
    <tr>
    <td><font face="arial" size="3" color="green">Ie:</font></td>
    <td> <input type="text" size="20" name="ie"></td>
    </tr>
     
    <tr>
    <td></td>
    <td><input type="submit" value="Cadastrar"></td>
    </table>
     
    chamava a outra pagina que ja t mostrei k tem o nome de inserir.php
     
    <?php
    $local 
    "localhost";
    $user "root";
    $pass "";
    $db "ariana";
     
    $conexao mysql_connect($local$user$pass) or die ("Erro de mysql - Conexao = " mysql_error());
    $sql mysql_select_db($db) or die ("Erro de mysql - Conexao = " mysql_error());
     
    if(
    $conexao){
     
    $sql="insert into empresa "
         
    ."(`nome`,`endereco`,`bairro`,`cidade`,`estado`,`cep`,`telefone`,`cnpj`,`ie`) VALUES "
         
    ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";  
     
    $res2 mysql_query($sql,$conexao);
     
     if (
    $res2) {
      echo (
    "Novo registro adicionado");
     } else {
      echo(
    "Erro de inclusão ".mysql_error()."\n");
     }
     
    } else {
     echo(
    "Erro de conexão ".mysql_error()."\n");
    }
     
    mysql_close($conexao);
    ?> 
    ou seja, tipo mostra ao utilizador a pagina empresa ... pede os dados ao utilizador e guarda na bd empresa...

    e o k o programa ta a fazer agora é so guardar registos vazios na bd
     
    Última edição pelo moderador: 22 de Junho de 2008
  10. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Por favor, não escrevas os posts a amarelo. O fórum para mim está azul claro, e misturado com o amarelo é impossível ler o que tens escrito. Usa a cor normal do fórum, sff, e acrescenta a tag [php] e [/php] à volta do código :)

    O que podias fazer no inserir.php seria uma vez mais mudar o query. No entanto, pode vir a existir uma falha de segurança (SQL Injection) se o fizeres assim sem mais nem menos, por isso, o melhor é fazeres isto com todas as variáveis:

    $nome = mysql_real_escape_string($_POST["nome"]);
    $nome, $endereco, $bairro, $cidade, ... mudando sempre o nome da variável em $nome e em $_POST["nome"]
     
  11. saskia

    saskia Power Member

    seria ***** coisa deste genero????

    pagina inserir.php

    PHP:
    <?php
    $local 
    "localhost";
    $user "root";
    $pass "";
    $db "ariana";
     
    $conexao mysql_connect($local$user$pass) or die ("Erro de mysql - Conexao = " mysql_error());
    $sql mysql_select_db($db) or die ("Erro de mysql - Conexao = " mysql_error());
    $nome mysql_real_escape_string($_POST["nome"]);
    $endereco mysql_real_escape_string($_POST["endereco"]);
    $bairro mysql_real_escape_string($_POST["bairro"]);
    $cidade mysql_real_escape_string($_POST["cidade"]);
    $estado mysql_real_escape_string($_POST["estado"]);
    $cep mysql_real_escape_string($_POST["cep"]);
    $telefone mysql_real_escape_string($_POST["telefone"]);
    $cnpj mysql_real_escape_string($_POST["cnpj"]);
    $ie mysql_real_escape_string($_POST["ie"]);
     
    if(
    $conexao){
     
    $sql="insert into empresa "
         
    ."(`nome`,`endereco`,`bairro`,`cidade`,`estado`,`cep`,`telefone`,`cnpj`,`ie`) VALUES "
         
    ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";  
     
    $res2 mysql_query($sql,$conexao);
     
     if (
    $res2) {
      echo (
    "Novo registro adicionado");
     } else {
      echo(
    "Erro de inclusão ".mysql_error()."\n");
     }
     
    } else {
     echo(
    "Erro de conexão ".mysql_error()."\n");
    }
     
    mysql_close($conexao);
    ?>
     
    Última edição pelo moderador: 24 de Junho de 2008
  12. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Exactamente.
     
  13. saskia

    saskia Power Member

    se a pagina empresa for assim :

    PHP:
    <td> <input type="text" size="20" name="telefone"></td>
    </
    tr>
     
    <
    tr>
    <
    td><font face="arial" size="3" color="green">Cnpj:</font></td>
    <
    td><input type="text" size="20" name="cnpj"></td>
    </
    tr>
     
    <
    tr>
    <
    td><font face="arial" size="3" color="green">Ie:</font></td>
    <
    td> <input type="text" size="20" name="ie"></td>
    </
    tr>
     
    <
    tr>
    <
    td></td>
    <
    form method="POST" action="inserir.php">
    <
    td><input type="submit" value="Cadastrar"></td>

    </
    table>

    E a pagina inserir.php for assim:
    PHP:
    <?php
    $local 
    "localhost";
    $user "root";
    $pass "";
    $db "ariana";
     
    $conexao mysql_connect($local$user$pass) or die ("Erro de mysql - Conexao = " mysql_error());
    $sql mysql_select_db($db) or die ("Erro de mysql - Conexao = " mysql_error());
    $nome mysql_real_escape_string($_POST["nome"]);
    $endereco mysql_real_escape_string($_POST["endereco"]);
    $bairro mysql_real_escape_string($_POST["bairro"]);
    $cidade mysql_real_escape_string($_POST["cidade"]);
    $estado mysql_real_escape_string($_POST["estado"]);
    $cep mysql_real_escape_string($_POST["cep"]);
    $telefone mysql_real_escape_string($_POST["telefone"]);
    $cnpj mysql_real_escape_string($_POST["cnpj"]);
    $ie mysql_real_escape_string($_POST["ie"]);
     
    if(
    $conexao){
     
    $sql="insert into empresa "
         
    ."(`nome`,`endereco`,`bairro`,`cidade`,`estado`,`cep`,`telefone`,`cnpj`,`ie`) VALUES "
         
    ."('$nome','$endereco','$bairro','$cidade','$estado','$cep','$telefone','$cnpj','$ie')";  
     
    $res2 mysql_query($sql,$conexao);
     
     if (
    $res2) {
      echo (
    "Novo registro adicionado");
     } else {
      echo(
    "Erro de inclusão ".mysql_error()."\n");
     }
     
    } else {
     echo(
    "Erro de conexão ".mysql_error()."\n");
    }
     
    mysql_close($conexao);
    ?> 

    assim ja guarda na bd a partir da pagina empresa. k era cm eu keria... mas nao guarda o k eu escrevo... os registos vao em branco...
     
    Última edição pelo moderador: 24 de Junho de 2008
  14. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Não reparei numa coisa: o <form> tem de vir ANTES dos <input>s e o </form> tem de estar DEPOIS.
    Também tens de olhar para o código com um olhar crítico :P se os campos estão fora do formulário, então não são enviados nele, não é?
    No teu código, põe o <form...> antes do <table> e o </form> depois do </table>.
     
  15. saskia

    saskia Power Member

    muitissimo obrigado
    ja ta a gravar ... desculpa a burrice... beijoca
     

Partilhar esta Página