Error saving form data in php

0

I'm having trouble passing data from an html form to be rendered in a .php file No error message. '

<html>
<head>
    <title>Cadastro</title>
</head>
<body>
    <form method="POST" action="cadastro_aluno_exe.php">
        <table>
            <tr>
                <td>Matrícula</td>
                <td><input name="matricula" type="text" size="50" maxlenght="50"></td>
            </tr>
            <tr>
                <td>Nome</td>
                <td><input name="nome" type="text" size="50" maxlenght="50"></td>
            </tr>
            <tr>
                <td>Data de Nascimento</td>
                <td><input name="data_nascimento" type="text" size="20" ></td>
            </tr>
            <tr>
                <td>Nacionalidade do Aluno</td>
                <td><input name="nacionalidade" type="radio" value="brasileira">Brasileira
                    <input name="nacionalidade" type="radio" value="brasileira_nascida_no_exterior">Brasileira Nascida no Exterior
                    <input name="nacionalidade" type="radio" value="naturalizado">Naturalizado
                    <input name="nacionalidade" type="radio" value="estrangeira">Estrangeira
                </td>
            </tr>
            <tr>
                <td>UF de Nascimento</td>
                <td><select name="estado">
                        <option value="#">&nbsp</option>
                        <option value="MT">MT</option>
                        <option value="MS">MS</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Estado Civil</td>
                <td><select name="estado_civil">
                        <option value="#">&nbsp</option>
                        <option value="solteiro">Solteiro</option>
                        <option value="casado">Casado</option>
                        <option value="outros">Outros</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Profissão</td>
                <td><select name="profissao">
                        <option value="#">&nbsp</option>
                        <option value="nenhuma">Nenhuma</option>
                        <option value="outros">Outros</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Religião</td>
                <td><select name="religiao">
                        <option value="#">&nbsp</option>
                        <option value="catolica">Católica</option>
                        <option value="nenhuma">Nenhuma</option>
                        <option value="outros">Outros</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Recebe escolarização<br/>em outro espaço</td>
                <td>
                    <select name="rec_esc_outro_espaco">
                        <option value="#">&nbsp</option>
                        <option value="sim">Sim</option>
                        <option value="nao">Não</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Aluno com deficiência, transtorno global do<br/>desenvolvimento ou altas habilidades/Superdotação</td>
                <td><input name="deficiencia" type="radio" value="sim">Sim
                    <input name="deficiencia" type="radio" value="nao">Não
                </td>
            </tr>
            <tr>
                <td>Recomendações Médicas</td>
                <td><textarea name="rec_medicas" rows="10" cols="40"></textarea></td>
            </tr>
            <tr>
                <td colspan=2 align="center"><input type="submit" name="Submit" value="Cadastrar"></td>
            </tr>
        </table>
    </form>
</body>

<?php
include('connection.php');

$matricula = isset($_POST["matricula"]) ? $_POST['matricula'] : "[não informado]" ;
$nome = isset($_POST["nome"]);
$data_nascimento = isset($_POST["data_nascimento"]);
$nacionalidade = isset($_POST["nacionalidade"]);
$estado = isset($_POST["estado"]);
$estado_civil = isset($_POST["estado_civil"]);
$profissao = isset($_POST["profissao"]);
$religiao = isset($_POST["religiao"]);
$rec_esc_outro_espaco = isset($_POST["rec_esc_outro_espaco"]);
$deficiencia = isset($_POST["deficiencia"]);
$rec_medicas = isset($_POST["rec_medicas"]);

$sql = "INSERT INTO dados_pessoais (matricula,nome,data_nascimento,
        nacionalidade,estado,estado_civil,profissao,religiao,rec_esc_outro_espaco,deficiencia
        rec_medicas) VALUES ('$matricula,'$nome','$data_nascimento',
                '$nacionalidade','$estado','$estado_civil','$profissao','$religiao',
                        '$rec_esc_outro_espaco','$deficiencia',
                                '$rec_medicas')";

$result = mysql_query($sql);
if($result)
    echo "Aluno cadastrado com sucesso!";
else 
    echo "Erro ao cadastrar aluno";

? > Home Back

