Ir para conteúdo

POWERED BY:

Arquivado

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

Mulambo

[Resolvido] Exibição de conteudo por array.

Recommended Posts

Olá,estou montando um sistema onde quero exibir o conteudo de uma database através de array, só que eu já tentei exibir e nada funciona! Ai vai meu código:

 

exibir_produto.php

 

<?php
include "conexao.php";
$id = (int)$_GET['id'];
if ($id != 0 or $id != NULL)
{
$query = mssql_query("SELECT produto,descricao FROM produtos WHERE Id='".$id."'");
$prodt = mysql_fetch_array($query);
}
?>
<div><h3><?php echo $prodt['produto']; ?></h3></div>
<div id="descricao"><?php echo $prodt['descricao']; ?></div>
Até aqui tranquilo, acho que tá certo o código, só que eu imagino que não funciona devido ao modo que pego as páginas e jogo no template,vou mostrar:

 

Index.php

 

<?php
$pagina = (isset($_GET["pagina"]) ? $_GET["pagina"] : "home"); // Pagina na request
$pagina = str_replace('.','/',$pagina); // <=== gambiarra
$arquivo = "paginas/{$pagina}.php";
// Incluimos o arquivo;
	if (file_exists($arquivo) == true) {
	include($arquivo);
	} else {
	include("paginas/erro.php");
}
?>

Não sei porque, mais os arrays não funcionam nunca! Se alguem souber, ou quiser me ajudar, agradeço! Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim

 

<?php
include "conexao.php";
$id = (int)$_GET['id'];
if ($id != 0 or $id != NULL)
{
$query = mssql_query("SELECT produto,descricao FROM produtos WHERE Id='".$id."'");
   while($prodt = mysql_fetch_array($query)){ ?>
      <div><h3><?php echo $prodt['produto']; ?></h3></div>
      <div id="descricao"><?php echo $prodt['descricao']</div>
<?php }

}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poxa, eu testei aqui.. continua exibindo a página vazia, sem retornar os resultados dos arrays!

 

:x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Evandro Oliveira

 

Sou iniciante em php, mais procurei aqui no google sobre 'print_f'.. no caso não seria

 

printf($prodt);

assim ficando o código:

 

<?php
include "conexao.php";
$id = (int)$_GET['id'];
if ($id != 0 or $id != NULL)
{
$query = mssql_query("SELECT produto,descricao FROM produtos WHERE Id='".$id."'");
$prodt = mysql_fetch_array($query);
printf($prodt);
}
?>

Me desculpe, mais não sei tanto de php assim.

Se for como eu disse ali em cima, eu já tentei, inclusive tentei com 'print_f($prodt)' em ambos os casos não obtive nenhum resultado.

 

Obrigado pela ajuda, aguardo mais respostas! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que sei não, porque mssql_fetch_array, é um comando para SQL Server, e não Mysql.. estou correto? quanto ao print_r vou testar! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, print_r, equívoco meu que escrevi na pressa.

 

Quanto a sua pergunta, veja que você faz a consulta a um servidor MS SQL e quer buscar resultados de um resource MySQL.

 

$query = mssql_query("SELECT produto,descricao FROM produtos WHERE Id='".$id."'");
$prodt = mysql_fetch_array($query);

Pode ser isso o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa, realmente um erro bobo aquele do MS Sql, arrumei aqui, mais não é a fonta do problema.

 

Só uma pergunta,os arrays exibem o que tá na database né? digo o nome dentro do array, deve ser o nome da tabela..

 

Exemplo:

<?php echo $prodt['produto]; ?>

 

No caso a palavra 'produto', ele pega da database certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Negativo. O array vai receber o que você jogar dentro dele.

 

Suponhamos que eu tenha a consulta:

SELECT `nome`, `idade` FROM `cadastro` WHERE `idade` > 18

 

No momento que eu passo essa consulta por mysql_query(), a função me retorna um resource.

 

Este resource será atravessado por uma função de leitura. Dentre elas temos as mais utilizadas:

 

  • fetch_array;
  • fetch_assoc;
  • fetch_row

O que as difere é o resultado linear que elas retornam.

 

Para compreender faça o teste:

 

<?php

mysql_connect('localhost','root','');
mysql_select_db('db');
$rs = mysql_query('select * from tabela limit 1');

echo '<h1>Resultado retornado pela função mysql_fetch_array</h1>';
while(false !== ($row = mysql_fetch_array($rs))) echo '<pre>' . print_r($row, 1) . '</pre>';

echo '<h1>Resultado retornado pela função mysql_fetch_assoc</h1>';
while(false !== ($row = mysql_fetch_array($rs))) echo '<pre>' . print_r($row, 1) . '</pre>';

echo '<h1>Resultado retornado pela função mysql_fetch_row</h1>';
while(false !== ($row = mysql_fetch_array($rs))) echo '<pre>' . print_r($row, 1) . '</pre>';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim, cada função exibe o resultado de uma forma.. muito bom saber!

Mais o que não entendo é porque aqueles arrays meus não retornam em nada, as querys estão OK, e acredito que os arrays também.

 

Eu ainda estou achando que é pelo modo que pego as páginas..

quando clico num link por exemplo, gera o seguinte endereço:

 

http://localhost/site/?pagina=ver_produto&?id=1

 

Pensando pela lógica o código pega a id pela url, joga na query, que busca o conteudo da id no banco e por fim joga no array. Mais ai a parte que você explicou sobre array eu não entendi tão bem.

 

"O array vai receber o que você jogar dentro dele."

 

Ele pega exatamente o que foi escrito né? mais pega de onde? Da database, via query certo?

 

PS.: Desculpe encher o saco, mais tem coisa que eu não consigo me virar sozinho! Ainda tenho muito o que estudar! Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a sua intimidade com o conceito matemático de vetor e matriz? Isso é essencial para a compreensão e usabilidade do conceito.

 

Procure também, entender do que se trata o ponteiro que navega pelos elementos de tipo resource.

 

Quando faço uma consulta, de retorno (select, explain, show, describe), o resource retornado faz referência a uma tabela, seja ela de 1 (seu caso, espero) ou 900 linhas, ela é uma tabela e sempre será.

 

Como tabela, podemos tratá-la como vetor bidimensional, matriz.

 

Cada linha da tabela retornada, é um vetor. Vamos brincar de batalha naval??

 

|A|B|C|D|E|F|G
0| | | | | | | |
1| | | | | | | |
2| | | | | | | |
3| | | | | | | |
4| | | | | | | |
5| | | | | | | |
6| | | | | | | |

Primeiro, o ponteiro seleciona uma linha. Obviamente, vamos começar do começo, estamos na linha 0.

 

Como você já deve ter percebido, a função *_fetch_row() retorna uma matriz numérica, *_fetch_assoc() uma matriz associativa enquanto *_fetch_array retorna os dois.

 

Note que, como utilizamos while(), o ponteiro sobrescreve a nossa variável $row, a cada avanço de linha. Para salvar o resultado efetivo da tabela, teríamos que guardar cada passagem do ponteiro em uma variável auxiliar.

 

Execute no bloco a seguir, uma consulta que retorne pelo menos duas linhas:

 

<?php mysql_connect('localhost','root','');
mysql_select_db('db');
$rs = mysql_query('select * from tabela');

$resposta = array();
while(false !== ($row = mysql_fetch_assoc($rs))) $resposta[] = $row;

print_r($resposta);

 

O resultado é a nossa tão falada matriz associativa. No primeiro índice (iniciado por 0) temos a linha, enquanto o segundo índice nomeia a coluna.

 

Assim se quisermos pegar o nome da quarta linha, utilizamos:

 

echo $resposta[3]['nome'];

Isso que eu quis dizer com "receber o que você jogar dentro dele".

 

Formate, manipule, configure seu vetor de modo que você entenda o que está contido dentro dele, assim você saberá como trabalhar com o tal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah entendi melhor agora o conceito, vou dar uma estudada, me informar melhor pra ver se descubro o porque de não retornar meus resultados, quando tiver algum avanço irei postar aqui!

 

Aguardo uma possivel solução! Abraços e obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos, achei a fonte do problema!

 

Veja o exemplo de como estava gerando o link para as páginas:

 

http://localhost/site/?pagina=ver_produto&?id=4

pois é, agora veja como estava o código, veja com atenção o GET:

<?php
include "conexao.php";
$id = (int)$_GET['id'];
if ($id != 0 or $id != NULL)
{
$query = mssql_query("SELECT produto,descricao FROM produtos WHERE Id='".$id."'");
$prodt = mysql_fetch_array($query);
}
?>

Então foi só mudar o get por:

<?php
include "conexao.php";
$id = (int)$_GET['?id'];
if ($id != 0 or $id != NULL)
{
$query = mysql_query("SELECT produto,descricao FROM produtos WHERE Id='".$id."'");
$prodt = mysql_fetch_array($query);
}
?>

E pronto, problema resolvido! :D :D

 

Agradeço a todos, e quero poder ajudar quem for preciso,( mesmo sabendo muito pouco ^^)

 

Ps.:Algum mod, delete meu post anterior para evitar flood!

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.