• Bem vindo à nossa comunidade - Quer se juntar ao resto dos nossos membros? Registre-se*Registros aprovados pela adminitração

[Tutorial] Corrigindo BUG do cadastro!

lucasxdd

Lord XPZ
Bom galera, vendo esses Web Masters amadores cometerem sempre o mesmo erro, resolvi criar esse tutorial com o intuito de ajudar a solucionar o problema na hora de fazer o cadastro no site! Ele sempre cadastra a primeira conta normal, ai a segunda conta ele já dá o erro de duplicação...

Pois bem...

Para evitar aquele erro faça as seguites modificações:

1° Abra o Enterprise Manager, e selecione a database MuOnline. Clique com o botão direito do mouse e vá em "Design table"(Como na imagem a baixo!).

img1ur.png


2° Após aberto você deverá visualizar a seguinte tela:

http://img692.imageshack.us/img692/5907/img2fl.png

3° Para corrigir o problema você deverá fazer os seguintes passos:

3.1- Selecione o campo Memb___id e clique na chavinha lá em cima, deixando-o assim como Primary Key(Chave primária), isso evita que as contas sejam duplicadas!

3.2- Selecione o campo Memb__guid, e procure lá em baixo, por 'Identity'(destacado em vermelho na imagem anterior), vai estar No, troque para Yes, automaticamente os campos 'Identity Seed' e 'Identity Increment' passarão a ter o valor '1'!

4° Após as modificações sua tela do enterprise manager deverá estar do seguinte modo:

[img width=800 height=600]http://img43.imageshack.us/img43/1623/img3w.png

Caso esteja diferente, volte no inicio do tutorial, e reveja os passos ^^

Bom, por enquanto foi feita a modificação no SQL, agora vamos modificar a página de cadastro!

5° Abra o arquivo de cadastro com um editor de texto qualquer(Dreamweaver, Bloco de notas, Notepad++, PHPEditor o de sua preferencia).

6° Encontre a query de cadastro(em alguns arquivos estarão lá no final, em outros estarão em outro arquivo, vai depender do seu site!), ela estará mais ou menos desse modo:

Exemplo:

"INSERT INTO MEMB_INFO(memb__guid,memb___id,memb__pwd) VALUES('1','$login','$senha')";

Em outros casos:

"INSERT INTO MuOnline.dbo.MEMB_INFO(memb__guid,memb___id,memb__ pwd) VALUES('1','$login','$senha')";

Enfim, não importa o modo em que ele esteja, o importante é entender oque está entre parenteses '(' ')'!

Explicando para um melhor entendimento:

Dentro dos primeiros parenteses , sempre será as colunas do SQL(memb__guid,memb___id,memb__pwd), e dentro do segundo parenteses - após o VALUES - sempre terá os valores a serem inseridos nas colunas, sempre seguindo a ordem que foi colocada nos primeiros parenteses!

Para corrijir esse erro leia o 7° passo:

7° O que deveremos mudar aqui neste arquivo é retirar o memb__guid de dentro do primeiro parenteses(removendo a virgula que vem na frente dele), e remover o valor referente a ele dentro do segundo parenteses(no exemplo o '1', removendo as aspas e a virgula).

Nosso exemplo ficaria assim:

"INSERT INTO MEMB_INFO(memb___id,memb__pwd) VALUES('$login','$senha')";

Em outros casos:

"INSERT INTO MuOnline.dbo.MEMB_INFO(memb___id,memb__pwd) VALUES('$login','$senha')";

8° Agora teste o seu cadastro(na maioria das vezes irá funcionar, porém há excessões).

9° (Caso tenha dado certo não precisa continuar seguindo esse tutorial, basta clicar em agradecer, e ler as observações lá no final xD) Deu um erro diferente, contendo na mensagem algo como: 'INDENTITY_INSERT', calma, não se desespere, tenho a solução também. Procure no mesmo arquivo PHP, editado anteriormente, algo com:

'SET IDENTITY_INSERT MEMB_INFO ON'

Assim que achar você tem 4 soluções a fazer:

Primeira: selecione a linha inteira(desde o primeiro caracter, até o ';'(ponto e virgula)), e apague a linha inteira;

Segundo: Comente a linha, coloque o mouse no inicio da linha e comente ela(Coloque duas barras '//')

Terceiro: Comente a linha de outro modo, no inicio da linha coloque uma barra e um asterisco(/*) e no final(depois de todo o código), coloque um asterisco e uma barra(*/)ATENÇÃO! Para iniciar o comentário deve-se colocar /* e para terminar */

Quarto: Troque ON para OFFATENÇÃO! Não testei esse modo, se não funcionar me avisem que eu removo do tutorial!

10° Teste o cadastro, se der certo, basta agradecer! Se não der, deixem suas dúvidas abaixo, informando a mensagem do erro que analisarei e verei aonde está errado!

OBS: Em alguns sites você poderá encontrar desse modo as QUERY:

$query = COMANDO AQUI!;

$msquery = mssql_query($query);

Ou seja, quando você acharem a query de cadastro, e a ultima informada:

SET IDENTITY_INSERT MEMB_INFO ON

Verifiquem se na frente dela tem algo com 'mssql_query', se tiver sem problemas, se não tiver, olhem oque vai estar na frente do $ e procurem no arquivo alguma coisa com: mssql_query($texto_que_voce_viu); Ai remova ambas as linhas(ou se preferir, remova só a que tem o msql_query)...

Bom galera, é isso, espero que resolva o problema da maioria, quem não conseguir solucionar só postar uma mensagem...

Créditos:

Imagens: Rafael Broken - Mustrike

Texto: Rafael Broken - Mustrike
 

Firefox_RJ

Novato XPZ
Poxa velho, infelizmente continuo com o erro na hora do cadastro. A conta até é cadastrada só que fica dando esse erro:

Não foi possivel executar a query 'insert into vi_curr_info (ends_days,chek_code,used_time,memb___id,memb_name,memb_guid,sno__numb,bill_section,bill_value,bill_hour,surplus_point,surplus_minute,increase_days) values ('2009','1',1234,'teste','gtrhhjng',1,'7','6','3','6','6','2003-11-23','0')'


no meu arquivo php onde está o comando dessa query está assim:




Código:
Por favor, Entrar ou Registrar para ver o conteúdo dos códigos!

Alguma luz?
 
roda isso no query analyzer MuOnline

ALTER TABLE MEMB_INFO ADD creditos int NOT NULL DEFAULT 0

ALTER TABLE MEMB_INFO ADD nascido varchar(50) NULL

ALTER TABLE MEMB_INFO ADD sexo varchar(10) NULL

ALTER TABLE warehouse ADD Itens2 varbinary(1200) NULL

Rode uma por uma ok qualquer coisa to aki

[move]Se AJudeli clique em obrigado[/move]
 

Firefox_RJ

Novato XPZ
Lembro que assim que coloquei o site ON já tinha executado essas querys cara.

Mas, novamente rodei as querys separadamente, uma por uma como você me orientou e o erro persiste.

No query analyzer aparece o seguinte erro:

Server: Msg 2705, Level 16, State 4, Line 1

Column names in each table must be unique. Column name 'Itens2' in table 'warehouse' is specified more than once.

Em todos os comandos aparece um erro desse tipo

Alguma outra sugestão?

desde já agradeço.
 
Topo Bottom