Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lucas Roberto

PHP + MySQL

Recommended Posts

Olá, Boa Tarde.

 

Estou quebrando a cabeça com um problema: tenho um código php que faz consultas no mysql, preciso que ele me liste os ultimos 4 campos da tabela sqlart de forma que o conteúdo fique relacionado.

 

ex:

 

<?php
// dados do banco Mysql
$local = "localhost";
$usuario = "root";
$senha = "12345";
$banco = "teste";

$connect = mysql_connect("$local","$usuario","$senha") or die("ERRO AO CONECTAR AO BANCO DE DADOS, VERIFIQUE COM O ADMINISTRADOR" . mysql_error());
mysql_select_db("$banco") or die("BASE DE DADOS INVÁLIDO");

$data = date("d/m/Y");

$sqlart = "SELECT * FROM tabela1 WHERE tabela1.`state` NOT IN (0) AND tabela1.`id` NOT IN (8,9,20,15,16,124) AND tabela1.`access` NOT IN (5,4,3,2) LIMIT 4 ORDER BY created DESC";

$sqlcat ="SELECT tabela2.path FROM tabela2 inner join tabela1 on(tabela1.catid=tabela2.id) WHERE tabela1.`state` NOT IN (0) AND tabela1.`id` NOT IN (8,9,20,15,16) ORDER BY created DESC ";

$query = mysql_query($sqlart);
$query2 = mysql_query($sqlcat);
?>

<div>código js</div>
<div id="nav">

<?php
while($result = mysql_fetch_array ($query) and $result2 = mysql_fetch_array ($query2)){
?>

<!--codigos1-->
<!--codigo 1-->

<a href="/".$result2[path].'/'.$result[id].'-'.$result[alias]?>"></a>

<!--codigo 2-->

<a href="/".$result2[path].'/'.$result[id].'-'.$result[alias]?>"></a>

<!--codigo 3-->

<a href="/".$result2[path].'/'.$result[id].'-'.$result[alias]?>"></a>

<!--codigo 4-->

<a href="/".$result2[path].'/'.$result[id].'-'.$result[alias]?>"></a>

<!--codigos2-->
<!--codigo 1--><a href="<?="/".$result2[path].'/'.$result[id].'-'.$result[alias]?>"><?=$result[title];?><br/><span><![CDATA[<?=$result["introtext"];?></span></a></li>

<!--codigo 2--><a href="<?="/".$result2[path].'/'.$result[id].'-'.$result[alias]?>"><?=$result[title];?><br/><span><![CDATA[<?=$result["introtext"];?></span></a></li>

<!--codigo 3--><a href="<?="/".$result2[path].'/'.$result[id].'-'.$result[alias]?>"><?=$result[title];?><br/><span><![CDATA[<?=$result["introtext"];?></span></a></li>

<!--codigo 4--><a href="<?="/".$result2[path].'/'.$result[id].'-'.$result[alias]?>"><?=$result[title];?><br/><span><![CDATA[<?=$result["introtext"];?></span></a></li>

<? }?>

 

Preciso que os resultados de codigos1 e codigos2 sejam iguais, por exemplo: $result[id] de codigo2 codigos1 seja igual ao de codigo2 codigos2 - e assim por diante.

 

Por onde começo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi o que você quis dizer com "retornar os 4 últimos CAMPOS", se deseja retornar os campos, selecione eles

 

SELECT campo1, campo2, campo3

 

Agora se for as 4 últimas linhas, um ORDER BY id DESC limit 4 deveria resolver seu problema

 

Agora você está utilizando no segundo select JOIN, então você pode por este mesmo SQL retornar os dados que você está solicitando na primeira query

 

$sqlcat ="SELECT tabela1.*, tabela2.path FROM tabela2 inner join tabela1 on(tabela1.catid=tabela2.id) WHERE tabela1.`state` NOT IN (0) AND tabela1.`id` NOT IN (8,9,20,15,16) ORDER BY created DESC ";

$resultado = mysql_query($sqlcat);
$i=0;
while($line = mysql_fetch_array(resultado)) {
   if ($i===0) {
       // Código do primeiro SQL, será executado somente 1 vez.
   }
   $i++;
}

Assim você terá somente 1 query e todos os dados que necessita

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Kamusz, não deu bem o que queria, veja se pode me ajudar.

 

Tenho o código:

 

<div id="tv" align="center"><script type='text/javascript'>var index=1;var menu_time=6000;var anterior=4;var timer=setTimeout('trocaMsg()',menu_time);function trocaMsg(){index=index%4+1;channel(index);tempo()}function tempo(){clearTimeout(timer);timer=setTimeout("trocaMsg()",menu_time)}function channel(id){index=id;document.getElementById("tvn"+anterior).className="transp";document.getElementById("tvn"+id).className="opac";document.getElementById('tvshow').innerHTML=document.getElementById('tv'+id).innerHTML;anterior=id}function tvch(id,out){if(out==1){clearTimeout(timer);channel(id)}else{tempo()}}var index_p=1;var menu_time_p=2800;var anterior_p=5;var timer_p=setTimeout('trocaMsg_p()',menu_time_p);function trocaMsg_p(){index_p=index_p%4+1;channel_p(index_p);tempo_p()}function tempo_p(){clearTimeout(timer_p);timer_p=setTimeout("trocaMsg_p()",menu_time_p)}function channel_p(idx){index_p=idx;document.getElementById("tvp"+anterior_p).className="transp";document.getElementById("tvp"+idx).className="opac";document.getElementById('paptv').innerHTML=document.getElementById('ptv'+idx).innerHTML;anterior_p=idx}function tvch_p(idx,out){if(out==1){clearTimeout(timer_p);channel_p(idx)}else{tempo_p()}}function semerro(){return true}window.onerror=semerro;</script><div id="tvshow">


<!--SLIDE DE NAVEGAÇÕES-->
<!--SLIDE DE NAVEGAÇÃO 1-->
<a href="LINK1"><img height="30"width="46"onmouseout="tvch(1,0)"onmouseover="tvch(1,1)"src="images/home/tmp/tmp1.jpg"class="transp"id="tvn1"/></a>

<!--SLIDE DE NAVEGAÇÃO 2--><a href="LINK2"><img height="30"width="46"onmouseout="tvch(2,0)"onmouseover="tvch(2,1)"src="images/home/tmp/tmp2.jpg"class="opac"id="tvn2"/></a>

<!--SLIDE DE NAVEGAÇÃO 3--><a href="LINK3"><img height="30"width="46"onmouseout="tvch(3,0)"onmouseover="tvch(3,1)"src="images/home/tmp/tmp3.jpg"class="transp"id="tvn3"/></a>

<!--SLIDE DE NAVEGAÇÃO 4--><a href="LINK4"><img height="30"width="46"onmouseout="tvch(4,0)"onmouseover="tvch(4,1)"src="images/home/tmp/tmp4.jpg"class="transp"id="tvn4"/></a></div><ul id="hid">

<!--SLIDES-->
<!--SLIDE 1--><li id="tv1"><a href="LINK1"><img height="250"width="400"src="images/home/tmp/tmp1.jpg"/>TITLE1<br/><span>DESC1</span></a></li>

<!--SLIDE 2--><li id="tv2"><a href="LINK2"><img height="250"width="400"src="images/home/tmp/tmp2.jpg"/>TITLE2<br/><span>DESC2</span></a></li>

<!--SLIDE 3--><li id="tv3"><a href="LINK3"><img height="250"width="400"src="images/home/tmp/tmp3.jpg"/>TITLE3<br/><span>DESC3</span></a></li>

<!--SLIDE 4--><li id="tv4"><a href="LINK4"><img height="250"width="400"src="images/home/tmp/tmp4.jpg"/>TITLE4<br/><span>DESC4</span></a></li></ul><script type="text/javascript">channel(1);</script></div>

 

Preciso que os links dos slides e dos slides de navegação sejam iguais, ex: link1=link1, etc.

 

Por onde começo??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi temos a estrutura:

 

tabela1

id

nome

 

tabela2

id

tabela1_id

link

titulo

descricao

 

 

No caso, você deseja exibir os dados da primeira tabela e a seguir os dados relacionados na segunda tabela, com LI correto?

 

 

$query1 = "SELECT * FROM tabela1";
$executa = mysql_query($query1);

while($linha = mysql_fetch_array($executa)) {
  $query2 = 'SELECT * FROM tabela2 WHERE tabela1_id = ' . (int)$linha['id'];
  $executa2 = mysql_query($query2);

  echo '<h3>' . $linha['nome'] . '</h3>';
  echo '<ul>';

  while($item = mysql_fetch_array($executa2)) {
      echo '<li>' . $item['titulo'] . '</li>';
  }

  echo '</ul>';
}

 

 

Ou, até com uma única query, porém deve ordenar por ID para ter certeza de não exibir em local errado

 

$query = "
   SELECT 
       tab1.nome, 
       tab2.* 
   FROM tabela2 tab2 
   JOIN tabela1 tab1 
       ON tab1.id = tab2.tabela1_id
   ORDER BY tab1.nome, tab1.id
";

$executar = mysql_query($query);
$ultima_categoria = null;

while($linha = mysql_fetch_array($executar)) {
   if ($linha['tabela1_id'] != $ultima_categoria) {
       if ($ultima_categoria !== null) echo '</ul>';

       $ultima_categoria = $linha['tabela1_id'];

       echo '<h3>' . $linha['nome'] . '</h3>';
       echo '<ul>';
   }

   echo '<li>' . $linha['titulo'] . '</li>';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que sim, a estrutura é

 

content

[id]

[title]

[introtext]

[catid]

[alias]

 

categories

[id]

[path]

 

catid de content é igual ao id de categories, ou seja, para montar o link preciso criar uma associação entre eles de forma que fique: /path/id(content)-alias

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT
   categories.path,
   content.*
FROM
  content
JOIN categories ON categories.id = content.catid

 

Execute o comando e ve se é isto que precisa

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, agora você vai utilizar a query e colocar o resultado em um foreach, for, while como preferir...

 

Algo como

 

while($linha = mysql_fetch_assoc($resultado)) {
   echo '<li>'.$linha['titulo'].'</li>';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.