Ir para o conteúdo
AntonioGraca

[Resolvido] Valores num array a partir de dados de uma tabela

Mensagens Recomendadas

AntonioGraca

Olá

Tenho um formulário em que o utilizador escolhe as provas e o atleta para saber quais os recordes pessoais desse atleta (a melhor marca em cada uma das provas escolhidas).

formulario_pesquisa.png

Até agora, tudo funciona. Mas gostaria de optimizar a coisa. Ou seja, gostaria que o utilizador (cf_user_id) apenas escolhesse o atleta em que gostava de saber quais os recordes pessoais não havendo necessidade de escolher as provas.

Para isso, preciso fazer uma listagem das melhores marcas de um atleta (atleta_select) em cada prova (nome_marcas) que ele tem inserida numa tabela. Mas eu não sei quais são as provas que foram introduzidas pelo utilizador na tabela (apo_chronoforms_data_marcas_registo).

tabela = (apo_chronoforms_data_marcas_registo)

utilizador = (cf_user_id)

atleta = (atleta_select)

prova = (nome_marcas)

Então, estava a tentar fazer o seguinte:

1 - fazer uma pesquisa à tabela (a partir de um formulário) em que as provas de um determinado atleta que fossem encontrasse (e que não fossem repetidas) eram colocadas num array.

2 - A partir dos dados desse array, fazer uma pesquisa à mesma tabela onde pesquisava as provas que o atleta tem introduzidas seleccionando apenas a melhor marca em cada prova.

Para o passo 1 tentei o seguinte, mas dá erro

mysql_fetch_array() expects parameter 1 to be resource,
. O código a partir do salect no phpMyadmin faz exatamente o que eu preciso. Mas ao tentar passar para um array dá erro

$lista_provas1=mysql_query("
 SELECT DISTINCT (`prova_marcas`)
 FROM `apo_chronoforms_data_marcas_registo`
 WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}'");
$lista_provas=array($lista_provas1);

while ($linha = mysql_fetch_array($lista_provas)) {
echo $linha['prova_marcas'];
}

Para o passo 2, tenho o seguinte código mas não sei depois como fazer a pesquisa com o resultado do array.

$prova1 = mysql_query("
 SELECT *
 FROM `apo_chronoforms_data_marcas_registo`
 WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}' AND `prova_marcas` = '{$form->data['prova_select1']}' ORDER BY `marca_marcas` LIMIT 1");

Depois o while, etc...

Neste 2º passo, o codigo sql funciona mas tenho que estar a fazer uma pesquisa por cada prova que o utilizador escolhe.

Desde já, os meus agradecimentos por possíveis ajudas

António Graça

Editado por AntonioGraca

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

$lista_provas1=mysql_query("
 SELECT DISTINCT (`prova_marcas`)
 FROM `apo_chronoforms_data_marcas_registo`
 WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}'");
$lista_provas=array($lista_provas1);

while ($linha = mysql_fetch_array($lista_provas)) {
echo $linha['prova_marcas'];
}

Devia de ser algo como:

$lista_provas=mysql_query("
 SELECT DISTINCT (`prova_marcas`)
 FROM `apo_chronoforms_data_marcas_registo`
 WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}'");

while ($linha = mysql_fetch_array($lista_provas)) {
echo $linha['prova_marcas'];
}

Já agora, 2 coisas.

1º as funções mysql_* já estão classificadas como deprecated. Usa o mysqli ou o PDO.

2º Verifica se ha erros

3º Pq é que estavas a meter o resource que o mysql_query() retorna num array?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AntonioGraca

Olá Bruno

1º, muito obrigado pela resposta. Na realidade, iria jurar que já tinha testado essa solução, mas parece que não pois agora não dá erro.

Bom, temos o 1º passo. Retornou o seguinte: Corta-mato1500m800m300m1000m3000m que são as provas que um determinado atleta tem registadas em como fez.

Mas e agora o 2º passo?

2º - A partir dos dados desse array, fazer uma pesquisa à mesma tabela onde pesquisava as provas que o atleta tem introduzidas seleccionando apenas a melhor marca em cada prova.

Tenho este código,

$prova1 = mysql_query("
SELECT *
FROM `apo_chronoforms_data_marcas_registo`
WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}' AND `prova_marcas` = '{$form->data['prova_select1']}' ORDER BY `marca_marcas` LIMIT 1");

Neste 2º passo, o codigo sql funciona mas tenho que estar a fazer uma pesquisa por cada prova que o utilizador escolhe. Mas como meter os valores do array neste código para retornar a melhor marca de cada uma das provas contidas no array?

Mais uma vez, muito obrigado Bruno.

António Graça

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Preciso de código exemplo do HTML do formulário (se há várias possibilidades, então mostra umas 2-4) (o HTML visto pelo browser)

Editado por brunoais

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AntonioGraca

Não te assustes... Não sei se percebeste bem a minha dificuldade...

Estava a fazer assim, um sql para cada prova escolhida pelo utilizador. Mas na realidade, com os dados das provas do array deve ser possivel pesquisar todos apenas com uma pesquisa.

<?php
$user =& JFactory::getUser();
$user_id = $user->id;
$atleta_select=JRequest::getVar('atleta_select');
$prova_select1=JRequest::getVar('prova_select1');
$prova_select2=JRequest::getVar('prova_select2');
$prova_select3=JRequest::getVar('prova_select3');
$prova_select4=JRequest::getVar('prova_select4');
$prova_select5=JRequest::getVar('prova_select5');
$prova_select6=JRequest::getVar('prova_select6');
$prova1 = mysql_query("
 SELECT *
 FROM `apo_chronoforms_data_marcas_registo`
 WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}' AND `prova_marcas` = '{$form->data['prova_select1']}' ORDER BY `marca_marcas` LIMIT 1");
$prova2 = mysql_query("
 SELECT *
 FROM `apo_chronoforms_data_marcas_registo`
 WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}' AND `prova_marcas` = '{$form->data['prova_select2']}' ORDER BY `marca_marcas` LIMIT 1");
$prova3 = mysql_query("
 SELECT *
 FROM `apo_chronoforms_data_marcas_registo`
 WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}' AND `prova_marcas` = '{$form->data['prova_select3']}' ORDER BY `marca_marcas` LIMIT 1");
$prova4 = mysql_query("
 SELECT *
 FROM `apo_chronoforms_data_marcas_registo`
 WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}' AND `prova_marcas` = '{$form->data['prova_select4']}' ORDER BY `marca_marcas` LIMIT 1");
$prova5 = mysql_query("
 SELECT *
 FROM `apo_chronoforms_data_marcas_registo`
 WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}' AND `prova_marcas` = '{$form->data['prova_select5']}' ORDER BY `marca_marcas` LIMIT 1");
$prova6 = mysql_query("
 SELECT *
 FROM `apo_chronoforms_data_marcas_registo`
 WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}' AND `prova_marcas` = '{$form->data['prova_select6']}' ORDER BY `marca_marcas` LIMIT 1");

echo "<table width='100%'>";
echo '<tr>
<th bgcolor="#008dd2", height="25px"><span style="color: #ffffff;">Prova</th>
<th bgcolor="#008dd2"><span style="color: #ffffff;">Marca</th>
<th bgcolor="#008dd2"><span style="color: #ffffff;">Data</th>
<th bgcolor="#008dd2"><span style="color: #ffffff;">Época</th>
<th bgcolor="#008dd2"><span style="color: #ffffff;">Local</th>
<th bgcolor="#008dd2"><span style="color: #ffffff;">Competição</th>
</tr>';
/// Cor de fundo das linhas da listagem
$i = 1;
if ($i == '1')
  {
 $cor = "#FFFFFF";
   $i = "0";
  }
  else
  {
$cor = "#f6f6f6";
  $i = "1";
  }
while ($linha1 = mysql_fetch_array($prova1)) {
$data_nasc_db = strtotime($linha1['data_marcas']);
$data_nasc = date('d-m-Y', $data_nasc_db);
echo "<tr><td bgcolor='$cor'><center>" . $linha1['prova_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha1['marca_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $data_nasc . "</center></td><td bgcolor='$cor'><center>" . $linha1['epoca_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha1['local_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha1['competicao_marcas'] . "</center></td></tr>";
if ($i == '1')
  {
 $cor = "#FFFFFF";
   $i = "0";
  }
  else
  {
$cor = "#f6f6f6";
  $i = "1";
  }
}
while ($linha2 = mysql_fetch_array($prova2)) {
$data_nasc_db = strtotime($linha2['data_marcas']);
$data_nasc = date('d-m-Y', $data_nasc_db);
echo "<tr><td bgcolor='$cor'><center>" . $linha2['prova_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha2['marca_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $data_nasc . "</center></td><td bgcolor='$cor'><center>" . $linha2['epoca_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha2['local_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha2['competicao_marcas'] . "</center></td></tr>";
if ($i == '1')
  {
 $cor = "#FFFFFF";
   $i = "0";
  }
  else
  {
$cor = "#f6f6f6";
  $i = "1";
  }
}
while ($linha3 = mysql_fetch_array($prova3)) {
$data_nasc_db = strtotime($linha3['data_marcas']);
$data_nasc = date('d-m-Y', $data_nasc_db);
echo "<tr><td bgcolor='$cor'><center>" . $linha3['prova_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha3['marca_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $data_nasc . "</center></td><td bgcolor='$cor'><center>" . $linha3['epoca_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha3['local_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha3['competicao_marcas'] . "</center></td></tr>";
if ($i == '1')
  {
 $cor = "#FFFFFF";
   $i = "0";
  }
  else
  {
$cor = "#f6f6f6";
  $i = "1";
  }
}
while ($linha4 = mysql_fetch_array($prova4)) {
$data_nasc_db = strtotime($linha4['data_marcas']);
$data_nasc = date('d-m-Y', $data_nasc_db);
echo "<tr><td bgcolor='$cor'><center>" . $linha4['prova_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha4['marca_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $data_nasc . "</center></td><td bgcolor='$cor'><center>" . $linha4['epoca_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha4['local_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha4['competicao_marcas'] . "</center></td></tr>";
if ($i == '1')
  {
 $cor = "#FFFFFF";
   $i = "0";
  }
  else
  {
$cor = "#f6f6f6";
  $i = "1";
  }
}
while ($linha5 = mysql_fetch_array($prova5)) {
$data_nasc_db = strtotime($linha5['data_marcas']);
$data_nasc = date('d-m-Y', $data_nasc_db);
echo "<tr><td bgcolor='$cor'><center>" . $linha5['prova_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha5['marca_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $data_nasc . "</center></td><td bgcolor='$cor'><center>" . $linha5['epoca_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha5['local_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha5['competicao_marcas'] . "</center></td></tr>";
if ($i == '1')
  {
 $cor = "#FFFFFF";
   $i = "0";
  }
  else
  {
$cor = "#f6f6f6";
  $i = "1";
  }
}
while ($linha6 = mysql_fetch_array($prova6)) {
$data_nasc_db = strtotime($linha6['data_marcas']);
$data_nasc = date('d-m-Y', $data_nasc_db);
echo "<tr><td bgcolor='$cor'><center>" . $linha6['prova_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha6['marca_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $data_nasc . "</center></td><td bgcolor='$cor''><center>" . $linha6['epoca_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha6['local_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha6['competicao_marcas'] . "</center></td></tr>";
if ($i == '1')
  {
 $cor = "#FFFFFF";
   $i = "0";
  }
  else
  {
$cor = "#f6f6f6";
  $i = "1";
  }
}
echo "</table>";
if ($prova4==0) {
echo "teste";
}
?>

António Graça

No formulário pode-se escolher uam prova em $prova_select1 (que irá ser pesquisada em $prova1), e assim sucessivamente até $prova_select6.

Recordo os dados desse formulário:

tabela = (apo_chronoforms_data_marcas_registo)

utilizador = (cf_user_id)

$atleta_select = (nome_marcas)

$prova_select = (prova_marcas)

António Graça

Editado por AntonioGraca

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Preciso de código exemplo do HTML do formulário (se há várias possibilidades, então mostra umas 2-4) (o HTML visto pelo browser)

E tb n sei o que é esse JRequest. Eu sempre usei as variáveis directamente nos arrays $_GET e $_POST


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AntonioGraca

Olá Bruno

Eu estou a trabalhar com o chronoforms e há código gerado pelo componente. Seria possível concentrarmo-nos apenas no array e como fazer a pesquisa com os valores desse array?

Temos o código do array:

$lista_provas=mysql_query("
SELECT DISTINCT (`prova_marcas`)
FROM `apo_chronoforms_data_marcas_registo`
WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}'");
while ($linha = mysql_fetch_array($lista_provas)) {
echo $linha['prova_marcas'];
}

Ele retornou estes dados:

array=Corta-mato1500m800m300m1000m3000m (isto é um exemplo porque podem ser outros)

Eu com uma prova faço este código:

$prova1 = mysql_query("
SELECT *
FROM `apo_chronoforms_data_marcas_registo`
WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}' AND `prova_marcas` = '{$form->data['prova_select1']}' ORDER BY `marca_marcas` LIMIT 1");

E a questão que coloco é, com este código e os dados do array, como altero o código da pesquisa para retornar as melhores marcas (ORDER BY `marca_marcas` LIMIT 1) de cada uma prova contida no array.

Será preciso substituir (penso) esta paret do código

`prova_marcas` = '{$form->data['prova_select1']}'

em que em vez de pesquisar apenas uma prova vai pesquisar as várias que estão contidas no array. Volto a dizer, penso... Mas como? :confused:

Mais uma vez, obrigado pela atenção.

António Graça

Editado por AntonioGraca

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Vê se é isto que procuras:

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_in

É que, fora isso, não tenho dados para te dar uma ajuda concreta, só tenho pozinhos.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AntonioGraca

Sim, deve andar por aqui e já andava a explorar essa opção.

Já tinha testado e só me encontra o 1º valor da expressão quando sei que há lá 5 (p.ex).

Direi do andamento da coisa

Já tinha testado mas só

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AntonioGraca

Olá, mais uma vez

A coisa vai andando mas ainda com uma falha que não estou a ver porque.

Então fiz este código para obter as provas a pesquisar:

$lista_provas=mysql_query("
SELECT DISTINCT (`prova_marcas`)
FROM `apo_chronoforms_data_marcas_registo`
WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}'");
while ($linha = mysql_fetch_array($lista_provas)) {
$cond.= "'".$linha['prova_marcas']."'".',';
///echo $linha['prova_marcas'];
}
$size = strlen($cond);
$condicao = substr($cond,0,$size-1);

Ao fazer

echo $condicao;

retorna '800m','1500m','Milha','1000m','300m'

Depois utilizei esses dados num select com o IN

$provas = mysql_query("
 SELECT *
 FROM `apo_chronoforms_data_marcas_registo`
 WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}' AND `prova_marcas` IN ($condicao) ORDER BY `marca_marcas` LIMIT 1");

Mas só retorna o primeiro registo (referente à prova de 800m) quando eu sei que deveria de retornar 5 provas ('800m','1500m','Milha','1000m','300m').

Experimentei com um exemplo simples $condicao="'800m','1500m'"; e deu na mesma coisa. Só o primeiro registo apareceu.

Tinha seguido este exemplo...

$sql=mysql_query("select * from tb_album where id_album in($condicao) order by id_album");

Seré deste query?

while ($linha1 = mysql_fetch_array($provas)) {
$data_nasc_db = strtotime($linha1['data_marcas']);
$data_nasc = date('d-m-Y', $data_nasc_db);
...
}

Estou aberto a ugestões. Já estev mais longe... :D

António Graça

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Dica:

Quado queres mais q 1 coisa, não se indica ao DBMS que só se quer 1 coisa.

Editado por brunoais

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AntonioGraca

Antes o ORDER BY `marca_marcas` LIMIT 1 funcionava bem, apresentava-me a melhor marca de cada uma das provas que o utilizador escolhia. Dai o facto de ter mantido para conseguir o mesmo resultado :confused:

Ok, retirei o ORDER BY `marca_marcas` LIMIT 1 e já aparecem todas. Mas todas mesmo :cheesygrin: . Eu tinha o LIMIT 1 para aparecer apenas a melhor marca em cada uma das provas ('800m','1500m','Milha','1000m','300m'), ou seja, mostrar apenas o valor mais pequeno de cada prova e não as provas todas de cada distância.

Sabes a solução? :cheesygrin:

Vou dar mais umas marteladas, mas continuo a dizer, já se esteve mais longe.

António Graça

Editado por AntonioGraca

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AntonioGraca

Ola, mais uma vez....

Experimentei as propostas e não resultaram, ou pelo menos e não consegui que resultassem. No entanto, ontem depois de ter fechado o pc lembrei-me desta ideia: se não posso utilizar o ORDER BY LIMIT 1 numa pesquisa com um array, então porque não colocar uma pesquisa dentro do ciclo que extrai os valores do array? Por cada ciclo, por cada valor extraido do array, faz uma pesquisa por esse valor podendo assim utilizar o ORDER BY LIMIT 1.

Então segui este raciocínio:

Pesquisa para verificar quais as provas que o atleta tem registadas na tabela e passá-las para um array

Ciclo para extrair quais as provas contidas do array

Encontra a 1ª prova contida no array

-- Pesquisa para encontrar a 1ª prova do array

--- Escreve os dados da 1ª prova

--- <Table> para fazer o header da listagem

--- Ciclo while para escrever os dados encontrados

--- Fecha o ciclo que escrever os dados

Fecha o cilco que extrai o array

--- </Table> Fecha table

Cada vez que passa pelo ciclo escreve uma prova podendo (penso eu) utilizar o ORDER BY `marca_provas` LIMIT 1 para em cada passagem pelo ciclo encontrar a melhor marca da prova encontrada no 1º valor do array. E assim sucessivamente com o 2º valor, 3º valor, até se acabarem os valores contidos no ciclo do array.

Mas logo que encontra o 1º valor do array, coloca a melhor marca da prova (caso eu coloque ODER BY LIMIT 1) e sai fora do ciclo do array. Isto acontece quer eu utilize o ODER BY LIMIT 1 ou não.

Portanto, os plano sairam furados.

Código

$lista_provas=mysql_query("               /// select para encontrar as provas que atleta tem registadas na tabela e colocá-las num array
SELECT DISTINCT (`prova_marcas`)
FROM `apo_chronoforms_data_marcas_registo`
WHERE `cf_user_id`=$user_id AND
`nome_marcas` = '{$form->data['atleta_select']}'");

while ($linha = mysql_fetch_array($lista_provas)) {  /// ciclo para extrair os valores do array
$condicao.= "'".$linha['prova_marcas']."'";                /// encontra o valor do array

  $provas = mysql_query("                                      /// select para encontrar na tabela a prova (ou seja, o valor contido na array)  
  SELECT *
  FROM `apo_chronoforms_data_marcas_registo`
  WHERE `cf_user_id`=$user_id AND
 `nome_marcas` = '{$form->data['atleta_select']}' AND `prova_marcas` IN ($condicao)  ORDER BY `marca_marcas`LIMIT 1"); /// com o ORDER BY LIMIT 1 dá-me a melhor marca dessa prova pesquisada

    echo "<table width='100%'>";                  /// escreve a header da listagem
    echo '<tr>
    <th bgcolor="#008dd2", height="25px"><span style="color: #ffffff;">Prova</th>
    <th bgcolor="#008dd2"><span style="color: #ffffff;">Marca</th>
    <th bgcolor="#008dd2"><span style="color: #ffffff;">Data</th>
    <th bgcolor="#008dd2"><span style="color: #ffffff;">Época</th>
    <th bgcolor="#008dd2"><span style="color: #ffffff;">Local</th>
    <th bgcolor="#008dd2"><span style="color: #ffffff;">Competição</th>
    </tr>';

    while ($linha1 = mysql_fetch_array($provas)) {              /// inicía um ciclo para extrair os dados do slect
    $data_nasc_db = strtotime($linha1['data_marcas']);
    $data_nasc = date('d-m-Y', $data_nasc_db);

    echo "<tr><td bgcolor='$cor'><center>" . $linha1['prova_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha1['marca_marcas'] . "              </center>     </td><td bgcolor='$cor'><center>" . $data_nasc . "</center></td><td bgcolor='$cor'><center>" . $linha1['epoca_marcas'] . "</center></td>    <td bgcolor='$cor'><center>" . $linha1['local_marcas'] . "</center></td><td bgcolor='$cor'><center>" . $linha1['competicao_marcas'] . "</center></td>    </tr>";
    } ///fecha o ciclo onde escreve os dados

} /// fecha o ciclo do array
echo "</table>"; 

Como esyás a ver, o código já encolheu drásticamente.

Podes dar uma vista de olhos para perceberes porque ele quando encontra o 1º valor do array sai fora do ciclo?

Obrigado

António Graça

Editado por AntonioGraca

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AntonioGraca

Corrigindo de

$condicao.= "'".$linha['prova_marcas']."'";

para

$condicao= "'".$linha['prova_marcas']."'";

Assim o while Já não salta fora do ciclo (nem sei porque é que aquele pontinho de concatenação ficou ali...)

Com isto, considero solucionado o tópico.

Obrigado a quem deu o seu contributo

António Graça

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.