Ir para conteúdo
Fórum Script Brasil
  • 0

Alterar Valores No Bd Mysql


three

Pergunta

Olá gente,

Comecei a pouco tempo mexer com PHP/CakePHP e esbarrei num probleminha.

Tenho uma tabela "countries" com as variaveis (id, name_de, name_en, order_de, order_en), onde:

name_de = nome do país em alemao

name_en = nome do país em ingles

order_de = posicao colocando em ordem alfabética com nomes em alemao

order_en = posicao colocando em ordem alfabética com nomes em ingles

Meu script possibilita adicionar um país, e já programei o seguinte: O usuário adiciona o país informando seu nome em ingles (name_en) e seu em alemao(nome_de). O id já é incrementado automaticamente. O novo país recebe valor 0 (zero) nas variáveis name_de e name_en.

Preciso programar algo que, após adicionar o novo país, coloque os países novamente em ordem alfabética e atribua a cada um o valor order_en e order_de para sua nova posicao quando colocados em ordem alfabética em suas linguas, automaticamente.

Se tiverem algum trecho de código onde eu possa me basear para programar essa funcao seria de MUITA utilidade pois meu aprendizado em sido bem dessa forma, adaptando códigos parecidos para minha aplicacao.

No momento não sei nem onde programaria essa funcao (no controller ou no model). :unsure:

Gostaria que me dessem uma luz...

Desde já MUITO obrigado

Three®

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá gente...

Acho que isso aqui ficou muito confuso.

Deixe atualiza-los e informar como estao as coisas pra ver se conseguem me ajudar:

Tenho o seguinte código e sua resposta:

(Usando CakePHP)
Controller:
    $countries_de = $this->Country->findAll($conditions, NULL, 'Country.name_de ASC', $limit, $page);
        
        $this->set('countries_list_de', $countries_de);

View:
          pr($countries_list_de);

Que resulta em:

Array
(
    [0] => Array
        (
            [Country] => Array
                (
                    [id] => 52
                    [name_de] => Anderes Land
                    [name_en] => other country
                    [order_de] => 52
                    [order_en] => 52
                )

        )

    [1] => Array
        (
            [Country] => Array
                (
                    [id] => 1
                    [name_de] => Argentinien 
                    [name_en] => Argentina
                    [order_de] => 1
                    [order_en] => 1
                )

        )

    [2] => Array
        (
            [Country] => Array
                (
                    [id] => 2
                    [name_de] => Australien 
                    [name_en] => Australia
                    [order_de] => 2
                    [order_en] => 2
                )

        )

    [28] => Array
        (
            [Country] => Array
                (
                    [id] => 54
                    [name_de] => Neu Land
                    [name_en] => New Country
                    [order_de] => 0
                    [order_en] => 0
                )

        )

No código quando se adiciona um novo país ele recebe um id, um name_en, um name_de e as variáveis order_en e order_de recebem zero. (como no exemplo de país adicionado, o de id=54)

A lista já está em ordem alfabética. (pela funcao findAll que usei)

Esses países vao ficar em um pull-down para o usuário escolher qual seu país de origem mas a opcao other country (ou Anderes Land) deve ser a última da lista. A lista está ordenada pela variável order_de.

Agora preciso jogar o elemento de id=52 para o fim da array e depois atribuir o valor de order_de de cada elemento com seu valor da posicao na array.

Isso soluciona meu problema, mas como não tenho muita experiencia com PHP estou fucando as possíveis funcoes que posso usar pra isso mas na "tentativa e erro " não tá saindo nada. :unsure:

Depois vou fazer o mesmo para a versao do programa em ingles que usa o nome_en e order_en, mas fazendo 1 o outro é automático.

Alguém pode me dar uma luz?

Podem arriscar alguma coisa que pareca funcionar porque depois trabalhando com essa possibilidade posso chegar mais rápido no resultado.

Desde já obrigado.

Three®

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...