Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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<!--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?
Já está.
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
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??
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>';
}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
SELECT
categories.path,
content.*
FROM
content
JOIN categories ON categories.id = content.catid
Execute o comando e ve se é isto que precisa
Mostrou a menssagem: #1146 - Table 'bancodedados.content' doesn't exist.
tabela content não existe, arruma o nome caso esteja errado
Existe um prefixo, mas eu coloquei:
SELECT
prefix_categories.path,
prefix_content.*
FROM
prefix_content
JOIN prefix_categories ON prefix_categories.id = prefix_content.catid
Mesmo corrigindo o nome não funcionou?
não! :ermm:
As tabelas existem no banco de dados "bancodedados"?
Confere se você está no banco correto
Ok, recoloquei os prefixos e funcionou, retornou os resultados.
O que faço com esses dados?
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>';
}Oi Kamusz, Não funcionou.
Coloque o id do cadastro como desc, ex: ORDER BY id DESC