Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, Bom dia/tarde/noite
Tenho uma array com o conteúdo de uma query no Mysql que exibe os produtos de um site, a array está assim:
Array (
[0] => Array (
[post_name] => nome-do-ar-condicionado-9.000-bth-u
[post_title] => Nome do Ar Condicionado 9.000 BTH/u
[img] => [http://site.com/wp-content/uploads/2015/09/img1.png](http://site.com/wp-content/uploads/2015/09/img1.png)
)
[1] => Array (
[post_name] => nome-do-ar-condicionado-7.000-bth-u
[post_title] => Nome do Ar Condicionado 7.000 BTH/u
[img] => [http://site.com/wp-content/uploads/2015/09/img2.png](http://site.com/wp-content/uploads/2015/09/img2.png)
)
[2] => Array (
[post_name] => nome-do-ar-condicionado-12.000-bth-u
[post_title] => Nome do Ar Condicionado 12.000 BTH/u
[img] => [http://site.com/wp-content/uploads/2015/09/img3.png](http://site.com/wp-content/uploads/2015/09/img3.png)
)
)
O meu problema é a ordem que os registros estão na array. Eu precisava ordenar os registros na array pela potência do produto do menor para o maior, assim:
Array (
[0] => Array (
[post_name] => nome-do-ar-condicionado-7.000-bth-u
[post_title] => Nome do Ar Condicionado 7.000 BTH/u
[img] => [http://site.com/wp-content/uploads/2015/09/img2.png](http://site.com/wp-content/uploads/2015/09/img2.png)
)
[1] => Array (
[post_name] => nome-do-ar-condicionado-9.000-bth-u
[post_title] => Nome do Ar Condicionado 9.000 BTH/u
[img] => [http://site.com/wp-content/uploads/2015/09/img1.png](http://site.com/wp-content/uploads/2015/09/img1.png)
)
[2] => Array (
[post_name] => nome-do-ar-condicionado-12.000-bth-u
[post_title] => Nome do Ar Condicionado 12.000 BTH/u
[img] => [http://site.com/wp-content/uploads/2015/09/img3.png](http://site.com/wp-content/uploads/2015/09/img3.png)
)
)
Alguma ideia? :P
Então, eu não consigo, pois da tabela que ela é feita não existe um campo com a potência para eu ordenar. E hoje criar esse campo embora seja o certo a fazer, não rola, tem muitos registros já feitos.
>
Olá, Bom dia/tarde/noite
Tenho uma array com o conteúdo de uma query no Mysql
Você disse que o conteúdo vem do banco... não existe uma coluna para cada informação? Como estão salvos os dados então?
O conteúdo da query está dividido em várias tabelas, em uma apenas com o conteúdo dividido em dois registros, já em outra a associação do produto com a categoria (que seria a potência do produto)
Como eu estava com dificuldade de fazer a consulta como queria, pensei que seria mais fácil apenas trazer os registros e depois ordenar com o php
manda sua query ai.... mas ainda acho que pode ordenar, mesmo com o conteudo vindo de varios lugars...
Ok,
Tenho uma tabela wp_term_relationships onde é associado o ID do produto com o ID da categoria que ele está, então eu vou nessa tabela e por uma categoria que é a marca do produto, eu recolho todos os produtos associas a ela.
Já na tabela dos produtos wp_posts eu busco todos os produtos com os IDs pegos anteriormente.
O problema é que a busca inicialmente é feita por Marca do produto não por potência, assim ele vem todos os produtos independente da potência. E na tabela do produto não existe nenhuma referência a potência, só na tabela wp_term_relationships
A query onde busco o ID dos produtos:
SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id = '$id_marca'
Com os IDs dos produtos, eu faço a busca:
SELECT post_title, post_name FROM wp_posts WHERE ID IN ($ids_posts) AND post_type = 'wpsc-product' ORDER BY ID ASC
não da pra fazer só uma consulta não?
Ei... a potencia do ar está salva no titulo e na descrição é? Se for, melhor separar logo isso cara...
ALTER TABLE nome_tabela ADD potencia int(11) AFTER coluna
cria esse campo na tabela que contem a descrição e titulos.
Depois vc roda um script pra buscar somente os numeros da string e salvar na nova coluna...
<?php
$string = "nome-do-ar-condicionado-9.000-bth-u";
echo $string."<br/>";
$string2 = preg_replace("/[^0-9]/","",$string);
echo $string2;
?>
Mais ou menos assim.
Valeu pela ajuda rnu.silva, com a expressão regular consegui ordenar a array com um sort();
Valeu :P
ordena na hora da consulta...
SELECT * FROM tabela ORDER BY potencia ASC;