Jump to content
Fórum Script Brasil
  • 0

Alterar Valores No Bd Mysql


three
 Share

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.1k
    • Total Posts
      647.1k
×
×
  • Create New...