Codigo para mostrar data de uma base de dados. - PHP - Portugal-a-Programar
Codigo para mostrar data de uma base de dados.
By Casteloes, January 8, 2009 in PHP
Casteloes 0
Eu ando a tentar fazer um código que me permite ler os registos de uma base de dados
Só mesmo ler os registos nada de modificar ou criar novos registos.
O código lê os dados mas ficam todos na mesmo página. Não da para alterar isto de modo a que fique um registo por página e que depois tenha a opção de navegar entre registos?
mysql_select_db("nomebasedados", $con);
echo "<b><u>Entry Number: ".$i."<br />";
echo $row['SubCategoria'];
echo $row['Denominaçao'];
echo $row['Identificacao'];
echo $row['Localizacao'];
echo $row['Enquadramento'];
echo "<br /> etc... <br /><br />";
É possível, saca o ID do url, está no array $_GET,
podes saca-lo tipo assim
depois faz um query com um where Identificação = $id.
Terá tambem que pedir todos os ids e coloca-los em links do tipo
echo "<a href=\"script.php?id=$id\">"
É pena ainda não termos nenhum exemplo destes no nosso wiki.
Na verdade podes fazer um script destes que mudando apenas uma ou duas variáveis pode ser reutilizável para qualquer tabela.
Vou tentar fazer isso se conseguir.
Não podes dar uma ajuda mais detalhada? Os meus conhecimentos nisto são minimos.
Ok, comaçando pelo principio. Qual é a chave da tabela e qual o seu formato?
A chave primaria é um campo que por acaso nem aparece ai chamado "Inventario" que é um campo numérico com numeros automaticos.
O formato da tabela como assim?
O formato da chave perguntava eu. Ao que já respondeste mais ou menos, aparentemente é um inteiro com autoincrement.
Então vamos lá fazer uma coisa de cada vez que o teu código está um pouco esquisito. Por exemplo, a variável $i não serve para nada.
Se é só para consultar os dados, para perceberes melhor o que se passa, podes ver o coneudo todo de um array usando a função print_r().
Então... mudando o teu código um pouco.
//sacar o id do URL, lê no manual a documentação sobre superglobais
//previnir injecções de SQL. Assegura-te que o a variável $id tem de facto um inteiro
//pedir só um registo
$result = mysql_query("SELECT * FROM table1 WHERE Inventario=$id");
Atenção... para isto funcionar tens que inserir um URL do tipo:
http://example.com/path/oteuscript.php?id=1
sibstitui 1, pelo valor do id do registo que queiras ver. Se houve alguma coisa que não percebeste avisa. A parte dos links fica para praticares, se precisares de ajuda pergunta aqui.
podes sempre experimentar o teu codigo inicial mas em vez de mysql_fetch_array() poe: mysql_fetch_assoc()
Tenho 2 dúvidas.
Em primeiro lugar o script mostra 2 vezes o mesmo resultado:
[1] => dfgdfg
[Categoria] => dfgdfg
Será problema do script ou de como a base de dados está configurada?
A outra é que um dos campos é o endereço de uma imagem mas neste código não aparece a imagem mas sim o endereço como eu coloquei.
Terei de alterar este código para mostrar a imagem não?
http://se2.php.net/mysql_fetch_array
Quanto à imagem, é isso que é suposto aparecer. Os computadores fazem muita coisa, mas ainda não adivinham o que o seu utilizador quer
Faz uma pesquisa no google e vê melhor como isto funciona:
http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=php+mysql+image
Eu perguntei da imagem porque onde li num fórum em inglês supostamente era só colocar o endereço da imagem que ao ser lido ia mostrar a imagem. Mas ao dizeres isso tem lógica não ser assim.
Vou ler isso a ver se resolvo o que quero.
Ok, eu respondo, mas não vou dizer nada que não encontres com uma pesquisa no google.
A forma mais usada de guardar imagens é:
Guardar as imagens numa pasta e na base de dados ter apenas o seu endereço para a poder mostrar. Claro que se vires o conteudo da base de dados só lá está o endereço da imagem. Para veres a imagem tens que pegar nesse endereço e escrever uma tag HTML que mostre a imagem.
se preferires guardar a imagem na base da dados, tens que por um campo com o tipo de dados blob mas depois para a mostrar tens que podar o headr da pagina e isso, e da um bocado mais de trabalho do que o pedrotuga disse.
Eu ainda não tive tempo para pegar nisto mas logo pego.
Depois digo se tiver alguma dúvida.
Este site estava em baixo mas pelos vistos não era definitivo.
Pode pegar no teu 'create table' em sql e inseri-lo aqui:
http://www.phpscaffold.com/
Isso dá-te uns scripts que fazem exactamente o que queres, se os analizares com cuidado dá para perceber como estas coisas funcionam.
Basta ir ao phpmyadmin -> seleccionar a base de dados -> export -> e depois copiar o texto para lá não é?
Mas dá-me um erro: "Cannot find 'CREATE TABLE `table_name` ( '"
Teoricamente deveria dar se copiasse o texto todo não?
Tens que fazer tabela a tabela, afixa aqui o teu SQL que estás a colar lá e já vemos qual é o problema.
Eu estava a passar "CREATE TABLE IF NOT EXISTS `table1` (" como tinha no SQL.
Passei só "CREATE TABLE `table1` (" e funcionou.
Não está a funcionar:
// connect to db $link = mysql_connect('localhost', 'root', 'teste'); if (!$link) { die('Not connected : ' . mysql_error()); } if (! mysql_select_db('foo') ) { die ('Can\'t use foo : ' . mysql_error()); }
O problema deve ser do ficheiro config.php que faz a ligação com a base de dados.
Usei o ficheiro que eles dão como exemplo e alterei o necessário:
$link = mysql_connect('localhost', 'root', 'teste');
if (! mysql_select_db('foo') ) {
Já experimentei substituir "foo" por o nome da base de dados mas não funciona.
Bem lá vou andando mas agora falta mesmo é a parte da navegação.
Como é que eu posso criar uma navegação.
Tendo em conta que a página é aberta através de um id não dá para fazer id +1 por ir para o próximo registo.
Imaginando que estava na página script.php?id=1 e arranjar uma maneira que o link próximo ia para o registo script.php?id=2.
Por exemplo tentei isto: <a href=ficheiro.php?id=(&id+1)>Proximo</a>
É mais ou menos isso que tens que fazer. Mas está uma grande confusão na tua cabeça. Estás a fazer uma orgia de html com PHP. Uma coisa são scripts PHP que são executados no servidor, outra coisa é o seu output que é o que tu vez no browser.
Quando muito seria uma coisa deste tipo:
<a href="ficheiro.php?id=<?php echo($id+1); ?>" >Proximo</a>
Não tens é nenhuma garantia que os ids sejam numeros inteiros uns a seguir aos outros, mas isso é outra história.
Começa por ler o manual do php em http://php.net, a primeira parte que se chama "um tutorial simples" vai aclarar-me muito as ideias.
Eu tentei colocar isso mas dá erro e tentei várias coisas como por exemplo:
<a href="ver2.php?id=<?php echo($id+1); ?>" >Proximo</a>;
echo <a href="ver2.php?id=<?php echo($id+1); ?>" >Proximo</a>;
Dá o seguinte erro: "Parse error: parse error in" na linha em que se encontra esse código.
Sem essa linha funciona tudo bem mas ao introduzir a linha da erro.
Mas isse código que eu te dei é php válido
p@p-laptop:~$ php
<?php $id=1; echo($id+1);?>
Parece-me que estás a pegar em bocado daqui bocado dali sem perceber o que estás na verdade a fazer. Lê o manual.
O que eu queria dizer era que coloquei o código que me deste e quanto tentava entrar no ficheiro dava esse erro.