Combobox [RESOLVIDO]

1. Combobox [RESOLVIDO]

Cristiano
cpa83

(usa Debian)

Enviado em 07/10/2010 - 15:33h

Boa tarde , sou novato no php e estou fazendo um sistema de ocorrências, são três tabelas:unidade,problema e ocorrências.Na tabela ocorrências puxo uma chave estrangueira das tabelas unidade e problema.Na tela de chamado da ocorrência coloquei um combobox para a unidade e outro para o problema a descrição do problema e o nome do usuário e feita no campo texto.O meu problema que na hora de gravar a ocorrência não esta salvando na tabela ocorrèncias os dados que estão no combobox que são chaves das tabelas unidade e problema.Estou usando o banco postgres.
Alguém pode me ajudar?


  


2. Re: Combobox [RESOLVIDO]

Guilherme José Schneider
gjschneider92

(usa openSUSE)

Enviado em 07/10/2010 - 17:01h

Bom, também sou novato, mas duas cabeças pensantes são melhores que uma certo?

Quando vc pucha as informações de outras tabelas vc as lista na página ou nao?


3. POSTA O TEU CÓDIGO

Paulo
henbran

(usa Debian)

Enviado em 07/10/2010 - 17:02h

OS CÓDIGOS HTML / PHP / JAVASCRIPT AQUI PARA NÓS ANALISARMOS.
TENHA SEMPRE O HÁBITO DE COMENTAR OS CÓDIGOS POIS ISSO FACILITA O TEU E O NOSSO ENTENDIMENTO NO PROJETO.


4. Re: Combobox [RESOLVIDO]

Guilherme José Schneider
gjschneider92

(usa openSUSE)

Enviado em 07/10/2010 - 17:06h

Realmente ficaria bem melhor com o código


5. Re: Combobox [RESOLVIDO]

Cristiano
cpa83

(usa Debian)

Enviado em 07/10/2010 - 17:06h

Esse é o ocorrencias.php

<html>
<head>
<title>Ocorrências</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<form name="form1" method= get action="inserir.php">
<table width="90%" border="0" cellpadding="4" cellspacing="2">
<tr valign="top">
<td colspan="2" bgcolor="#CCCCCC"> Sistema de Ocorr&ecirc;ncias Hospitalares</td>
</tr>
<tr valign="top">
<td colspan="2"> Aqui voc&ecirc; pode fazer sua ocorr&ecirc;ncia.</td>
</tr>
<tr valign="top">
</td>

</tr>
</table>

<?
//combobox unidade
require_once("conexao.php");
require_once("consultaI.php");
$queryunidade = "SELECT * FROM unidade";
//enviando ela para o banco
$queryunidade = pg_query($queryunidade);
//criando o select
?>
<td>&nbsp;<td>
<td>Local:<td><br>
</td><select name="unidade"></td>
<?
//pegando os dados
while($dadosunidade = pg_fetch_array ($queryunidade))
{
//mostrando eles (dados) em forma de options
?>
<option value="<?= $dadosunidade['unidade'] ?>">
<?= $dadosunidade['unidade'] ?>
</option>

<?
}

// aqui funciona

//combobox problema
require_once("conexao.php");
$queryproblema = "SELECT * FROM problema";

//enviando ela para o banco
$queryproblema = pg_query($queryproblema);
//criando o select
?>
<td><p>&nbsp;</p><td>
<td>Problema:<td><br>
</td><select name="problema"></td>
<?
//pegando os dados
while($dadosproblema = pg_fetch_array ($queryproblema))

{
//mostrando eles (dados) em forma de options
?>
<option value="<?=$dadosproblema['id_problema'] ?>">
<?= $dadosproblema['problema'] ?>
</option>
<?
}

?>

<p>
<p>&nbsp; </p>
<td><p>identicacao:</td><br>
<td><input type="text" size="50" name="identificacao" ></td>
</p>
<p>&nbsp; </p>
<p>descricao<br>
<textarea name="descricao" rows="10" cols="40"></textarea>
<br>
</p></td>
<td> <p>&nbsp; </p>
<p>&nbsp;</p>
</td>
</tr>
Unidade:<input type="text" size="20" name = "unidade"><br>
Problema:<input type="text" size="20" name = "problema"><BR>

<tr valign="top">
<td colspan="2">
<br><input type="submit" name="envia" value="Enviar">
<input type="reset" name="cancela" value="Cancelar">
</td>


</form>
</body>
</html>


Esse é o inserir.php

<HTML>
<HEAD>
<TITLE>Inserir</TITLE>
</HEAD>
<BODY>
<?
require_once("conexao.php");

$identificacao = $_GET['identificacao'] ;
$descricao = $_GET['descricao'] ;
$unidade = $_GET['unidade'] ;
$problema= $_GET['problema'] ;
$inseri ="INSERT INTO ocorrencias (identificacao,descricao,unidade,problema) VALUES ('$identificacao','$descricao','$unidade','$problema')";

if ($c->Execute($inseri) == false)
{
echo 'Erro de inserção: '.$c->ErrorMsg().'<BR>';
}
else {
echo "Inserido com Sucesso.";
}
?>