<?php
$server = "127.0.0.1:3306";
$database = "sistema_escolar";
$username = "root";
$password = "";

$con = mysql_connect($server,$username,$password);
if(!$con)
{
    die('Não foi possível conectar ao servidor: '.mysql_error());
}
/* echo 'Conectado com servidor'; */ 

echo "<br/>";

$db = mysql_select_db($database,$con);
if(!$db)
{
    die('Erro ao conectar com o banco de dados: '.mysql_error());
}
/* echo 'Conectado com o banco de dados'; */

? >

    
asked by anonymous 31.08.2015 / 21:14

4 answers

1

At the beginning of your php file you are trying to start an operation with operador ternário but it is badly formatted;

$matricula = isset($_POST["matricula"]) ? $_POST['matricula'] : "[não informado]" ;

This ternary operation is checking if the variable $matricula has the same value as $_POST['matricula'] but you have not stored anything in the variable before, so it will return false .

You can simplify this by doing;

if (isset($_POST['matricula']):
$matricula = $_POST['matricula'];
else:
$matricula = 'não informado';
endif;
    
31.08.2015 / 21:23
0

Your query is wrong. You can not simply pass the variables as if they were parameters, so instead of doing this:

$sql = "INSERT INTO dados_pessoais (matricula,nome,data_nascimento,      nacionalidade,estado,estado_civil,profissao,religiao,rec_esc_outro_espaco,deficiencia, rec_medicas) VALUES '$matricula,'$nome','$data_nascimento',               '$nacionalidade','$estado','$estado_civil','$profissao','$religiao',
'$rec_esc_outro_espaco','$deficiencia',
'$rec_medicas')";

Do this:

$sql = "INSERT INTO dados_pessoais (matricula,nome,data_nascimento,        nacionalidade,estado,estado_civil,profissao,religiao,rec_esc_outro_espaco,deficiencia, rec_medicas) 
VALUES (' . $matricula . ',' . $nome . ',' . $data_nascimento .','. $nacionalidade . ',' . $estado . ',' . $estado_civil . ',' . $profissao . ',' . $religiao . ','. $rec_esc_outro_espaco . ',' . $deficiencia . ','$rec_medicas . ')";

Prefer to use parameters in Queryes and filters to get data from the $ _POST arrays, as quoted here .

    
31.08.2015 / 21:25
0

To know the error returned from the database, use the mysql_error() function, because sql seems to be a syntax error, it lacks a comma ( , ) in the penultimate field call.

INSERT INTO ... deficiencia rec_medicas)
virgula aqui --------------^

To get error from a query:

$result = mysql_query($sql) or die(mysql_error());
    
31.08.2015 / 21:24
0

Thank you guys, besides missing the "," before rec_medicas, I followed the steps of using parameters in querys. The corrected code:

<?php
include('connection.php');

$matricula = isset($_POST["matricula"]);
$nome = isset($_POST["nome"]);
$data_nascimento = isset($_POST["data_nascimento"]);
$nacionalidade = isset($_POST["nacionalidade"]);
$estado = isset($_POST["estado"]);
$estado_civil = isset($_POST["estado_civil"]);
$profissao = isset($_POST["profissao"]);
$religiao = isset($_POST["religiao"]);
$rec_esc_outro_espaco = isset($_POST["rec_esc_outro_espaco"]);
$deficiencia = isset($_POST["deficiencia"]);
$rec_medicas = isset($_POST["rec_medicas"]);

$sql = "INSERT INTO dados_pessoais (matricula,nome,data_nascimento,
        nacionalidade,estado,estado_civil,profissao,religiao,rec_esc_outro_espaco,deficiencia,
        rec_medicas) VALUES ('.$matricula.','.$nome.','.$data_nascimento.',
                '.$nacionalidade.','.$estado.','.$estado_civil.','.$profissao.','.$religiao.',
                        '.$rec_esc_outro_espaco.','.$deficiencia.',
                                '.$rec_medicas.')";

$result = mysql_query($sql) or die (mysql_error());
if($result)
    echo "Aluno cadastrado com sucesso!";
else 
    echo "Erro ao cadastrar aluno";

? > Home Back

    
01.09.2015 / 00:25