Jump to content

Array's, Desespero


Recommended Posts

Posted

Arghhh, podem-me dar uma ajudinha com array's?  ?

É o seguinte a minha ideia é fazer uma listagem de todos os "clientes" de uma base de dados, então o que pensei foi:

$clientes = mysql_fetch_array(mysql_query("SELECT ID, nome FROM clientes ORDER BY ID ASC;")); 
$listagem_clientes = array($clientes['ID'] => $clientes['nome']);
foreach($listagem_clientes as $key => $val) { echo "<li>Cliente nr $key chamado $val</li>"; }

Mas só me aparece o primeiro registo, que é o de mais baixo ID (1)

Alguma ideia de como resolver o problema neste código, ou de como arquitectar um melhor?

Obrigado e feliz natal  😁

Posted

Acho que isto serve...

$query = mysql_query("SELECT ID, nome FROM clientes ORDER BY ID ASC;") 

while( $row = mysql_fetch_array($query)) {

echo "<li>Cliente nr {$row['ID']} chamado {$row['nome']} </li>";

}
Posted

Se queres primeiro passar para uma array o erro está aqui:

$listagem_clientes = array($clientes['ID'] => $clientes['nome']);

Isto já vai dar:

$arr=array();

$query = mysql_query("SELECT ID, nome FROM clientes ORDER BY ID ASC;")
while($row = mysql_fetch_array($query)) $arr[$row['ID']] = $row['nome']);

foreach($arr as $key => $val) echo "<li>Cliente nr $key chamado $val</li>";

EDIT: Tava-te a dar só o 1º pk n tinhas o while e dps pk tavas sempre a definir $listagem_clientes como uma nova array e não a continuação de uma penso eu de que.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

Obrigado aos dois pela ajuda 🙂 O "script" do kingless é bem fácil de entender.

Agora outro tipo de arrays  😄

Estou a preparar um script que de várias tabelas da base de dados são escolhidas colunas com valores "em comum" e estas serão comparadas, e das 4 tabelas será escolhido o registo com o valor mais alto:

$stardesign = mysql_fetch_array(mysql_query("SELECT title, rating FROM design ORDER BY rating DESC LIMIT 0 , 1"));
$starwebdesign = mysql_fetch_array(mysql_query("SELECT title, rating FROM webdesign ORDER BY rating DESC LIMIT 0 , 1"));
$starphotography = mysql_fetch_array(mysql_query("SELECT title, rating FROM photography ORDER BY rating DESC LIMIT 0 , 1"));
$starskins = mysql_fetch_array(mysql_query("SELECT title, rating FROM skins ORDER BY rating DESC LIMIT 0 , 1"));

$star_array = array(
$stardesign['title'] => $stardesign['rating'],
$starwebdesign['title'] => $starwebdesign['rating'],
$starphotography['title'] => $starphotography['rating'],
$starskins['title'] => $starskins['rating']
);
array_multisort($star_array, SORT_DESC, SORT_NUMERIC);
foreach($star_array as $key => $val) { echo "$key => $val<br />"; }

Só que a última parte, a do foreach não era bem isso que queria, porque queria que aparecesse apenas o que tivesse maior valor de rating. Alguma ajuda?  :dontgetit:

Posted

experimenta isto:

$quuery = mysql_query("select title, max(rating) as maximo_rating from webdesign order by title");

deve funcionar.

cumps.

Posted

tu queres o maior valor de rating de cada query (design, webdesign, photography, skins) ou queres o maior valor de todos?

Posted

tu queres o maior valor de rating de cada query (design, webdesign, photography, skins) ou queres o maior valor de todos?

Pelo que eu percebi é o maior valor de todos 😄

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

Sim, é o maior valor de todos.

@ DRKaQUiLa: Se essa query funcionar, vai apenas selecionar o maior de cada tabela, mas e depois?!

Posted

Boas. Mas tu não keres o maior valor de cada tabela?? ou seja o maior rating para apresentares??

Mas depois como?? tas a falar de como mostrar os valores?? se for isso fazes da mesma forma que tas a fazer, ou entao como eu faço, assim:

while($resultado = mysql_fetch_array(mysql_query("select title, max(rating) as maximo_rating from webdesign order by title")))
{

echo "Titulo do trabalho: ".$resultado['maximo_ranking'];

}

cumps

Posted

Como se pode ver no meu script, o que quero é pesquisar nas tabelas design, webdesign, photography e skins o valor mais alto de rating e o respectivo nome:

$stardesign = mysql_fetch_array(mysql_query("SELECT title, rating FROM design ORDER BY rating DESC LIMIT 0 , 1"));
$starwebdesign = mysql_fetch_array(mysql_query("SELECT title, rating FROM webdesign ORDER BY rating DESC LIMIT 0 , 1"));
$starphotography = mysql_fetch_array(mysql_query("SELECT title, rating FROM photography ORDER BY rating DESC LIMIT 0 , 1"));
$starskins = mysql_fetch_array(mysql_query("SELECT title, rating FROM skins ORDER BY rating DESC LIMIT 0 , 1"));

E dentro destas quatro "artworks", escolher apenas a que tiver maior valor de rating e mostrar o seu nome e o rating.

Mas como a última parte não sei bem como fazer, fiz desta maneira:

$star_array = array(
$stardesign['title'] => $stardesign['rating'],
$starwebdesign['title'] => $starwebdesign['rating'],
$starphotography['title'] => $starphotography['rating'],
$starskins['title'] => $starskins['rating']
);
array_multisort($star_array, SORT_DESC, SORT_NUMERIC);
foreach($star_array as $key => $val) { echo "$key => $val<br />"; }

Construir uma array ($star_array) com as quatro artworks, e ordená-las por ordem decrescente de rating através do array_multisort.

Mas isto mostra todas as 4 artworks, gostava que me ajudassem a arranjar uma maneira de mostrar apenas o nome e rating da artwork de maior valor de rating (o primeiro registo que provém do array_multisort()).

Mais alguma dúvida digam  ?

Posted

Qd fazes esse echo, qual é a key que te aparece para a mais alta?

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

O que me aparece:

Design Lab 3.0 => 5.00
The Wonderland => 4.01
Raining out There => 4.00

Até aparece correcto, mas queria uma forma de aparecer apenas o primeiro. Neste caso o Design Lab 3.0 (5.00)

Posted

posso estar enganado, mas para o que queres fazer basta que, em vez do foreach, mostres só os valores do 1º indice do star_array, visto que já foi ordenado como pretendes pelo array_multisort e o 1º é o de valor mais alto...

há 10 tipos de pessoas: as que sabem binário e as que não sabem... todas as nossas vidas não passam de release candidates... com o aperfeiçoamento, um dia chegaremos à versão final..

Posted
$i=0;
foreach($star_array as $key => $val) {
if($i>0) break;
echo "$key => $val<br />";
$i++;
}

Um método pouco ortodoxo 😛

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.