Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Casteloes

Codigo para mostrar data de uma base de dados.

Recommended Posts

Casteloes

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?

O código é este:

<?php

$con = mysql_connect("localhost","user","pass");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}


mysql_select_db("nomebasedados", $con);

$result = mysql_query("SELECT * FROM table1");

$i=1;

while($row = mysql_fetch_array($result))
  {
  echo "<b><u>Entry Number: ".$i."<br />";
  echo $row['Categoria'];
  echo "<br />";
  echo $row['SubCategoria'];
  echo "<br />";
  echo $row['Denominaçao'];
  echo "<br />";
  echo $row['Identificacao'];
  echo "<br />";
  echo $row['Localizacao'];
  echo "<br />";
  echo $row['Enquadramento'];
  echo "<br /> etc... <br /><br />";

  }

mysql_close($con);
?>

Share this post


Link to post
Share on other sites
pedrotuga

É possível, saca o ID do url, está no array $_GET,

podes saca-lo tipo assim

$id = intval($_GET["id"]);

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.

Share this post


Link to post
Share on other sites
Casteloes

Não estou a conseguir.

Não podes dar uma ajuda mais detalhada? Os meus conhecimentos nisto são minimos.

Share this post


Link to post
Share on other sites
Casteloes

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?

Share this post


Link to post
Share on other sites
pedrotuga

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.

<?php

$con = mysql_connect("localhost","user","pass");
if (!$con){
die('Could not connect: ' . mysql_error());
}

mysql_select_db("nomebasedados", $con);

//sacar o id do URL, lê no manual a documentação sobre superglobais
$id = $_GET["id"];

//previnir injecções de SQL. Assegura-te que o a variável $id tem de facto um inteiro
$id = intval($id);

//pedir só um registo
$result = mysql_query("SELECT * FROM table1 WHERE Inventario=$id");

$row = mysql_fetch_array($result);

echo "<pre>";
print_r($row);
echo "</pre>";

mysql_close($con);

?>[/php]

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.

Share this post


Link to post
Share on other sites
Casteloes

Tenho 2 dúvidas.

Em primeiro lugar o script mostra 2 vezes o mesmo resultado:

Por exemplo:

[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?

Share this post


Link to post
Share on other sites
Casteloes

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.

Share this post


Link to post
Share on other sites
pedrotuga

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.

Share this post


Link to post
Share on other sites
psiico

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.

Share this post


Link to post
Share on other sites
Casteloes

Eu ainda não tive tempo para pegar nisto mas logo pego.

Depois digo se tiver alguma dúvida.

Share this post


Link to post
Share on other sites
pedrotuga

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.

Share this post


Link to post
Share on other sites
Casteloes

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?

Share this post


Link to post
Share on other sites
pedrotuga

Tens que fazer tabela a tabela, afixa aqui o teu SQL que estás a colar lá e já vemos qual é o problema.

Share this post


Link to post
Share on other sites
Casteloes

Descobri o erro.

Eu estava a passar "CREATE TABLE IF NOT EXISTS `table1` (" como tinha no SQL.

Passei só "CREATE TABLE `table1` (" e funcionou.

Share this post


Link to post
Share on other sites
Casteloes

Não está a funcionar:

Dá-me este erro:

// 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:

// 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());

}

Já experimentei substituir "foo" por o nome da base de dados mas não funciona.

Share this post


Link to post
Share on other sites
Casteloes

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>

Share this post


Link to post
Share on other sites
pedrotuga

É 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.

Share this post


Link to post
Share on other sites
Casteloes

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.

Share this post


Link to post
Share on other sites
pedrotuga

Não percebi.

Mas isse código que eu te dei é php válido

p@p-laptop:~$ php
<?php $id=1; echo($id+1);?>

2

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.

Share this post


Link to post
Share on other sites
Casteloes

O que eu queria dizer era que coloquei o código que me deste e quanto tentava entrar no ficheiro dava esse erro.

As hipoteses que coloquei foram as que tentei e também deram erro.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.