anacarine29 Posted April 29, 2012 at 10:42 PM Report #452161 Posted April 29, 2012 at 10:42 PM Boa noite. Estou a elaborar um projecto em que tenho uma parte de registo de utilizadores num pagina qeb e estou a utilizar o PDO para faze-lo, o meu problema é que tenho 3 tabelas onde preciso de inserir os dados. Uma tabela é a tabela utilizador (utilizadorId - PK, nome, morada,localidade,codigoPostal, nomeUtilizador, password, nivelAcesso), a segunda tabela é a utilizadorContacto(UtilizadorId-PK, ContactoID - PK) e a terceira é a Contacto(ContactoId - PK, valor, tipo). o Código do forms é o seguinte: <form name="regista_utilizador" method="post" action="index.php?pg=registo_ok" enctype="multipart/form-data"> <fieldset> <table align="left" cellspacing="0" cellpadding="0" > <tr> <td colspan="150" > <label> <span>Nome</span> <input type="text" name="nome" class="nome"/> </label> </td> </tr> <tr> <td colspan="150"> <label> <span>Morada</span> <input type="text" name="morada" class="morada"/> </label> </td> </tr> <tr > <td colspan="75"> <label> <span>Localidade</span> <input type="text" name="localidade" class="localidade"/> </label> </td> <td colspan="75"> <label> <span>Código Postal</span> <input type="text" name="cp" class="cp"/> </label> </td> </tr> <tr> <td colspan="75"> <label> <span>Telefone</span> <input type="text" name="telefone" class="telefone"/> </label> </td> <td colspan="75"> <label> <span>Telemóvel</span> <input type="text" name="telemovel" class="telemovel"/> </label> </td> </tr> <tr> <td colspan="75"> <label> <span>E-mail</span> <input type="text" name="email" class="email"/> </label> </td> <td colspan="75"> <label> <span>Contribuinte</span> <input type="text" name="nif" class="nif"/> </label> </td> </tr> <tr> <td colspan="75"> <label> <span>Nome Utilizador</span> <input type="text" name="nome_utilizador" class="utilizador"/> </label> </td> <td colspan="75"> <label> <span>Palavra Passe</span> <input type="text" name="password" class="password"/> </label> </td> </tr> </table> <input type="submit" name="regista_utilizar" value="Registar" class="btn" /> <input type="submit" name="regista_utilizar" value="Cancelar" class="btn" /> </fieldset> </form> O Código que tenho para inseir os dados na bd é o seguinte: <?php $clienteNivelAcesso ='cliente'; $clienteNome = strip_tags(trim($_POST['nome'])); $clienteMorada = strip_tags(trim($_POST['morada'])); $clienteLocalidade = strip_tags(trim($_POST['localidade'])); $clienteCp = strip_tags(trim($_POST['cp'])); $clienteTelefone = strip_tags(trim($_POST['telefone'])); $clienteCTelefone ='telefone'; $clienteTelemovel = strip_tags(trim($_POST['telemovel'])); $clienteCTelemovel ='telemovel'; $clienteEmail = strip_tags(trim($_POST['email'])); $clienteCEmail ='Email'; $clienteNif = strip_tags(trim($_POST['nif'])); $clienteUtilizador = strip_tags(trim($_POST['nome_utilizador'])); $clientePassword = strip_tags(trim($_POST['password'])); $sql_registaCliente = 'INSERT INTO utilizador(nomeUtilizador,nome, morada,localidade, codigoPostal,nif, password,nivelAcesso)'; $sql_registaCliente .='VALUES(:nomeUtilizador,:nome, :morada,:localidade,:codigoPostal,:nif, :password,:nivelAcesso)'; $sql_registaContacto ='INSERT INTO Contacto(valor;tipo)'; $sql_registaContacto .='VALUES(:valor,:tipo)'; try{ $query_registaCliente = $conecta ->prepare($sql_registaCliente); $query_registaCliente -> bindValue(':nomeUtilizador',$clienteUtilizador,PDO::PARAM_STR); $query_registaCliente -> bindValue(':nome',$clienteNome,PDO::PARAM_STR); $query_registaCliente -> bindValue(':morada',$clienteMorada,PDO::PARAM_STR); $query_registaCliente -> bindValue(':localidade',$clienteLocalidade,PDO::PARAM_STR); $query_registaCliente -> bindValue(':codigoPostal',$clienteCp,PDO::PARAM_STR); $query_registaCliente -> bindValue(':nif',$clienteNif,PDO::PARAM_STR); $query_registaCliente -> bindValue(':password',$clientePassword,PDO::PARAM_STR); $query_registaCliente -> bindValue(':nivelAcesso',$clienteNivelAcesso,PDO::PARAM_STR); $query_registaCliente -> execute(); $utilizadorId = $conecta -> lastInsertId(); $sql_registaContacto = $conecta->prepare($sql_registaContacto); $sql_registaContacto -> bindValue(':valor',$clienteTelefone,PDO::PARAM_STR); $sql_registaContacto -> bindValue(':tipo',$clienteCTelefone,PDO::PARAM_STR); $sql_registaContacto -> execute(); A partir daqui já nao sei como fazer, so estou a inserir o telefone, ainda me faltam os valores para o telemovel, email e inseir os id's na tabela utilizadorContactos. Alguem me pode dar uma dica?
anacarine29 Posted May 15, 2012 at 02:23 PM Author Report #455730 Posted May 15, 2012 at 02:23 PM Ja consegui contornar reduzir para duas tabelas onde devo de inserir os dados, mas agr aparece-me um erro . O código que tenho é o seguinte <?php include"Connections/config.php"; $clienteNivelAcesso ='cliente'; $clienteNome = strip_tags(trim($_POST['nome'])); $clienteMorada = strip_tags(trim($_POST['morada'])); $clienteLocalidade = strip_tags(trim($_POST['localidade'])); $clienteCp = strip_tags(trim($_POST['cp'])); $clienteTelefone = strip_tags(trim($_POST['telefone'])); $clienteTelemovel = strip_tags(trim($_POST['telemovel'])); $clienteEmail = strip_tags(trim($_POST['email'])); $clienteNif = strip_tags(trim($_POST['nif'])); $clienteUtilizador = strip_tags(trim($_POST['nome_utilizador'])); $clientePassword = strip_tags(trim(md5($_POST['password']))); $clientePassword_Email = strip_tags(trim($_POST['password'])); $sql_registaCliente = 'INSERT INTO utilizador(nomeUtilizador,nome, morada,localidade, codigoPostal,nif, password,nivelAcesso)'; $sql_registaCliente .='VALUES(:nomeUtilizador,:nome, :morada,:localidade,:codigoPostal,:nif, :password,:nivelAcesso)'; $sql_registaContacto ='INSERT INTO contacto(telefone,telemovel,email, Utilizador_utilizadorId)'; $sql_registaContacto .='VALUES(:telefone,:telemovel,:email,: Utilizador_utilizadorId)'; try{ $query_registaCliente = $conecta ->prepare($sql_registaCliente); $query_registaCliente -> bindValue(':nomeUtilizador',$clienteUtilizador,PDO::PARAM_STR); $query_registaCliente -> bindValue(':nome',$clienteNome,PDO::PARAM_STR); $query_registaCliente -> bindValue(':morada',$clienteMorada,PDO::PARAM_STR); $query_registaCliente -> bindValue(':localidade',$clienteLocalidade,PDO::PARAM_STR); $query_registaCliente -> bindValue(':codigoPostal',$clienteCp,PDO::PARAM_STR); $query_registaCliente -> bindValue(':nif',$clienteNif,PDO::PARAM_STR); $query_registaCliente -> bindValue(':password',$clientePassword,PDO::PARAM_STR); $query_registaCliente -> bindValue(':nivelAcesso',$clienteNivelAcesso,PDO::PARAM_STR); $query_registaCliente ->execute('braguilectra'); $utilizadorId = $conecta -> lastInsertId(); $query_registaContacto = $conecta->prepare($sql_registaContacto); $query_registaContacto -> bindValue(':telefone',$clienteTelefone,PDO::PARAM_STR); $query_registaContacto -> bindValue(':telemovel',$clienteTelemovel,PDO::PARAM_STR); $query_registaContacto -> bindValue(':email',$clienteEmail,PDO::PARAM_STR); $query_registaContacto -> bindValue(':Utilizador_utilizadorId',$utilizadorId,PDO::PARAM_STR); $query_registaContacto -> execute(); echo'<h2>Registo efectuado com sucesso!</h2>'; echo' <p>O seu registo foi efectuado com sucesso! Para aceder ao seu painel <a href="admin/index.php"> CLIQUE AQUI.</a><br/> Ou aceda ao seu painel através da area de Login</p><br/>'; echo'<p>Por motivos de segurança enviamos uma copia do seu registo para o email <strong>'.$clienteEmail.'</strong></p>'; } catch(PDOException $error_registo){ echo/*<h2>Erro ao registar, por favor tente novamente ou informe-nos pelo email contacto@braguilectra.pt</h2>*/$error_registo; } quando tento fazer o registo atraves dos formas aparece-me o seguinte erro: exception 'PDOException' with message 'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected' in C:\wamp\www\Braguilectra\nav\registo_ok.php:59 Stack trace: #0 C:\wamp\www\Braguilectra\nav\registo_ok.php(59): PDOStatement->execute() #1 C:\wamp\www\Braguilectra\index.php(16): include('C:\wamp\www\Bra...') #2 {main} Nao entendo, a conexão foi feita no arquivo config.php. e está indicada no inicio da declaração php.alguem me pode ajudar?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now