Mulambo 1 Denunciar post Postado Agosto 5, 2010 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
cesarmast 0 Denunciar post Postado Agosto 5, 2010 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
Mulambo 1 Denunciar post Postado Agosto 5, 2010 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 331 Denunciar post Postado Agosto 5, 2010 depure o conteúdo do Array utilizando print_f($prodt); Verifique se a mesma está realmente populada. Compartilhar este post Link para o post Compartilhar em outros sites
Mulambo 1 Denunciar post Postado Agosto 5, 2010 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
falcao544 11 Denunciar post Postado Agosto 5, 2010 Não sei se isso influi, mas nao seria melhor usar mssql_fetch_array? E eu acho que o Evandro quis dizer print_r Compartilhar este post Link para o post Compartilhar em outros sites
Mulambo 1 Denunciar post Postado Agosto 6, 2010 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
Evandro Oliveira 331 Denunciar post Postado Agosto 6, 2010 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
Mulambo 1 Denunciar post Postado Agosto 6, 2010 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
Evandro Oliveira 331 Denunciar post Postado Agosto 6, 2010 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
Mulambo 1 Denunciar post Postado Agosto 6, 2010 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
Evandro Oliveira 331 Denunciar post Postado Agosto 6, 2010 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
Mulambo 1 Denunciar post Postado Agosto 7, 2010 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
Mulambo 1 Denunciar post Postado Agosto 7, 2010 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