Eu estou com um problema aqui com um ficheiro php!
Eu tenho de criar um formulário para inserir dados numa base de dados.
E tenho de ter as mensagens de validação: "Dados enviados com sucesso" ou "Faltam campos".
Ele está a mandar a mensagem "Faltam Campos" logo na primeira vez que acedo ao formulário! E não devia fazer isso!
Se alguém me puder ajudar, fico muito agradecido!
Ficheiro lancar.php
<?php header ('Content-type: text/xml'); echo '<?xml version="1.0" encoding="utf-8"?>'; echo '<?xml-stylesheet type="text/xsl" href="lancar.xsl"?>'; $server = "localhost"; $server_ip = "localhost"; $user = "root"; $pass = ""; $db = "bdescola"; $cod_professor = $_POST["cod_professor"]; $cod_aluno = $_POST["cod_aluno"]; $cod_disciplina = $_POST["cod_disciplina"]; $nota = $_POST["nota"]; $data = $_POST["data"]; ?> <Lancar> <?php if($_REQUEST){ if ($_REQUEST['cod_professor'] and $_REQUEST['cod_disciplina'] and $_REQUEST['cod_aluno'] and $_REQUEST['nota'] and $_REQUEST['data']) { $connection = mysql_connect($server, $user, $pass) or die ("Unable to connect!"); mysql_select_db($db) or die ("Unable to select database!"); $sql1 = "INSERT INTO lancarnotas (cod_professor,cod_aluno,cod_disciplina,nota,data) VALUES ('$cod_professor','$cod_aluno','$cod_disciplina','$nota','$data')"; $resultado1 = mysql_query($sql1) or die (mysql_error()); echo '<msg>Dados enviados com Sucesso!</msg>'; echo "<cod_professor></cod_professor>"; echo "<cod_disciplina></cod_disciplina>"; echo "<cod_aluno></cod_aluno>"; echo "<nota></nota>"; echo "<data></data>"; } else { echo '<erro>Campos por preencher!</erro>'; echo "<cod_professor>$cod_professor</cod_professor>"; echo "<cod_disciplina>$cod_disciplina</cod_disciplina>"; echo "<cod_aluno>$cod_aluno</cod_aluno>"; echo "<nota>$nota</nota>"; echo "<data>$data</data>"; } }else{ echo "<cod_professor></cod_professor>"; echo "<cod_disciplina></cod_disciplina>"; echo "<cod_aluno></cod_aluno>"; echo "<nota></nota>"; echo "<data></data>"; } ?> </Lancar>
ficheiro lancar.xml
<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" href="lancar.xsl"?> <Lancar> <cod_professor></cod_professor> <cod_disciplina></cod_disciplina> <cod_aluno></cod_aluno> <nota></nota> <data></data> <erro></erro> <msg></msg> </Lancar>
ficheiro lancar.xsl
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:include href="base.xsl"/> <xsl:template match="Lancar"> <form action="lancar.php" method="post"> <xsl:apply-templates select="cod_professor"/> <xsl:apply-templates select="cod_disciplina"/> <xsl:apply-templates select="cod_aluno"/> <xsl:apply-templates select="nota"/> <xsl:apply-templates select="data"/><br/> <input type="submit" name="botao" value="Enviar"/> <br/> <xsl:apply-templates select="msg"/> <xsl:apply-templates select="erro"/> </form> </xsl:template> <xsl:template match="cod_professor"> Codigo do Professor: <input type="text" name="cod_professor" value="{text()}"/> <br/> </xsl:template> <xsl:template match="cod_disciplina"> Codigo da Disciplina: <input type="text" name="cod_disciplina" value="{text()}"/> <br/> </xsl:template> <xsl:template match="cod_aluno"> Codigo do Aluno: <input type="text" name="cod_aluno" value="{text()}"/> <br/> </xsl:template> <xsl:template match="nota"> Nota: <input type="text" name="nota" value="{text()}"/> <br/> </xsl:template> <xsl:template match="data"> Data: <input type="text" name="data" value="{text()}"/> <br/> </xsl:template> </xsl:stylesheet>
Já consegui resolver esse problema.
Mas agora apareceu outro e não sei como fazer!
Eu queria que, por exemplo, inserimos os dados todos no form e enviamos para a base de dados. Mas enganei-me na atribuição da nota: coloquei o 4 mas queria dar 3. Tornava a inserir os dados do aluno, mas colocava a nota correcta, e o php alterava a nota que já existia na base de dados.
Como posso fazer isso?