Mr. Smith 0 Denunciar post Postado Setembro 28, 2009 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
Dee 0 Denunciar post Postado Setembro 28, 2009 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
Mr. Smith 0 Denunciar post Postado Setembro 28, 2009 Ok? deu certo, mas agora queria enumerar o formulario.. O numero seria o codigo de usuario Tem jeito de enumar cada formulario? Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Setembro 28, 2009 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
Mr. Smith 0 Denunciar post Postado Setembro 28, 2009 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
Dee 0 Denunciar post Postado Setembro 28, 2009 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
Matias Rezende 50 Denunciar post Postado Setembro 28, 2009 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
Mr. Smith 0 Denunciar post Postado Setembro 28, 2009 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
João Batista Neto 448 Denunciar post Postado Setembro 28, 2009 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
Matias Rezende 50 Denunciar post Postado Setembro 29, 2009 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
Mr. Smith 0 Denunciar post Postado Setembro 29, 2009 mas como usar esta função para retorna o Codigo logo que cadastrado?Onde coloco ela? Como que faria esta menssagem aparecer?? obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Setembro 29, 2009 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
Mr. Smith 0 Denunciar post Postado Setembro 29, 2009 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
Matias Rezende 50 Denunciar post Postado Setembro 29, 2009 Olha, acho que você não leu a referência passada, do MYSQL_INSERT_ID. Não tem consulta nenhuma. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Setembro 29, 2009 Bom, tentei fazer da forma mais simples possível: 1. Você tem uma tabela que conterá os registros dos pacientes: 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
Mr. Smith 0 Denunciar post Postado Setembro 29, 2009 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
João Batista Neto 448 Denunciar post Postado Setembro 30, 2009 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
Mr. Smith 0 Denunciar post Postado Setembro 30, 2009 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
João Batista Neto 448 Denunciar post Postado Setembro 30, 2009 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
Mr. Smith 0 Denunciar post Postado Setembro 30, 2009 <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