Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mr. Smith

Enumerar o formulario de cadastro

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eh soh você executar essa consulta no PHP


$sql = "select count(id) as total_cadastro from tabela";
$exe = mysql_query($sql);
$res = mysql_result($exe,0,'total_cadastro');

// ou isso

$query = "select * from tabela";
$exe_query = mysql_query($query);
$num = mysql_num_rows($exe_query);

você terá o total de registros, logo terá o total de cadastros.(mesma coisa), dae você soh mostrar na tela

 

echo $res;
echo "<br><br>";
echo $num;

:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

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)

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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??

 

http://br.php.net/echo

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, tentei fazer da forma mais simples possível:

 

1. Você tem uma tabela que conterá os registros dos pacientes:

Imagem Postada

 

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">
 <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">
 <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.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

<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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.