dudanogueira Postado Junho 23, 2004 Denunciar Share Postado Junho 23, 2004 Pessoal!!Alguém poderia me dar um help ae!tenha uma listagem de nomes no meu BD, láos nomes estão do tipo:AdrianaThaís ChagasÉrica RabeloEduardo Costadaí faço imprimo a listagem com o seguinte script: <? $datab3 = new DB; $query = "SELECT Nome, ID, Turma FROM Formando WHERE Turma = $IDt ORDER BY Nome"; $datab3->pquery($query); while($datab3->next_record()){ print "<P class=\"busca_convite\"><a href=\"formandos.php\" onClick=\"MM_openBrWindow('http://www.sitetal.com.br/ver.php?id=". $datab3->record["ID"] ."','','width=400,height=300')\">". $datab3->record["Nome"] ."</a></p>\n\n"; }?>o único problema: ele considera o nome Érica antes de Adriana... Link para o comentário Compartilhar em outros sites More sharing options...
0 dmetallica Postado Junho 23, 2004 Denunciar Share Postado Junho 23, 2004 Tenta fazer assim...SELECT Nome, ID, Turma FROM Formando WHERE Turma = $IDt ORDER BY Nome ASCfallou... Link para o comentário Compartilhar em outros sites More sharing options...
0 dudanogueira Postado Junho 24, 2004 Autor Denunciar Share Postado Junho 24, 2004 Falae amigo!Obrigado pela atenção! bom, o problema me parece ser quanto aos caracteres com acento.Ele já está "ORDER BY Nome", o ASC não fez diferença.porém Nomes que começam com acento, como Éricaparecem antes do Adriano...No BD, os nomes são cadastrados comoAdrianaThaís ChagasÉric RabeloEduardo CostaEu queria que o Éric viesse junto do Eduardo, ou seja,ele ignorasse o acento. tem como? ou eu teria que cadastrar no BD os nomes com acento para depois converter?valeu ae, brigadão! Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Julho 11, 2004 Denunciar Share Postado Julho 11, 2004 Pois é...tá aí uma coisa que é bom saber...estou iniciando com mysql, onde vou usar com ASP.E sempre antes de inserir dados no bd, uso uma funcao que substitui as palavras acentuadas, como você disse ae dudanogueira.Se alguém puder dar uma luz Link para o comentário Compartilhar em outros sites More sharing options...
0 [ GuTo ] Postado Julho 11, 2004 Denunciar Share Postado Julho 11, 2004 Ops...aki em cima era eu... se puder, peço ao MODERADOR pra apaga-lo, e depois tirar esta frase daki!!Pois é...tá aí uma coisa que é bom saber...estou iniciando com mysql, onde vou usar com ASP.E sempre antes de inserir dados no bd, uso uma funcao que substitui as palavras acentuadas, como você disse ae dudanogueira.Se alguém puder dar uma luz Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Julho 11, 2004 Denunciar Share Postado Julho 11, 2004 E sempre antes de inserir dados no bd, uso uma funcao que substitui as palavras acentuadas, como você disse ae dudanogueira. Galera...Se vocês usarem uma função que tira os acentos já na hora de inserir no mysql, o nome do cara vai ficar sempre diferente da forma que deveria ser... eu vejo duas soluções aqui:- Mais simples, mas eu não usaria: criar outro campo do bd com o nome sem acentos, só para fins de ordenar quando você der um SELECT.- Ou dar um SELECT inicial no "ID" e no "Nome", retornando o resultado num array (com o índice igual ao campo "id" e o valor igual ao campo "nome"). Então, substitui os caracteres acentuados e ordena o array com o sort()... aí, em ASP eu não sei, mas em PHP seria só utilizar o foreach() (quem não conhece este comando e quiser dar uma olhada, dá uma olhada nesse link):foreach ($array as $indice => $valor) { $query = "SELECT Nome, ID, Turma FROM Formando WHERE ID = $indice"; $datab3->pquery($query); // comandos pra imprimir um registro...}Ele imprime 1 registro a cada passagem no laço foreach... fica um pouco complexo, mas se você criar uma classe que faça isso, ajuda bastante (já que você já está fazendo com orientação a objetos, mesmo). Se alguém tiver mais alguma idéia, posta aí...Abraços! Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - dudanogueira - Postado Julho 11, 2004 Denunciar Share Postado Julho 11, 2004 Poizé.Eu pensei em fazer algo desse tipo (aprendi agora como, hehehe),mas acho que é muita volta pra uma coisa... que deveria ser simples.Eu acho que o canal deve ser jogar a informação com acento e tudo la dentro do BDe só transformar quando for imprimir pro html...daí ele lista tudo quase certinho, pois considera acentuados antes de tudo.tipoÉricaEalânciamas já é alguma coisa.melhor do que jogar os entities (´cseilaoque;) dentro do BD. e perder a referência de vezmas o grande problema que pra fazer isso vou ter que fazer uma verdadeiracostura dentro dos meus códigos, pois já tem uma pá de registros e entrando novos a cada dia =\vamos ver o que dá!valeu pela ajuda ae personas, se alguém tiver mais algumadica sobre acentos dentro do BD, ou mesmo dicas de como trabalharcom acentos na programação solta o verbo ae! Link para o comentário Compartilhar em outros sites More sharing options...
0 [ GuTo ] Postado Julho 12, 2004 Denunciar Share Postado Julho 12, 2004 beleza ae IllidanSaquei essa do array ae, moleza!Agora falando esta do dudanogueira, de enviar os dados pro BD com acentos normais (ex.: Éric).De certa forma isso não traz problema, SÓ que pra facilitar a nossa porgramação, sempre fazemos tratamentos. Quando pegamos o valor de um campo de um form, um cadastro por ex., verificamos (pelo menos no asp), estas coisas:- caracteres como o apóstrofo (') e substituimos por 2 apóstrofos (''), para evitar erro na SQL.- usamos Server.HTMLEncode(valorASerTratado) para subsitituir as tags do HTML por códigos referentes ao mesmo, para não haver um dado, por exemplo, estar com fonte tamanho 7 em negrito (engracadinhos os kras q fazem isso).Então sempre antes de enviar infos pro bd, fazemos isso.Logo, as palavras acentuadas são transformadas nakeles códigoszinhos (é e etc).Isso nos tira mtos tratamentos em outras páginas, pois se não fizermos isso, inserirmos os valores normais no bd, em todas as paginas aonde aquele dado podera ser mostrado, eu terei de usar o Server.HTMLEncode, o que seria trabalho d+ e alguns acham desnecessário.O que vejo mesmo, é a dificuldade de ordenar os nomes corretamente se as letras acentuadas estiverem em codigo.no mais é isso... Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Julho 12, 2004 Denunciar Share Postado Julho 12, 2004 ,Jul 12 2004, 06:52 AM] Então sempre antes de enviar infos pro bd, fazemos isso.Logo, as palavras acentuadas são transformadas nakeles códigoszinhos (é e etc).Isso nos tira mtos tratamentos em outras páginas, pois se não fizermos isso, inserirmos os valores normais no bd, em todas as paginas aonde aquele dado podera ser mostrado, eu terei de usar o Server.HTMLEncode, o que seria trabalho d+ e alguns acham desnecessário. Guto,Entendi o que você quis dizer, mas eu não acho que seja trabalho demais você ter que tratar a informação do bd toda vez que for exibí-la. Quer dizer, eu acho que vale a pena pelos inconvenientes que isso resolve... Eu faço isso nos meus projetos. Se você transformar os caracteres HTML em seus respectivos códigos, vai ocupar mais espaço no campo do mysql (pode não ser muito, mas eu vejo como um espaço perdido). Além do mais, não é só a ordenação dos resultados que ficará comprometida, como tb se você for fazer uma busca, ou qualquer espécie de consulta... Imagine só: você teria que tratar a palavra de busca com a função Server.HTMLEncode (no PHP é a htmlentities) toda vez que fosse consultar no bd. A meu ver, é um processo tão trabalhoso quanto tratar os dados da consulta só na hora de exibir. A diferença é que uma hora você trata a palavra que será consultada, e na outra você trata o resultado. Se pudesse optar, eu ficaria com a segunda opção, pois ocupa menos espaço no bd e evita alguns problemas, como o de ordenar resultados.Bom, mas tb não sei como é o seu caso... é só minha opinião. Falou! Link para o comentário Compartilhar em outros sites More sharing options...
0 [ GuTo ] Postado Julho 12, 2004 Denunciar Share Postado Julho 12, 2004 É acho que vou ter de optar por usar o Server.HTMLEncode em cada parte do site onde vou printar certos dados.Realmente uma coisa que não pensei foi esse espaço a mais no no banco.E cara, mudando um pouco o X da questão, você acha que devemos fazer algum tratamento para palavras "especiais"?Por exemplo, limitar estas palavras:Drop, Create, Table, Delete, Update, Insert e outras parecidas...Quando alguém escreve-las, informamos erro que não está palavra está restrita ou simplesmente tiramos a do texto.Que você acha?Desde já agradeço a sua compreensão.t+ Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Julho 12, 2004 Denunciar Share Postado Julho 12, 2004 Bom, Guto... eu nunca restringi essas palavras. Acho que não tem problema, não. Em PHP (em ASP eu não sei, mas acredito que seja similar), o que o cara digita num campo do form, como um <textarea>, ficará associado a uma variável quando ele submeter o formulário. Eu só pego o valor dessa variável e insiro no campo do banco. Não tem problema se ele encher de caracteres ou palavras "especiais" pelo meio... a única coisa que pode dar erro são caracteres como a aspas simples, como você citou no seu outro post.Agora, na hora de imprimir esse valor na página, aí eu trato ele várias vezes... por exemplo, na primeira, eu mando transformar os caracteres especiais de HTML em seu código ("<" vira "<" etc.)... aí eu transformo os <enters> em <br />... aí, num mural que eu criei, ele substitui quando o cara digitar ":)" por "<img src=... />" (igual aqui no fórum). Se eu fosse fazer tudo isso na hora de gravar no bd, iria ocupar muito mais espaço... cada tecla <enter> ia virar um <br />, um ":)" ia virar "<img src=... />". Tirando que, quando o cara fosse editar a mensagem, ele não ia entender nada do que era aquilo.Mas beleza... voltando à sua pergunta sobre segurança, acredito que você não precise se preocupar caso alguém digite um "DROP `tabela`;" na mensagem... só fique atento mesmo na hora de imprimir esses valores na página pra não deixar nenhum engraçadinho alterar o tamanho da fonta pra 7, ou escrever </td></tr> e acabar com o layout do site... hehehe Abraços! Link para o comentário Compartilhar em outros sites More sharing options...
0 [ GuTo ] Postado Julho 13, 2004 Denunciar Share Postado Julho 13, 2004 Ah beleza então!!!Acho que já estava no caminho certo.Eu já tinha pensado no espaço no BD pra estes coisas, como ENTER por <br>, emoticons pelo <img...> e td mais.Já faço estes tratamento na hora de imprimi-los também. Não na hora de inserir.Agora só vou colocar o Server.HTMLEncode do asp (igual aquele seu HTMLEntities do PHP) nos campos que for printar.Abraços e muito obrigado,t+ Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Julho 13, 2004 Denunciar Share Postado Julho 13, 2004 Não tem de que!Um abraço! Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Wagner Gomes Gonçalves Postado Setembro 26, 2006 Denunciar Share Postado Setembro 26, 2006 Caros, o problema de ordenação no MYSQL é proveniente do Collation escolhido para a tabela (e para o banco).Collation define o comportamento de ordenação no MYSQL.Então faça o seguinte pra ordenação funcionar bem com acentos:// ALTERA O CHASET E COLLATION DA TABELA - Faça para todas as tabelasalter table formandoCHARACTER SET utf8COLLATE utf8_general_ciSugiro alterar do banco também// ALTERA O CHASET E COLLATION DO BANCOalter databaseCHARACTER SET utf8COLLATE utf8_general_ciMias um comentário: Não a gambiarra...! hehehehe Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Visitante Postado Outubro 19, 2006 Denunciar Share Postado Outubro 19, 2006 Caros, o problema de ordenação no MYSQL é proveniente do Collation escolhido para a tabela (e para o banco).Collation define o comportamento de ordenação no MYSQL.Então faça o seguinte pra ordenação funcionar bem com acentos:// ALTERA O CHASET E COLLATION DA TABELA - Faça para todas as tabelasalter table formandoCHARACTER SET utf8COLLATE utf8_general_ciSugiro alterar do banco também// ALTERA O CHASET E COLLATION DO BANCOalter databaseCHARACTER SET utf8COLLATE utf8_general_ciMias um comentário: Não a gambiarra...! hehehehemaiorçada, meu problema é um pouco parecido porém queria alterar a Collation de um campo da tabela, mas no Mysql - Front, poderia me dar um help nesta questão aí??? Meu email ramansen@gmail.com , Obrigado. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
dudanogueira
Pessoal!!
Alguém poderia me dar um help ae!
tenha uma listagem de nomes no meu BD, lá
os nomes estão do tipo:
Adriana
Thaís Chagas
Érica Rabelo
Eduardo Costa
daí faço imprimo a listagem com o seguinte script:
<?
$datab3 = new DB;
$query = "SELECT Nome, ID, Turma FROM Formando WHERE Turma = $IDt ORDER BY Nome";
$datab3->pquery($query);
while($datab3->next_record()){
print "<P class=\"busca_convite\"><a href=\"formandos.php\" onClick=\"MM_openBrWindow('http://www.sitetal.com.br/ver.php?id=". $datab3->record["ID"] ."','','width=400,height=300')\">". $datab3->record["Nome"] ."</a></p>\n\n";
}
?>
o único problema: ele considera o nome Érica antes de Adriana...
Link para o comentário
Compartilhar em outros sites
14 respostass a esta questão
Posts Recomendados