</BODY>
</HTML>



6. Re: Combobox [RESOLVIDO]

Guilherme José Schneider
gjschneider92

(usa openSUSE)

Enviado em 07/10/2010 - 17:17h

Colega faça um teste...

depois do - INSERT INTO... - coloque:
echo $inseri;

e logo depois coloque

die;

poste o que aconteceu






7. ORIENTAÇÃO A OBJETOS...

Paulo
henbran

(usa Debian)

Enviado em 07/10/2010 - 18:52h

Montei e trabalho com uma estrutura de conexão e execução de sql's, usando os recursos da PDO (1 espécie de recurso de abstração de banco de dados onde vc pode mudar de banco de dados sem se preocupar com os códigos php). Uma mão na roda, amigo.
Procure sempre que possivel separar HTML do PHP.
Teste sempre tuas strings SQL no banco (pelo mysqlAdmin, ou phpmyadmin).
Tente rever teus conceitos de desenvolvimento, talvez seja momento de você pensar em AJAX.
Precisando, pode nos procurar aqui. As tuas dúvidas ajudará a muitos leigos e expertos em dificuldades diversas.
-----------------------------------
CONEXÃO AO BD: salve como Banco.php
<?php

class Banco {

public $con;
public $msg;
private $dC;

private $tipo = "mysql";
private $host = "localhost";
private $bd = "nomeDoBancoDeDados";
private $user = "usuarioDoBD";
private $pass = "senhaDoBD";

public function conectar() {

$this->tipoBd();
if ($this->con) {
try {
$this->con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
$this->msg = "Erro de conexão com o banco de dados: Código: " . $e->getCode() . "Mensagem " . $e->getMessage() . "hora: " . date('H:i:s');
}
} else {
echo "Erro na definição PDO do banco de dados!";
exit;
}
}

private function tipoBd() {

try {
switch ($this->tipo) {
case 'mysql':
try {
$this->con = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->bd, $this->user, $this->pass);
} catch (Exception $exc) {
$this->msg = "Erro de coneção com o banco de dados MySql. " . $exc->getTraceAsString();
}
break;
case 'pgsql':
$this->con = new PDO("pgsql:dbname={" . $this->bd . "};user={" . $this->user . "}; password={" . $this->pass . "};host=" . $this->host);
break;
case 'oci8':
$tns = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" . $this->host . ")(PORT=1521)))(CONNECT_DATA=(SID=" . $this->bd . ")))";
$this->con = new PDO("oci:dbname=" . $tns, $this->user, $this->pass, array(PDO::ATTR_PERSISTENT => true));
break;
case 'mssql':
$this->con = new PDO("mssql:host={" . $this->host . "},1433;dbname={" . $this->bd . "}", $this->user, $this->pass);
break;
}
} catch (Exception $exc) {
echo $exc->getTraceAsString();
exit;
}
}



}
?>
//////////////////////////////
arquivo cmdSql.php
<?php
//echo "dccsd";exit;
/* DEFINIÇÃO DESTA CLASSE: Receber as strings básicas Sql e executar (select / insert / update / delete)
* setar o resultado das instruções sql executadas no atributo 'retorno' e ...
* de uma classe extendida dessa se pode gerar a string xml e ...
* exibir o xml
*/

require_once("Banco.php");

