Ir para o conteúdo
Casteloes

Codigo para mostrar data de uma base de dados.

Mensagens Recomendadas

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Casteloes    0
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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Casteloes    0
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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Casteloes    0
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
psiico    1
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Casteloes    0
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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Casteloes    0
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Casteloes    0
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Casteloes    0
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>

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Casteloes    0
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Casteloes    0
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.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade