Ir para conteúdo

POWERED BY:

Arquivado

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

Usfe

Numero do Pedido

Recommended Posts

Boa noite pessoal, estou com uma dificuldade, é o seguinte tenho um sistema de cadastro de pedidos e preciso gerar um numero para esse pedido...

seria prudente resgatar o Id do pedido cadastrado e formatar ele com o str_pad

$numPedido = 1;
$numPedido = str_pad($numPedido, 6, "0", STR_PAD_LEFT);
echo $numPedido;//SAIDA -> "000007"

ou criar um campo para Numero/código do pedido?

 

na opinião de vocês qual a melhor solução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no seu banco já tem uma id unica pra cada linha de pedido?

 

Sim na tabela pedido tem a chave primaria id_pedido..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode (e deve) usar o ID do pedido como código do pedido, uma vez que esse código provavelmente será usada para representação humana do pedido, ou seja, passar para um cliente ou rastreador enfim...

 

Você pode sim usar o str_pad sem problemas, ou então usar o UNSIGNED ZEROFILL do próprio mysql, que adicionaria os 00000 necessários ao seu ID diretamente na tabela. Vai do gosto.

 

ALTER TABLE  `tabela_pedidos` CHANGE  `id`  `id` INT( 6 ) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT

 

Obs: INT(6) -> o 6 aqui significa o numero de digitos que você deseja para o pedido. No caso o pedido de ID 3 será exibido como: 000003

 

Essa prática será completamente útil, a menos se existir uma restrição que diga que o ID não possa ser o código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ideal para você é colocar como auto increment e deixar o parâmetro do tipo int(6).

Aqui na empresa fiz isso, porém já defini um pedido inicial com o valor: "258967" e com isso os próximos já vão seguir uma sequencia auto increment , mas já com um valor alto definido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu amigo Pela dica ;)

o que você necessita pode ser algo como o dell service tag.

 

veja esse topico, em especial o post #13

 

http://forum.imasters.com.br/topic/467590-gerar-uma-quantidade-de-16-ou-menor-de-caractere-unicos/page__view__findpost__p__1855657

 

Valeu amigo eu vou usar o id mesmo acho que vai ficar mais simples dessa forma ;)

Você pode (e deve) usar o ID do pedido como código do pedido, uma vez que esse código provavelmente será usada para representação humana do pedido, ou seja, passar para um cliente ou rastreador enfim...

 

Você pode sim usar o str_pad sem problemas, ou então usar o UNSIGNED ZEROFILL do próprio mysql, que adicionaria os 00000 necessários ao seu ID diretamente na tabela. Vai do gosto.

 

ALTER TABLE  `tabela_pedidos` CHANGE  `id`  `id` INT( 6 ) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT

 

Obs: INT(6) -> o 6 aqui significa o numero de digitos que você deseja para o pedido. No caso o pedido de ID 3 será exibido como: 000003

 

Essa prática será completamente útil, a menos se existir uma restrição que diga que o ID não possa ser o código.

 

Bacana amigo mas aonde você define esse valor inicial? "258967"

O ideal para você é colocar como auto increment e deixar o parâmetro do tipo int(6).

Aqui na empresa fiz isso, porém já defini um pedido inicial com o valor: "258967" e com isso os próximos já vão seguir uma sequencia auto increment , mas já com um valor alto definido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

# Amigão... quer gerar número de PEDIDOS aleatórios?

 

Muito simples, postar um código que uso para gerar números aleatórios, só alterar os números do mesmo e configurar ao seu gosto para gerar sempre a quantidade exata de números...

 

# CÓDIGO

 

srand((double)microtime()*1000000); 

$parte1 = rand(262,726); // 3 - 3 = 3numeros

$parte2 = rand(139,382); // 3 - 3 = 3numeros

echo $pedido=("$parte1$parte2"); // 3 + 3 = 6numeros

// SAÍDA -> 321987 / 158309 ( sempre número aleatórios )

 

Se alterar a quantidade da ( parte 1 ), sempre altere a quantidade da ( parte 2 ) para a mesma quantidade final de números

 

 

# EXEMPLO

 

//  8numeros total

srand((double)microtime()*1000000); 

$parte1 = rand(1262,7126); // 4 - 4 = 4numeros

$parte2 = rand(1539,8382); // 4 - 4 = 4numeros

echo $pedido=("$parte1$parte2"); // 4 + 4 = 8numeros

 

E assim por diante.

 

 

:thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

#7

ALTER TABLE nome_da_tabela AUTO_INCREMENT = 100

 

é muito comum as empresas ocultarem o número real do pedido, pois geralmente são números sequenciais.

 

muitas vezes transmite uma imagem negativa da empresa (marketing negativo).

 

mas como ?

 

Suponha que a empresa X lançou um serviço há 6 meses.

O banco de dados está com 20 pedidos.

 

Um concorrente ou mesmo um cliente mais atento observará o número do pedido, podendo deduzir:

"em 6 meses estão no número 20 ainda ?"

(esse cliente fez pedido ontem)

 

 

Citando um exemplo mais prático, tenho diversos clientes que pedem para usar alguma máscara ou iniciar a partir de um número mais alto que 1000

Em serviços novos, para dar impressão de que o serviço está tendo demanda, sendo aceito pelos consumidores. Isso é marketing.

Em outros casos tive que usar algo como o a logística da DELL (service tag).

 

No caso do service tag, é uma máscara.. o ID real é codificado para um código único e curto de 8 caracteres. Pode ser menor de 5 caracteres. Depende da quantidade de caracteres que deseja combinar e profundidade de bits (8, 16, 32...).

Uma vantagem nisso é que no atendimento ao cliente, principalmente via telefone, diminui os riscos do cliente pronunciar um código errado.

O código nas embalagens de produtos, faturas e rececibos, fica mais amigável.

 

 

Apenas uma observação, se você estiver desenvolvendo um sistema para um cliente, consulte-o sobre o assunto.

Pode não ficar legal implementar da forma como achar melhor. O cliente pode querer algo específico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

# Amigão... quer gerar número de PEDIDOS aleatórios?

 

Muito simples, postar um código que uso para gerar números aleatórios, só alterar os números do mesmo e configurar ao seu gosto para gerar sempre a quantidade exata de números...

 

# CÓDIGO

 

srand((double)microtime()*1000000); 

$parte1 = rand(262,726); // 3 - 3 = 3numeros

$parte2 = rand(139,382); // 3 - 3 = 3numeros

echo $pedido=("$parte1$parte2"); // 3 + 3 = 6numeros

// SAÍDA -> 321987 / 158309 ( sempre número aleatórios )

 

Se alterar a quantidade da ( parte 1 ), sempre altere a quantidade da ( parte 2 ) para a mesma quantidade final de números

 

 

# EXEMPLO

 

//  8numeros total

srand((double)microtime()*1000000); 

$parte1 = rand(1262,7126); // 4 - 4 = 4numeros

$parte2 = rand(1539,8382); // 4 - 4 = 4numeros

echo $pedido=("$parte1$parte2"); // 4 + 4 = 8numeros

 

E assim por diante.

 

 

:thumbsup:

@a1click_mac Amigo simplesmente show de bola :clap: a resposta abaixo complementa a sua mas uma pergunta é possivel fazer com que esses numeros sejam unicos? ou por padrão eles não se repetem?

 

#7

ALTER TABLE nome_da_tabela AUTO_INCREMENT = 100

 

é muito comum as empresas ocultarem o número real do pedido, pois geralmente são números sequenciais.

 

muitas vezes transmite uma imagem negativa da empresa (marketing negativo).

 

mas como ?

 

Suponha que a empresa X lançou um serviço há 6 meses.

O banco de dados está com 20 pedidos.

 

Um concorrente ou mesmo um cliente mais atento observará o número do pedido, podendo deduzir:

"em 6 meses estão no número 20 ainda ?"

(esse cliente fez pedido ontem)

 

 

Citando um exemplo mais prático, tenho diversos clientes que pedem para usar alguma máscara ou iniciar a partir de um número mais alto que 1000

Em serviços novos, para dar impressão de que o serviço está tendo demanda, sendo aceito pelos consumidores. Isso é marketing.

Em outros casos tive que usar algo como o a logística da DELL (service tag).

 

No caso do service tag, é uma máscara.. o ID real é codificado para um código único e curto de 8 caracteres. Pode ser menor de 5 caracteres. Depende da quantidade de caracteres que deseja combinar e profundidade de bits (8, 16, 32...).

Uma vantagem nisso é que no atendimento ao cliente, principalmente via telefone, diminui os riscos do cliente pronunciar um código errado.

O código nas embalagens de produtos, faturas e rececibos, fica mais amigável.

 

 

Apenas uma observação, se você estiver desenvolvendo um sistema para um cliente, consulte-o sobre o assunto.

Pode não ficar legal implementar da forma como achar melhor. O cliente pode querer algo específico.

@hinom Amigo sua dica valeu mais que qualquer codificação... realmente gera uma impressão negativa mesmo pois eu gero o comprovante ai se for pelo id desse pedido não vai ficar bom... fica melhor como nosso amigo @a1click_mac disse.

só preciso ver se tem como esse valor ser unico, mas caso não seja, tem algum problema ele não ser? penso eu que teria já que emito comprovante desse pedido, mas oque você(s) acham?

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo pelo que entedir tu quer gerar um codigo para o numero do pedido certo?

se for isso tu pode tentar assim

 

 

<?

$numeros = array(0,1,2,3,4,5,6,7,8,9);

$total_num = count($numeros)-1;

$numPedido = $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)];

$gerador = $numPedido;

echo $gerador

?>

 

 

ele gera codigos quanse inpussivel de gerar o mesmo codigo assim um atars do outro espero ter ajudado..

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo pelo que entedir tu quer gerar um codigo para o numero do pedido certo?

se for isso tu pode tentar assim

 

 

<?

$numeros = array(0,1,2,3,4,5,6,7,8,9);

$total_num = count($numeros)-1;

$numPedido = $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)];

$gerador = $numPedido;

echo $gerador

?>

 

 

ele gera codigos quanse inpussivel de gerar o mesmo codigo assim um atars do outro espero ter ajudado..

nossa bacana mesmo @Marcos_imasters gostei mas no meu caso gero comprovante para os clientes, como você mesmo disse "quase impossível gerar o mesmo código" mas acho que daria problema na hora de consultar pelo numero do pedido, caso gerasse algum repetido...

tem como deixa esse numero unico?

oque você acha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mano tipo se tui quizer pode adiciona o numero do cliente mais nunca tentei nao mais achu que é possivel

 

 

tenta ai tipo

 

 

<?

$numeros = array(0,1,2,3,4,5,6,7,8,9);

$total_num = count($numeros)-1;

$numPedido = $id . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)] . $numeros[rand(0,$total_num)];

$gerador = $numPedido;

echo $gerador

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os exemplos que postaram usando rand() nao são seguros exceto esse ultimo no qual utiliza vários rands, diminuindo as possibilidades de repetir. No entanto, ainda há a possibilidade de repetição.

 

A técnica com microtime() é mais segura do que rand()

 

Particularmente também utilizo o microtime ou o simples time, pois gera 10 caracteres.

O microtime gera uma string maior. É inconveniente para leitura humana, principalmente clientes durante um suporte via telefone.

 

Até mesmo o uso do time() com 10 números é incômodo para situações como já expliquei acima.

 

Veja se esse outro tópico pode ser útil:

http://forum.imasters.com.br/topic/427112-criptografar-o-get-no-php/page__view__findpost__p__1686364

 

Nesse caso, o alphaid pode ser gerado a partir do id original da tabela de pedidos.

O alphaid gera uma máscara curta de 5 caracteres. O unico incômodo é que são misturados com letras.

A técnica é semelhante ao service tag, podendo inclusive reverter para o código original.

 

Enfim, para essa situação, ainda prefiro a técnica do service tag

 

Para quem ainda está boiando sobre o que é isso, veja algumas imagens:

 

1service_tag.jpg

2k531d464e89.gif

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.