class cmdSQL {

public $Banco;
public $msg;
public $lastInsertId;
// quando executado algum insert, guarda o id gerado pelo irsert do registro
public $retorno;
//GUARDA O RETORNO DA INSTRUÇÃO SQL EXECUTADA
public $rs;
// SETA O RECORDSET
public $sql;
// strings sql a executar
public $xml; // retorno transformado em xml

public function __construct() {
$this->Banco = new Banco();
$this->Banco->conectar();
}

//||||||||||||| COMANDOS DE SQL PARA OPERAÇÕES BÁSICAS |||||||||||||||||||||
//++++++++++++++++++++++++++ PESQUISAR ++++++++++++++++++++++++++
public function pesquisar() { // inicio do function PESQUISAR
try {
try // depende do resultado das instruções SQL a seguir
{
$this->rs = $this->Banco->con->prepare($this->sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); // ???????
unset ($this->sql);
$this->rs->execute(); //executa a instrução sql
$this->retorno[n_reg] = $this->rs->rowCount();
$this->retorno[n_cols] = $this->rs->columnCount();
if (($this->retorno[n_reg]) > 0) {
$this->retorno[res] = $this->rs->fetchAll(PDO::FETCH_ASSOC); //Retorna todas as linhas (registros) como um array
} else {
//Mensagem alertando que não econtrou registros
$this->msg = "Registro(s) não encontrado(s).";
}
} catch (Exception $e) {
$this->msg = "\nErro: Código: " . $e->getCode() . "Mensagem " . $e->getMessage();
}
} catch (Exception $exc) {
$this->msg = $this->msg . " <hr> " . $exc->getTraceAsString();
}
return $this->retorno;
}
// fim do function PESQUISAR
//++++++++++++++++++++++++++ INCLUIR ++++++++++++++++++++++++++
public function incluir() {
if (isset($this->Banco->con)) {
try {
$this->rs = $this->Banco->con->prepare($this->sql);
$this->rs->execute();
$this->lastInsertId = $this->Banco->con->lastInsertId();
$this->msg = 'Registro salvo com sucesso!';
} catch (Exception $e) {
$this->msg = "Erro de inclusão: Código: " . $e->getCode() . "Mensagem " . $e->getMessage();
}
}
return $this->retorno;
}

//++++++++++++++++++++++++++ ALTERAR ++++++++++++++++++++++++++
public function alterar() {
if (isset($this->Banco->con)) {
try {
$this->rs = $this->Banco->con->prepare($this->sql);
$this->rs->execute();
$this->msg = 'Registro alterado com sucesso!';
} catch (Exception $e) {
$this->msg = "Erro: Código: " . $e->getCode() . "Mensagem " . $e->getMessage();
}
}
return $this->retorno;
}

//++++++++++++++++++++++++++ EXCLUIR ++++++++++++++++++++++++++
public function excluir() {
if (isset($this->Banco->con)) {
try {
$this->rs = $this->Banco->con->prepare($this->sql);
$this->rs->execute();
$this->msg = 'Registro alterado com sucesso!';
} catch (Exception $e) {
$this->msg = "Erro: Código: " . $e->getCode() . "Mensagem " . $e->getMessage();
}
}
return $this->retorno;
}

public function extraiArrayXml() {
try {
if ($this->retorno[res]) {
foreach ($this->retorno[res] as $lin) {
foreach ($lin as $k => $col) {
$linha .= "<" . $k . ">" . utf8_encode($col) . "</" . $k . ">";
}
}
$this->xml .= "<registros>" . $linha . "</registros>";
}
if ($this->retorno[n_reg])
$this->xml .= "<n_reg>" . $this->retorno[n_reg] . "</n_reg>";
if ($this->retorno[n_cols])
$this->xml .= " <msg> " . $this->retorno[n_cols] . " </msg>";
if ($this->lastInsertId)
$this->xml .= " <lastInsertId> " . $this->lastInsertId . " </lastInsertId>";
if ($this->msg)
$this->xml .= " <msg> " . $this->msg . " </msg>";
} catch (Exception $exc) {
echo "Erro de extração da Array para XML.<hr>" . $exc->getTraceAsString();
}
}

// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EXIBE XML %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
public function exibeXml() {
try {
$this->xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><raiz>" . $this->xml . "</raiz>";
header("Content-type: application/xml");
return $this->xml;
} catch (Exception $exc) {
echo '<msg>Erro de montagem XML!!!<msg>' . $exc->getTraceAsString();
}
}
}

?>
//USE ESTA CLASSE CMDSQL NAS TUAS APLICAÇOES PHP. NÃO MEIXA NO QUE JÁ ESTÁ FUNCIONANDO, SÓ USE.
<?php
require_once("cmdSql.php")

class classeTeste{
private $cmdSql;

public function __construct(){
$this->cmdSql = new cmdSql();
}

public function testeSql(){
$this->cmdSql->sql = "SELECT * FROM tabela";

$this->cmdSql->pesquisar();
echo $this->cmdSql->retorno[res][0][nome];
}
}
?>


paulo.sistema@gmail.com


8. Re: Combobox [RESOLVIDO]

Cristiano
cpa83

(usa Debian)

Enviado em 08/10/2010 - 09:01h

Respondendo ao gjschneider92 , me retornou :
INSERT INTO ocorrencias (identificacao,descricao,unidade,problema) VALUES ('teste','teste','','')


E ao henbran, vlw pela força tb, to tentando aprender php para fazer esse projeto.


9. Re: Combobox [RESOLVIDO]

Cristiano
cpa83

(usa Debian)

Enviado em 08/10/2010 - 09:03h

Só queria explicar que testei esse insert no pgadmimm e funcionou.


10. Re: Combobox [RESOLVIDO]

Cristiano
cpa83

(usa Debian)

Enviado em 13/10/2010 - 14:20h

Ninguém mais pode me ajudar??


11. Re: Combobox [RESOLVIDO]

Guilherme José Schneider
gjschneider92

(usa openSUSE)

Enviado em 13/10/2010 - 14:36h

O que esta acontecendo é o seguinte. Vc tem quatro campos na tabela ocorrencias, mas só esta chegando dois valores, como pode notar, ficou dois campos em branco, ou seja, a informação nao esta chegando até o seu insert.


12. Re: Combobox [RESOLVIDO]

Guilherme José Schneider
gjschneider92

(usa openSUSE)

Enviado em 13/10/2010 - 14:46h

INSERT INTO ocorrencias (identificacao,descricao,unidade,problema) VALUES ('teste','teste','','');

Estes dois espaços ao lado de 'teste', 'teste', teriam que ter algum valor certo?

Entao seu problema é que a informação não esta chegando por inteira no seu insert.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts