Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos, tenho uma página que recebe 3 imagens datadas nos últimos 7 dias randomicamente.
$sql = "SELECT * FROM artes WHERE data > (CURRENT_DATE - 7) ORDER BY RAND() LIMIT 3";
Porém se houvesse menos de 3 imagens nos últimos 7 dias, faria outra consulta para completar 3.
Tenho uma variável $reg que recebe a consulta inicial, e com ela faço teste de quantas linhas tem, e se for menor que 3, faz outra consulta com limite da quantidade que falta para 3.
Eu preciso que as linhas que me forem retornadas na segunda consulta, fiquem juntas na variável $reg pra eu fazer um while() só, tem como?
Não tem como fazer o que você quer da forma que você quer. O que você pode fazer é dentro do while adicionar os valores à um array. Na segunda consulta você faz a mesma coisa e adiciona os valores ao mesmo array. Aí depois você utiliza um foreach para exibir os dados.
Carlos Eduardo
@ Dee
Eu havia tentado, mas não deu não.
@ Carlos Eduardo
Boa garoto! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif
Consegui aqui, não sei se da melhor forma, mas...
$sql = "SELECT * FROM artes WHERE data > (CURRENT_DATE - 7) ORDER BY RAND() LIMIT 3";
$reg1 = mysql_query($sql);
$num1 = mysql_num_rows($reg1);
$id = 1;
$results = array();
while ($sql = mysql_fetch_assoc($reg1)){
$result = array('artes'.$id =>
array('id' => $sql['id'],
'titulo' => $sql['titulo'],
'autor' => $sql['autor'],
'data' => $sql['data'],
'img_peq' => $sql['img_peq'],
'img_gde' => $sql['img_gde']));
$results = array_merge($results, $result);
$id++;
}
if ($num1 < 3){
if ($num1 == 1){ $r = 2; } else { $r = 1; }
$sql = "SELECT * FROM artes WHERE data < (CURRENT_DATE - 7) ORDER BY RAND() LIMIT $r";
$reg2 = mysql_query($sql);
while ($sql = mysql_fetch_assoc($reg2)){
$result = array('artes'.$id =>
array('id' => $sql['id'],
'titulo' => $sql['titulo'],
'autor' => $sql['autor'],
'data' => $sql['data'],
'img_peq' => $sql['img_peq'],
'img_gde' => $sql['img_gde']));
$results = array_merge($results, $result);
$id++;
}
}
foreach ($results as $sql){ }
Não precisei nem mudar a chamada dos dados! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Não precisa fazer assim:
while ($sql = mysql_fetch_assoc($reg1)){
$result = array('artes'.$id =>
array('id' => $sql['id'],
'titulo' => $sql['titulo'],
'autor' => $sql['autor'],
'data' => $sql['data'],
'img_peq' => $sql['img_peq'],
'img_gde' => $sql['img_gde']));
$results = array_merge($results, $result);
$id++;
}
Pode fazer assim
$result = array();
while ($sql = mysql_fetch_assoc($reg1)){
$result[] = $sql;
}
Deve funcionar
Carlos Eduardo
Poste como você ta fazendo.
Mas tipo, pode ser assim se eh o que eu estou imaginando:
$reg = resultado 1
$reg .= resultado 2
$reg .= resultado 3
.= você junta