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

PHP

Discussão em 'Web Development' iniciada por xinoca5, 5 de Julho de 2008. (Respostas: 8; Visualizações: 937)

  1. Boas Pessoal!!!!Preciso de ajuda...
    Não estou a conseguir introduzir dados numa das tabelas da minha base de dados(mysql). O nome da tabela é pessoa, fica aqui então o codigo:


    Formulário:

    Código:
    <?php
    
    
    <form action='inserir.php' method='post'>
    Nome:<input name='nome' type='text' size=30> *<br>
    Morada:<input name='morada' type='text' size=30> *<br>
    Telefone:<input name='telefone' type='text' size=30> *<br>
    Email:<input name='email' type='text' size=30> *<br>
    Sexo:<input name='sexo' type='text' size=30> *<br>
    <td><input type="submit" value="Registar"></td>
    
    
    
    Conexao ao mysql (inserir.php):
    
    <?
    $conexao = mysql_connect("localhost", "root", "") or die("Falha na conexão com o BD");
    $bd = mysql_select_db("gar") or die("Falha ao selecionar BD");
    
    $nome = $_POST["nome"];
    $morada = $_POST["morada"];
    $telefone= $_POST["telefone"];
    $email= $_POST["email"];
    $sexo= $_POST["sexo"];
    
    
    $registra = mysql_query("INSERT INTO 'pessoa' ( nome,morada,telefone,email,sexo) VALUES ('$nome', '$morada','$telefone','$email','$sexo)");
    mysql_close($conexao);
    ?>
     
    Última edição pelo moderador: 5 de Julho de 2008
  2. DarkWolfXP

    DarkWolfXP Power Member

    Não dá nenhum erro? Pelo que vejo n encontro nd de errado no script
    Experimenta antes
    Retirar os " ' " antes e dps do nome da tabela eu nunca utilizei e como vês nesta pagina http://www.w3schools.com/SQL/sql_insert.asp tb n o usam ;)
     
    Última edição: 5 de Julho de 2008
  3. p3dro

    p3dro Power Member

    tenta substituir esta linha
    PHP:
    $registra mysql_query("INSERT INTO 'pessoa' ( nome,morada,telefone,email,sexo) VALUES ('$nome', '$morada','$telefone','$email','$sexo)");
    por esta:

    PHP:
    $registra mysql_query("Insert Into `pessoa` (`nome`,`morada`,`telefone`,`email`,`sexo`) VALUES ('$nome','$morada','$telefone','$email','$sexo')");
    Atenção que este simbolo ` não são plicas, é um acento grave
     
  4. Os dados que introduzo no formulário continuam a não aparecer na BD. Porque???
     
  5. DarkWolfXP

    DarkWolfXP Power Member

    Faz um echo a cada uma das variaveis no formulario inserir.php, para verificar se os dados estão a passar de uma pagina para a outra.
    Faz tipo
    PHP:
    <?
    $nome $_POST["nome"];
    $morada $_POST["morada"];
    $telefone$_POST["telefone"];
    $email$_POST["email"];
    $sexo$_POST["sexo"];

    echo 
    "$nome $morada $telefone $email $sexo";
    Só para ver se a informação está a passar ou nao entre as paginas...
     
  6. A informação não esta a passar entre as paginas.


    Formulário:

    <html>
    <body>

    <form action="insert.php" method="post">
    Nome: <input type="text" name="nome" />
    Morada: <input type="text" name="morada" />
    Telefone: <input type="text" name="telefone" />
    Email: <input type="text" name="email" />
    Sexo: <input type="text" name="sexo" />
    <input type="submit" />
    </form>

    </body>
    </html>



    Conexao(php):

    <?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
    {
    die('Could not connect: ' . mysql_error());
    }

    mysql_select_db("gar", $con);

    $sql="INSERT INTO person (nome,morada,telefone,email,sexo)
    VALUES
    ('$_POST[nome]','$_POST[morada]','$_POST[telefone]','$_POST','$_POST[sexo]')";

    if (!mysql_query($sql,$con))
    {
    die('Error: ' . mysql_error());
    }
    echo "1 record added";

    mysql_close($con)
    ?>

    O formulário continua igual, só modifiquei algumas cenas na conexão, agora já passa a informação entre as páginas, só que continua a não registar os dados na BD.
     
  7. MPalhas

    MPalhas Power Member

    porque não podes fazer isto:
    Código:
    $sql="INSERT INTO person (nome,morada,telefone,email,sexo)
    VALUES
    ('$_POST[nome]','$_POST[morada]','$_POST[telefone]','$_POST[email]','$_POST[sexo]')";
    por dois motivos. primeiro, para usar arrays dentro de aspas precisas de os por também dentro de { } ou então de fechar as aspas e concatenar com o ponto
    ex: "texto {$array[1]} texto"
    ou: "text".$array[1]."texto"


    e também porque não é $_POST[nome], mas sim $_POST['nome']

    portanto, e como isso te iria dar uma confusão de plicas, aspas, chavetas ou lá o que seja, que tornaria o código ilegivel, faz assim:

    Código:
    $nome=$_POST['nome'];
    $morada=$_POST['morada'];
    $telefone=$_POST['telefone'];
    $email=$_POST['email'];
    $sexo=$_POST['sexo'];
    
    $sql="INSERT INTO person (nome,morada,telefone,email,sexo)
     VALUES
     ('$nome', '$morada', '$telefone', '$email', '$sexo')";
     
  8. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Coloca isto no início do inserir.php:
    PHP:
    <?php 
    echo "<pre>"
    print_r($_POST); 
    echo 
    "</pre>"
    ?>
    para vermos se o problema estará no POST.
    Já agora, muda o query para isto:
    PHP:
    $registra mysql_query("INSERT INTO 'pessoa' (`nome`,`morada`,`telefone`,`email`,`sexo`) VALUES (\"$nome\", \"$morada\",\"$telefone\",\"$email\",\"$sexo\")");
    Pelo que vi ao escrever esta linha, todas as variáveis tinham plicas antes e depois, mas a variável "sexo" tinha a plica antes mas não a fechava depois.

    Experimenta fazer as duas coisas que disse, e coloca aqui o resultado do <pre>...</pre> :)
     
  9. Obrigado pela atenção e ajuda prestada.
     

Partilhar esta Página