Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde Moçada!! Logo que resolvo um pepino (graças a Ajuda de vcs é logico)..vem outro srrss.......
o trem tá pegando para meu lado.
é o seguinte! não sei se é possivel.
Problema:
Já consegui gravar no BD a data de cadastro. Agora preciso saber como que faço para aparecer o numero de cadastro (id_usuario)no formulario e logo que eu digitar os dados da pessoa logo que eu clicar em 'enviar' Apareça uma menssagem com numero referente ao cadastro?
Não sei se fui claro. Vou explicar
Primeiro eu logo (tá ok)
segundo apareça a pagina de cadastro com o numero ou codigo...
Queria só enumerar as paginas de cadastro só pra saber quantos cadsatro fiz no dia. é possivel e como fazer?
obrigado
Ok? deu certo, mas agora queria enumerar o formulario..
O numero seria o codigo de usuario
Tem jeito de enumar cada formulario?
Tem como você trazer o ultimo registro
$sql = "select max(id) as ultimo from tabela";
$exe = mysql_query($sql);
$res = mysql_query($exe,0,'ultimo');
echo $res = $res + 1;
Dae você sempre pega o ultimo numero e soma mais 1
e mostra no formulario, num campo text, readonly(somente leitura)
>
Tem como você trazer o ultimo registro
$sql = "select max(id) as ultimo from tabela";
$exe = mysql_query($sql);
$res = mysql_query($exe,0,'ultimo');
echo $res = $res + 1;
Dae você sempre pega o ultimo numero e soma mais 1
e mostra no formulario, num campo text, readonly(somente leitura)
Dee! não entendi não, VIU? como vou pegar o ultmio registro da tabela?
este comando não deu certo! a logica tá ok mas o codigo não funciona
Haa me desculpa cara.
Eu que errei
$sql = "select max(id) as ultimo from tabela";
$exe = mysql_query($sql);
$res = mysql_result($exe,0,'ultimo');
echo $res = $res + 1;
tenta de novo..
vou te explicar
Seu campo ID na tabela é Auto Numeração ???
Se for ele sempre aumenta mais um a cada cadastro certo ?
Dae o Comando MAX pega o maior ID(numero), se o ultimo cadastro for de ID numero 12, o maior numero eh o 12 entre todos os ID's que tem. O comando Max pega esse valor.
Dae você pega esse valor e soma mais 1 para o novo cadastro no formuário. como fiz no código.
Mas me permita perguntar, para que você quer mostrar o ID no formulario ?
Olha, do jeito que o DEE está mostrando vai até funcionar, mas você vai ter um problema de segurança... Imagina a situação...
Eu entrei no seu site agora e acessei o cadastro. Digamos que o ID no momento é 10. Então, vai colocar no formulário 11, certo? Aí imagina que eu fui tomar um café e não terminei de preencher o cadastro... Já que eu como bastante, demorei 1 hora para voltar... Neste meio tempo, o DEE entrou no mesmo formulário. Vamos as perguntas...
Qual o ID que vai aparecer para ele? 10 + 1, porque eu ainda não terminei o cadastro.
Quando eu enviar o meu cadastro, qual seria o número correto para mim? 12...
Qual o número que ficou no meu cadastro? 11 ou 12, dependendo de onde vai este número...
Qual o número que ficou no cadastro do DEE? 11...
Se a idéia é que o usuário tenha o número para depois poder fazer qualquer consulta, não é a melhor forma. O ideal é cadastrar e depois de cadastrado, utilizando a função mysql_insert_id pegar o último ID inserido e exibir APÓS o cadastro ter sido efetuado.
Carlos Eduardo
Carlos! Boa Noite! Obrigado por me responder!
Na verdade é o seguinte!! este sistema na qual estou desenvolvendo é para cadastro de pacientes para marcação de consultas médicas em uma unidade de saúde.
O objetivo é fazer com que o usuario do sistema (que fará o cadastro do paciente)quando logar! este sistema deverá abrir um formulário de cadastro enumerado(a cada cadastro realizado)// a pagina de cadastro está em arquivo chamado CADpaciente.php(no formulario teria os campos para serem preenchidos)
Exemplo:
Cadastro nº: 01
nome: Fulando de Tal
CPF:
Edereço
O numero acima mostrado seria unico para um paciente X, Entendeu?
Logo que o usuário for realizar o cadastro do paciente Y o Formulario terá numero =2
Como posso fazer isso. Eu também preciso que este numero seja uma referncia de cadastro do paciente caso ele volte a unidade. seria uma identificação do paciente.
Me ajudem moçada...........Preciso de uma lUZ... tá dificil mesmo..
VAlew!
>
Eu entrei no seu site agora e acessei o cadastro. Digamos que o ID no momento é 10. Então, vai colocar no formulário 11, certo? Aí imagina que eu fui tomar um café e não terminei de preencher o cadastro... Já que eu como bastante, demorei 1 hora para voltar... Neste meio tempo, o DEE entrou no mesmo formulário...
O Carlos está totalmente correto quanto ao problema, a não ser que você trabalhe com reserva de registro seu cadastro não funcionará adequadamente.
>
O numero acima mostrado seria unico para um paciente X, Entendeu?
Logo que o usuário for realizar o cadastro do paciente Y o Formulario terá numero =2
Como posso fazer isso. Eu também preciso que este numero seja uma referncia de cadastro do paciente caso ele volte a unidade. seria uma identificação do paciente.
>
Se a idéia é que o usuário tenha o número para depois poder fazer qualquer consulta, não é a melhor forma. O ideal é cadastrar e depois de cadastrado, utilizando a função mysql_insert_id pegar o último ID inserido e exibir APÓS o cadastro ter sido efetuado.
Segundo a solução do Carlos:
1. Você tem um formulário (nesse formulário não vai mostrar o ID do paciente porque você ainda não sabe qual vai ser)
2. Seu usuário envia o cadastro
3. Seu PHP processa, valida e grava os dados no banco
4. Você utiliza mysql_insert_id logo após o INSERT para recuperar o ID real do usuário cadastrado
5. Você devolve para o usuário alguma coisa como: "Paciente cadastrado, ID número ..."
É a solução mais simples, prática e eficiente.
>
Segundo a solução do Carlos:
1. Você tem um formulário (nesse formulário não vai mostrar o ID do paciente porque você ainda não sabe qual vai ser)
2. Seu usuário envia o cadastro
3. Seu PHP processa, valida e grava os dados no banco
4. Você utiliza mysql_insert_id logo após o INSERT para recuperar o ID real do usuário cadastrado
5. Você devolve para o usuário alguma coisa como: "Paciente cadastrado, ID número ..."
É a solução mais simples, prática e eficiente.
Exatamente isto.
Carlos Eduardo
mas como usar esta função para retorna o Codigo logo que cadastrado?Onde coloco ela?
Como que faria esta menssagem aparecer??
obrigado
>
mas como usar esta função para retorna o Codigo logo que cadastrado?Onde coloco ela?
Logo após a query de inserção.
http://br.php.net/mysql_insert_id
>
Como que faria esta menssagem aparecer??
Carlos Eduardo
Pessoal estou utilizando o seguinte codigo para meu problema:
"$sql = "SELECT LAST_INSERT_ID()"; // consulta
$con = mysql_query($sql) or die ("PROBLEMAS COM A CONSULTA; ".mysql_error()); // enviamos a consulta ao SGBD
$res = mysql_fetch_row($con); // recuperamos o que for retornado em um array - $res"
tá mostrando beleza o ultimo registro em outra pagina logo que submeto o forumalrio. o problema é que toda hora que atualizo a pagina o id é incrementado
Como que faço para que o id seja unico para o registro? lembrando que é chave priamria no bd mySql
TOda hora que aperto F5 o id_usuario é incrementado no BD... haja memoria srrsrs
outra coisa como que faço para aparecer uma menssagem "bonitinha " para o usuario tipo:
"Seu numero de cadastro é: " ou "O Código do PacienteX é: "
lembrando que preciso pesquisar o paciente atraves deste numero.
Obrigado! Preciso Urgente de uma dica DIVINA>>>> valew
Olha, acho que você não leu a referência passada, do MYSQL_INSERT_ID. Não tem consulta nenhuma.
Carlos Eduardo
Bom, tentei fazer da forma mais simples possível:
1. Você tem uma tabela que conterá os registros dos pacientes:
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.visualcom.com.br/imagens/pacientes.png&key=b9e004c12a2fb9a04c923056f927689b67a2611bf27b7fee415a837417407388" alt="Imagem Postada" class="bbc_img">
Para fazer o cadastro você precisa primeiro de um controlador:
Pacientes.php
<?php
$endereco = '';
$etype = 1;
$idade = '';
$nome = '';
$vtype = 1;
if ( isset( $_POST[ 'enviar' ] ) && ( $_POST[ 'enviar' ] == 'Enviar' ) ){
$endereco = isset( $_POST[ 'endereco' ] ) && !empty( $_POST[ 'endereco' ] ) ? $_POST[ 'endereco' ] : null;
$idade = isset( $_POST[ 'idade' ] ) && !empty( $_POST[ 'idade' ] ) ? $_POST[ 'idade' ] : null;
$nome = isset( $_POST[ 'nome' ] ) && !empty( $_POST[ 'nome' ] ) ? $_POST[ 'nome' ] : null;
if ( $endereco && $idade && $nome ){
require 'Paciente.php';
$pm = null;
try {
$pm = new Paciente( $nome , $endereco , $idade );
$id = $pm->insert();
$vtype = 2;
require 'pacienteView.php';
} catch ( InvalidArgumentException $e ){
$message = $e->getMessage();
$etype = 2;
require 'erro.php';
} catch ( RuntimeException $e ){
$error = Paciente::$error;
$errno = Paciente::$errno;
$etype = 3;
require 'erro.php';
}
} else require 'erro.php';
} else require 'pacienteView.php';
O controlador é o kara:
1. Se não for enviado nenhum dado, ele irá abrir o formulário de cadastro.
2. Se for enviado algum dado ele irá receber, validar, inserir no banco de dados e lhe mostrar o formulário novamente com os dados preenchidos e com o id gerado.
Para mostrar o formulário você precisará de uma view:
pacienteView.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml%22>)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><?php echo $vtype == 1 ? 'Cadastro de Pacientes' : 'Paciente Cadastrado'; ?></title>
<style type="text/css">
fieldset {
width : 290px;
}
label {
display : block;
}
label span {
display : block;
float : left;
width : 80px;
text-align : right;
}
input[type="submit"] {
float : right;
width : 80px;
margin : 10px 4px 0 0;
}
</style>
</head>
<body>
<form action="Pacientes.php" method="post">
<fieldset>
<legend>Pacientes</legend>
<?php
if ( $vtype == 2 ){
?>
<label>
<span>Código: </span>
<input id="codigo" type="text" readonly="readonly" value="<?php echo $id; ?>" />
</label>
<?php
}
?>
<label>
<span>Nome:</span>
<input type="text" name="nome" value="<?php echo $nome; ?>" />
</label>
<label>
<span>Endereço:</span>
<input type="text" name="endereco" value="<?php echo $endereco; ?>" />
</label>
<label>
<span>Idade:</span>
<input type="text" name="idade" value="<?php echo $idade; ?>" />
</label>
<input type="submit" name="enviar" value="Enviar" />
</fieldset>
</form>
</body>
</html>
A view é a forma que o usuário tem para interagir com a aplicação, como o usuário pode inserir dados inválidos ou alguma coisa errada pode acontecer, então precisamos também de uma página de erros:
erro.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml%22>)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Opz !!</title>
</head>
<body>
<h1>Opz !!</h1>
<?php
switch ( $etype ){
case 1:
print( '<h2>Todo o formulário deve ser preenchido.</h2>' );
break;
case 2:
printf( '<h2>%s</h2>' , isset( $message ) ? $message : 'Dados inválidos.' );
break;
case 3:
print( '<h2>Não foi possível gravar o registro</h2>' );
printf( '<p><strong>Código do erro: </strong><span>%s</span><br />' , $errno );
printf( '<strong>Descrição do erro: </strong><span>%s</span></p>' , $error );
break;
}
?>
<p>
<a href="#" title="Clique para voltar" onclick="history.back();">Voltar</a>
</p>
</body>
</html>
Bom, agora temos um controlador, uma view e uma página de erros. Precisamos da model:
Paciente.php
<?php
require 'Model.php';
class Paciente extends Model {
private $nome;
private $endereco;
private $idade;
private $conn;
static public $error;
static public $errno;
public function __construct( $nome , $endereco , $idade ){
parent::__construct();
if ( is_numeric( $idade ) && ( (int) $idade > 0 ) ){
$this->nome = mysql_real_escape_string( $nome );
$this->endereco = mysql_real_escape_string( $endereco );
$this->idade = (int) $idade;
} else throw new InvalidArgumentException( 'A idade deve ser um número e deve ser maior que 0' );
}
public function insert(){
$ret = false;
$conn = $this->getConn();
$query = sprintf( 'INSERT INTO `pacientes`(`nome`,`endereco`,`idade`) VALUES("%s","%s",%d);',
$this->nome,
$this->endereco,
$this->idade
);
if ( @mysql_query( $query , $conn ) ) $ret = mysql_insert_id();
else {
self::$error = mysql_error( $conn );
self::$errno = mysql_errno( $conn );
throw new RuntimeException( 'Não foi possível gravar os dados' );
}
return $ret;
}
}
Como pode ver, a model recebe os dados, prepara e insere; Para fazer isso, ela precisa de uma conexão com o banco de dados, para não ficar re-escrevendo a conexão em cada model, utilizamos uma classe base e derivamos ela:
Model.php
<?php
class Model {
const DB_HOST = 'servidordebanco';
const DB_NAME = 'nomedobanco';
const DB_PSWD = 'senhadobanco';
const DB_USER = 'usuariodobanco';
static private $conn;
public function __construct(){
$this->connect();
}
private function connect(){
if ( ( !self::$conn ) || mysql_ping( self::$conn ) ){
if ( self::$conn = mysql_connect( self::DB_HOST , self::DB_USER , self::DB_PSWD ) ){
mysql_select_db( self::DB_NAME );
mysql_set_charset( 'utf8' );
}
}
}
protected function getConn(){
$this->connect();
return self::$conn;
}
}
Como todo o contexto é referente ao paciente, então criamos um index.php que chama o controlador:
index.php
<?php
require 'Pacientes.php';
Certo, funciona assim:
1. O usuário acessou sua aplicação, o index.php chamou o controlador
2. Como o usuário ainda não enviou o formulário então mostramos o formulário vazio para ele.
3. Assim que o usuário preencher os dados no formulário e enviar os dados, o controlador irá receber e pré-validar esses dados e então chamar a Model
4. A model irá receber esses dados e preparar os dados.
5. Se a model não rejeitar os dados o controlador assume que tudo está correto e então manda inserir esses dados.
6. Se os dados forem inseridos com sucesso o controlador irá receber o id do cadastro feito e chamar novamente a view.
7. Como agora o usuário inseriu um novo registro, o formulário além de mostrar os campos populados irá também mostrar um novo campo que contém o id do cadastro feito.
;)
Agora simmmmmmmmmmmmm!Vcs são os Feras do PHP. Obrigado!
Agora como que eu faço para aparecer uma janela tipo o que tem no java... mostrando o numero do adastro para o usuario logo que envia...
Uma janela com uma interface legal.. será que é possivel? Tipo um janela com efeitos legais...
será que é possivel? onde devo coloco-la?
>
Agora como que eu faço para aparecer uma janela tipo o que tem no java... mostrando o numero do adastro para o usuario logo que envia...
Uma janela com uma interface legal.. será que é possivel? Tipo um janela com efeitos legais...
será que é possivel? onde devo coloco-la?
Sim é possível, não só é possível como é simples.
Para fazer isso você deverá substituir na view, no local que exibe o formulário com o código para exibir da forma que você quiser.
Porém, a partir daqui você deverá fazer alguma coisa e, se não der certo, mostrar o que você tentou fazer para que possamos te ajudar.
João Batista! Bom dia! Ainda não entendi.........
COmo fazer?
A minha View é meu formulario por onde entro com os dados do paciente....
TEria jeito de mostrar um exemplo para mim, se possivel..
Obrigado!
>
TEria jeito de mostrar um exemplo para mim, se possivel..
Sem chance amigo, você precisa agora começar a me ajudar a te ajudar.
Tente fazer e se algum erro ocorrer, mostre o erro e o código que você fez para que possamos te ajudar.
;)
<style>
</style>
</head>
<body>
<form action="Pacientes.php" method="post">
<fieldset>
<legend>Pacientes</legend>
<?php
if ( $vtype == 2 ){
?>
<label>
<span>Código: </span>
<input id="codigo" type="text" readonly="readonly" value="<?php echo $id; ?>" />
</label>
<?php
}
?>
<label>
<span>Nome:</span>
<input type="text" name="nome" value="<?php echo $nome; ?>" />
</label>
<label>
<span>Endereço:</span>
<input type="text" name="endereco" value="<?php echo $endereco; ?>" />
</label>
<label>
<span>Idade:</span>
<input type="text" name="idade" value="<?php echo $idade; ?>" />
</label>
<input type="submit" name="enviar" value="Enviar" />
</fieldset>
</form>
</body>
</html>
a ideia do formulario.... está seguindo a mesma linha de raciocinio...do seu exemplo..
é logico que possui mais campos para preencher...
Queria saber como vou colocar a menssagem ou melhor como fazer como que ao clicar no botão enviar me informe o Código referente..
A questão que não estou conseguindo fazer mesmo.
Não queria colocar simplesmente um "Echo: Menssagem"
Não queria também que faça pra mim... mas preciso saber por onde começar...
valew!
>
Não queria colocar simplesmente um "Echo: Menssagem"
Porque não? Não tente reinventar a roda. Faça o simples. Para formatar esta mensagem, você pode usar CSS. Tipo, exibe a mensagem dentro de uma div com uma class="mensagem", por exemplo, e formata a mensagem de acordo com o que você quer.
Carlos Eduardo
>
>
Não queria colocar simplesmente um "Echo: Menssagem"
Porque não? Não tente reinventar a roda. Faça o simples. Para formatar esta mensagem, você pode usar CSS. Tipo, exibe a mensagem dentro de uma div com uma class="mensagem", por exemplo, e formata a mensagem de acordo com o que você quer.
Carlos Eduardo
Não entendi!CArlos!
Faça um echo 'Mensagem', e formate esta mensagem com CSS.
Carlos Eduardo
>
Faça um echo 'Mensagem', e formate esta mensagem com CSS.
Carlos Eduardo
Certo CArlos!
mas DEvo colocaar esta menssagem dentro das tags <form>? ou depois do botão enviar...
To meio perdido onde colocar.... o meu está dando ERRO..
>
mas DEvo colocaar esta menssagem dentro das tags <form>? ou depois do botão enviar...
To meio perdido onde colocar....
Você deve colocar no lugar que achar adequado, existe uma condição dentro do form que verifica se o tipo é 2, se for 2 significa que o usuário acabou de ser cadastrado. Então para mostrar apenas a mensagem você pode tirar a condição de dentro do form e caso ela for 2 você mostra a mensagem da forma que quiser, senão você mostra o form.
>
...o meu está dando ERRO..
Se um erro ocorreu, não basta dizer que ele ocorreu, é fundamental que você diga qual é a mensagem de erro.
Que codição é essa?? Condição 2 ?
Eh soh você executar essa consulta no PHP
// ou isso
você terá o total de registros, logo terá o total de cadastros.(mesma coisa), dae você soh mostrar na tela
:D