Sort by name in alphabetical order

2

I have some entries that have the option to filter alphabetically by name .. I enter these entries through append like this:

$(".listagem").append(
    '<div class="row" id="corpo-cartoes">
        <div class="col s12 m7" style="width: 100%;">
            <div class="card">
                <a href="cartao.html#${lastId}">

                   <div class="card-image">

                      <div class="gradient-cartao-lista"></div>

                      <img src="${capa}">

                      <span class="card-title"><h1>${data.card.empresa}</h1><p>${data.card.code}</p></span>

                   </div>
                </a>
                <div class="card-action icone-meu-cartao">

                   <a href="#"><i class="material-icons">star</i></a>

                   <a href="#"><i class="material-icons">crop_free</i></a>

                   <a href="#"><i class="material-icons">visibility</i></a>

                   <a href="cadastro-cartao.html#${lastId}"><i class="material-icons btn-editar">edit</i></a>

                </div>
             </div>
         </div>
     </div>'
);  

Visually looks like this:

Iwouldliketosortthemalphabeticallybyname.

Atmybank,Ihavethesefields:

To get the name of my existing records I do:

var db = getDataBase();
db.transaction(function(tx){
   tx.executeSql('SELECT nome FROM cartoes', [], function(tx, results){
        for(i=0; i<results.rows.lenght; i++){
              var nome = results.rows.item(i).nome;
              console.log(nome);
       }
   });

});

How do I get and update them in my list that was inserted with append when the user wants to sort by name?

    
asked by anonymous 17.12.2018 / 12:40

2 answers

0

Hello, It seems that you forgot to add some of your tables, anyway, you can remove the data already added in the listing with:

$(".listagem").html('')

And then add again with the same append, so you could create a function that adds the values:

function addRow(row){
     $(".listagem").append(SEU HTML);
}

And call when you click the sort order to call the function:

function ordenar(campo, direction = 'asc'){
    var db = getDataBase();
    db.transaction(function(tx){
       tx.executeSql('SELECT nome FROM cartoes order by '+campo + ' '+ direction, [], function(tx, results){
            for(i=0; i<results.rows.lenght; i++){
                  //chama função para adicionar os dados
                  addRow(results.rows.item(i));
           }
       });

    });
}

The order by will cause the records to be sorted by the field and in the direction reported in the function ( asc or desc )

    
17.12.2018 / 12:58
0

You are using a for and simply adding the names, if you sort your search, your problem is probably solved.

Add ORDER BY to the end of your SELECT

SELECT nome FROM cartoes ORDER BY nome
    
17.12.2018 / 12:46