1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

bd questão sobre autoincrement e coiso

Discussão em 'Web Development' iniciada por alakazan, 17 de Agosto de 2008. (Respostas: 9; Visualizações: 604)

  1. alakazan

    alakazan Power Member

    Ora bem, a ver se explico a minha duvida convenientemente. É o seguinte:

    supunha-se que eu tenho uma bd para noticias, com os campos id, titulo e noticia. O id está com autoincrement.

    digamos que está a tabela assim:

    1 || Coiso || fsdf.dsfdfsdfsa

    2 || Cena || fsdfdsfsdfsdf

    3 || Yo || fsdf.dbfffffffff

    4 || Isso || ffbbbbbbbbbbbbbbb



    Agora se eu apagar a entrada 3 e adicionar outra fico com:



    1 || Coiso || fsdf.dsfdfsdfsa

    2 || Cena || fsdfdsfsdfsdf

    4|| Yo || fsdf.dbfffffffff

    5|| Ena pá || ffbbbbbbbbbbbbbbb



    Ora é isto que eu não quero, digamos saltos no id, queria, que a entrada com o titulo "Yo" ficasse com id 3 e a entrda "Ena pá" com id 4.
    Sugestões para fazer isto ?



    Agora outra coisa, tenho duas pastas A e B, dentro da B tenho um ficheiro que chama imagens que estão na pasta A.
    Ora não consigo que elas apareçam. Se as imagens estiverem numa pasta destro da pasta B, passo a redundância, fica tudo certo, pois o ficheiro e a pasta das imagens estão "lado a lado". Como faço para as chamar dentro da pasta B as imagens que estão na pasta A.


    Obrigado.
     
  2. hostmake

    hostmake Power Member

    Isso é pouco prático, tens que alterar os id's manualmente ao apagares um.
    Ninguém faz isso.


    Quanto as imagens, qual é a dificuldade?

    Se tens src="images/imagem.jpg" passas a ter src="../B/imagens/imagem.jpg", ou usas caminhos absolutos.
     
  3. alakazan

    alakazan Power Member

    src="../A/imagens/imagem.jpg"

    pois eu fiz isto, mas estranhamente não foi lá, mas ainda vou confirmar.
     
  4. anjo2

    anjo2 Power Member

    mas vai lá, mas tem cuidado.
    Se tiveres um include de um ficheiro por exemplo inc/inc.php, ao ires buscar a image imagens/image.png não fazes ../imagens/image.png se tiveres a fazer o include no root, tens que pensar onde vais fazer o include para ires buscar o ficheiro.
     
  5. alakazan

    alakazan Power Member

    omg, devo ter visto mal afinal tá a bombar bem lol. E num ficheiro css, mas obrigado pela dica com o includes.

    Quanto à bd era apenas uma questão de curiosidade.
    Obrigado.
     
  6. Xeon3D

    Xeon3D 1st Folding then Sex

    isso é um bocado má onda (o "coiso" de reordenares as chaves) porque:

    Imagina que tens um link no artigo 4 que vai dar ao artigo 2

    Entretanto, apagas o artigo um, logo o 4 passa para o 3, o 3 para 2 e o 2 passa para 1.

    O link que agora está no artigo 3 (que anteriormente era o 4), já não vai estar correcto, pois o artigo 2 é agora o 1.

    (fiz-me entender?)
     
  7. alakazan

    alakazan Power Member

    esse problema punha-se se os links fossem estáticos, mas não tenho esse problema.

    Isto é apenas mera curiosidade, o facto de estarem ou não os id's contínuos não tem qualquer significado.

    Apenas tinho essa curiosidade porque gosto de ver as coisas organizadas lol, mas nada.
     
    Última edição: 18 de Agosto de 2008
  8. anjo2

    anjo2 Power Member

    para que usas o id então?
     
  9. alakazan

    alakazan Power Member

    lol se calhar não disse bem, ter 1245 ou 1234 é indiferente, é isso que queria dizer, mas uso o id sim lol.
     
  10. AliFromCairo

    AliFromCairo Power Member

    Bom, tal como já aqui disseram, não é aconselhável alterar os id's de uma coluna com auto_increment uma vez que este campo só deve ser manipulado pela base de dados, sendo que é irrelevante se existem ou não "buracos" entre os id's.


    De qualquer maneira, podes fazer isso facilmente da seguinte forma:
    • Obténs todas as linhas da tabela;
    • Crias uma variável auxiliar que começa em 1;
    • Iteras sobre cada linha da tabela e comparas o id da linha com o valor da variável auxiliar. Se o valor for diferente, actualizas o id da linha para o valor da variável auxiliar, caso contrário, não fazes nada. No final de cada iteração, incrementas o valor da variável auxiliar.
    Algo do género (assumindo que a tabela tem 2000 linhas):

    Código:
    rows = "SELECT * FROM tabela"
    for i = 1 to 2000
        if rows["id"] != i
            UPDATE tabela SET id = i WHERE id = rows["id"]
    
    Espero que ajude.
     

Partilhar esta Página