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

Casteloes

Codigo para mostrar data de uma base de dados.

24 mensagens neste tópico

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);
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não estou a conseguir.

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, comaçando pelo principio. Qual é a chave da tabela e qual o seu formato?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes sempre experimentar o teu codigo inicial mas em vez de mysql_fetch_array() poe: mysql_fetch_assoc()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

Depois digo se tiver alguma dúvida.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Descobri o erro.

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

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora