Jump to content
austinmrs

Turismo php + mysql

Recommended Posts

austinmrs

Boa tarde,

Estou no 12º de Multimédia, e tenho de realizar a minha PAP.

Bem, o que pensei fazer, e foi aceite, foi um website, em php+mysql, sobre o "turismo" da minha terra, Murtosa.

Ou seja, a Murtosa tem 4 Freguesias, e tem bastantes Restaurantes, Cafés, Pensões, Edificios Municipais, etc.

Então a ideia era criar um site, em que haveria uma barra de pesquisa, e o utilizador poderia pesquisar por sitios, esta barra ao escrever, iria aparecer um menu drop down(con recurso a ajax), em que eu ao escrever por exemplo Em, em baixo apareceriam já os pontos com aqueles caracteres na base de dados (exemplo: Emigrante).

Depois, além desta pesquisa, queria que esta pesquisar fosse filtrada por Freguesias, e por Tipos. Pensei em criar um menu drop down ao passar o rato por cima do menu restaurantes, cafés, etc, em que por exemplo ao passar o rato por cima de restaurante, apareciam as freguesias, para clicar e pesquisar so restaurantes numa freguesia. até fácil, só select * from, e select * from *** where name like '%"feefwgf"%'...

A base de dados será esta:

Sem%20T%C3%ADtulo.jpg

Também vou criar uma tabela para usuários, para quem está logado poder adicionar novos sitios.

Agora, eu preciso de ajuda em criar a base de dados, não sei bem como fazer com o campo de imagem.. Só quero ter uma imagem por sitio, o melhor será guardar a imagem no base de dados, certo?

Ao criar o form para introduzir um novo sitio, como faço para a imagem que for feito o upload seja renomeada para o mesmo nome que foi dado para o sitio?

Exemplo:

Sitio: Café Porto

Imagem: 123.jpg

imagem será renomeada para café porto.jpeg. Porque depois, ao pesquisar por este café, como é que será possivel, por exemplo, aparecer o nome do café, e uma miniatura da imagem? E só depois ao clicar no café, é que abre o café com os contactos todos, e a morada?

Algumas ideias/ajudas?

Cumps.

Share this post


Link to post
Share on other sites
NunoDinis

Agora, eu preciso de ajuda em criar a base de dados, não sei bem como fazer com o campo de imagem.. Só quero ter uma imagem por sitio, o melhor será guardar a imagem no base de dados, certo?

Eu guardo na BD o caminho, podendo sequer nem ter que ter mais um campo. Posso atribuir o nome da imagem à chave primária da tabela.

Ao criar o form para introduzir um novo sitio, como faço para a imagem que for feito o upload seja renomeada para o mesmo nome que foi dado para o sitio?

Fazes assim:

if ($_FILES) {
if($_FILES['image'] && $_FILES['image']['size'] > 0){
 $ori_name = $_FILES['image']['name'];
 $tmp_name = $_FILES['image']['tmp_name'];
 $src = imagecreatefromjpeg($tmp_name);
 list($width,$height)=getimagesize($tmp_name);
 $newwidth=100;
 $newheight=($height/$width)*100;
 $tmp=imagecreatetruecolor($newwidth,$newheight);
 //vai buscar a extensao da imagem
 $extensao = explode(".", $ori_name);
 //echo $extensao[0]; //resto da imagem, da lugar ao id
 //echo $extensao[1]; // extensao
 imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
 $filename = "images/".$_POST['id'].'.'.$extensao[1]; //concatena id com a extensao
 imagejpeg($tmp,$filename,100);
 $picture = "images/".$_POST['id'].'.'.$extensao[1]; //concatena id com a extensao
 imagedestroy($src);
 imagedestroy($tmp);
}
}

Nota que estou a redimensionar a imagem, se não quiseres retiras o código que se encarga dessa operação.

imagem será renomeada para café porto.jpeg. Porque depois, ao pesquisar por este café, como é que será possivel, por exemplo, aparecer o nome do café, e uma miniatura da imagem? E só depois ao clicar no café, é que abre o café com os contactos todos, e a morada?

Que tipo de pesquisa ? Em tabela ou que auto-completa à medida que vais digitando ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
dmaciel

Olá Amigo,

Eu sou de Ovar, caso precises de ajuda avisa ;)

Em relação as tuas questões tu na base de dados só vais guardar o URL (o link) de onde está a imagem, isto é, no formulário PHP vais enviar a tua imagem para uma pasta no servidor e enviar essa localização para a Base de Dados.

Em relação ao renomear já te foi explicado, quando tiveres a enviar a imagem para o servidor podes alterar o nome e muito mais. :)

Bom trabalho!!!

Share this post


Link to post
Share on other sites
austinmrs

Obrigado desdejá pela ajuda!

Então, o melhor será começar por criar as tabelas no phpmyadmin..

Eu criei o campo imagem como mediumbloob, então vou apagar tudo, e criar de novo. Assim sendo, a bd só irá contar mesmo o nome do directório. Crio um campo para imagem ou não? Ou seja, a imagem ao fazer upload é renomeada para o nome do ponto, e irá ser posta em /images , para depois ao pesquisar por aquele ponto, aparecer a imagem. O que queria era que aparecesse só mesmo a imagem em pequeno, e depois ampliava . Vi este script que parece fazer o que quero:

http://lokeshdhakar.com/projects/lightbox2/

Então agora ajuda para criar as tabelas. Será algo assim:

Freguesias

id_freguesia

nome_freguesia

Pontos

id_ponto

nome_ponto

contacto

horário

morada

id_freguesia

id_tipo

imagem

coordenadas

tipo

id_tipo

nome_tipo

Cumps

Share this post


Link to post
Share on other sites
NunoDinis

Eu criei o campo imagem como mediumbloob, então vou apagar tudo, e criar de novo. Assim sendo, a bd só irá contar mesmo o nome do directório. Crio um campo para imagem ou não? Ou seja, a imagem ao fazer upload é renomeada para o nome do ponto, e irá ser posta em /images , para depois ao pesquisar por aquele ponto, aparecer a imagem.

Se associares o nome da imagem a um id (que seja chave-primária) não é necessário um campo imagem.

Para já as tabelas parecem-me bem. Tens as relações bem feitas ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
austinmrs

Se associares o nome da imagem a um id (que seja chave-primária) não é necessário um campo imagem.

Para já as tabelas parecem-me bem. Tens as relações bem feitas ?

mas eu acho que vou criar o campo imagem, para me organizar melhor. vou criar as tabelas todas de novo, só uma coisa, o campo imagem, fica em varchar?

e outra coisa, estou com problemas em criar as relacoes no php my admin .. nao consigo mudar a storage engine para innodb , não me aparece essa opção..

Também vou criar uma tabela para usuarios

usuarios

id_usuario

nome_usuario

senha_usuario

esta tabela terá apenas um usuário, pois não faz sentido uma pessoa se poder registar, servirá apenas para o admin fazer login para adicionar novos pontos. ou seja a parte com o form para introduzir um novo sitio, irá ser só visivel para quem tiver logado.

Edited by austinmrs

Share this post


Link to post
Share on other sites
NunoDinis

Está bem, isso já é contigo :)

Sim, pode ficar.

Estás a ir às operações dentro de uma tabela ? Se sim, deveria aparecer.. e já agora, porque queres mudar ?


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
austinmrs

Está bem, isso já é contigo :)

Sim, pode ficar.

Estás a ir às operações dentro de uma tabela ? Se sim, deveria aparecer.. e já agora, porque queres mudar ?

eu usava o mysql na linha de comandos, ou seja para criar relações usava o comando references , e agora aqui estou com dificuldados em criar as relações entre as tabelas.

Share this post


Link to post
Share on other sites
austinmrs

werr.jpg

neste momento está assim, está tudo correcto, penso eu... como assim, no designer? eu estou a usar o site 000.webhost.com para alojar o meu site e a base de dados, visto que é um alojamento gratuito. se houver algum melhor digam :)

Edited by austinmrs

Share this post


Link to post
Share on other sites
NunoDinis

Se tem o phpmyadmin é indiferente usares um servidor local ou não.

Depois de carregares na BD aparece-te no menu horizontal a opção Designer, certo ? Depois guiaste por aqui


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
austinmrs

Se tem o phpmyadmin é indiferente usares um servidor local ou não.

Depois de carregares na BD aparece-te no menu horizontal a opção Designer, certo ? Depois guiaste por aqui

só tem isto:

Sem%20T%C3%ADtulo.jpg

Share this post


Link to post
Share on other sites
NunoDinis

Qual é a opção "query" ?

Se não der terás de fazer à "unha" :)


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
NunoDinis

não.. sabes de algum servidor free que seja porreiro?

Pelo que sei esse é porreiro, dentro do possível..

é que não queria usar local, pois assim na apresetação teria de ir lá antes instalar etc.. assim ficava tudo alojado, era mais simples

instalar o quê ? Pôr o apache e o mysql a correr não é instalar nada :)


Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Share this post


Link to post
Share on other sites
austinmrs

Pelo que sei esse é porreiro, dentro do possível..

instalar o quê ? Pôr o apache e o mysql a correr não é instalar nada :)

Como assim? Eu usava o easyphp antes

Share this post


Link to post
Share on other sites
austinmrs

dá-me erro ao criar a tabela pontos...

está assim, feito à mão, mas dá erro ao criar a tabela pontos.

-- phpMyAdmin SQL Dump
-- version 2.11.4
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Feb 27, 2013 at 06:29 AM
-- Server version: 5.1.57
-- PHP Version: 5.2.17

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `a3913388_turismo`
--

-- --------------------------------------------------------

--
-- Table structure for table `freguesias`
--

CREATE TABLE `freguesias` (
 `id_freguesia` int(11) NOT NULL AUTO_INCREMENT,
 `nome_freguesia` varchar(12) COLLATE latin1_general_ci NOT NULL,
 PRIMARY KEY (`id_freguesia`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

--
-- Dumping data for table `freguesias`
--


-- --------------------------------------------------------


--
-- Table structure for table `tipo`
--

CREATE TABLE `tipo` (
 `id_tipo` int(11) NOT NULL AUTO_INCREMENT,
 `nome_tipo` varchar(25) COLLATE latin1_general_ci NOT NULL,
 PRIMARY KEY (`id_tipo`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

--
-- Dumping data for table `tipo`
--


-- --------------------------------------------------------

--
-- Table structure for table `usuarios`
--

CREATE TABLE `usuarios` (
 `id_usuario` int(11) NOT NULL AUTO_INCREMENT,
 `usuario` varchar(20) COLLATE latin1_general_ci NOT NULL,
 `senha` varchar(20) COLLATE latin1_general_ci NOT NULL,
 PRIMARY KEY (`id_usuario`),
 UNIQUE KEY `usuario` (`usuario`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

--
-- Dumping data for table `usuarios`
--

-- --------------------------------------------------------------

--
-- Table structure for table `pontos`
--

CREATE TABLE `pontos` (
 `id_ponto` int(11) NOT NULL AUTO_INCREMENT,
 `nome_ponto` varchar(30) COLLATE latin1_general_ci NOT NULL,
 `horario` varchar(20) COLLATE latin1_general_ci NOT NULL,
 `contacto` int(12) NOT NULL,
 `morada` varchar(30) COLLATE latin1_general_ci NOT NULL,
 `imagem` varchar(30) COLLATE latin1_general_ci NOT NULL,
 `coordenadas` varchar(20) COLLATE latin1_general_ci NOT NULL,
 `id_freguesia` int(11) NOT NULL,
 `id_tipo` int(11) NOT NULL,
 PRIMARY KEY (`id_ponto`)
 FOREIGN KEY (id_freguesia) REFERENCES freguesias(id_freguesia)
 FOREIGN KEY (id_tipo) REFERENCES tipo(id_tipo)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

--
-- Dumping data for table `pontos`
--

Share this post


Link to post
Share on other sites
austinmrs

se dá erro, dava jeito saber qual a mensagem de erro ...

SQL query:
CREATE TABLE `pontos` (
`id_ponto` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`nome_ponto` VARCHAR( 30 ) COLLATE latin1_general_ci NOT NULL ,
`horario` VARCHAR( 20 ) COLLATE latin1_general_ci NOT NULL ,
`contacto` INT( 12 ) NOT NULL ,
`morada` VARCHAR( 30 ) COLLATE latin1_general_ci NOT NULL ,
`imagem` VARCHAR( 30 ) COLLATE latin1_general_ci NOT NULL ,
`coordenadas` VARCHAR( 20 ) COLLATE latin1_general_ci NOT NULL ,
`id_freguesia` INT( 11 ) NOT NULL ,
`id_tipo` INT( 11 ) NOT NULL ,
PRIMARY KEY ( `id_ponto` ) FOREIGN KEY ( id_freguesia ) REFERENCES freguesias( id_freguesia ) FOREIGN KEY ( id_tipo ) REFERENCES tipo( id_tipo )
) ENGINE = MYISAM DEFAULT CHARSET = latin1 COLLATE = latin1_general_ci AUTO_INCREMENT =1

MySQL said:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOREIGN KEY (id_freguesia) REFERENCES freguesias(id_freguesia)

FOREIGN KEY (i' at line 12

Share this post


Link to post
Share on other sites
HappyHippyHippo

falta as virgulas separadoras

CREATE TABLE `pontos` (
`id_ponto` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`nome_ponto` VARCHAR( 30 ) COLLATE latin1_general_ci NOT NULL ,
`horario` VARCHAR( 20 ) COLLATE latin1_general_ci NOT NULL ,
`contacto` INT( 12 ) NOT NULL ,
`morada` VARCHAR( 30 ) COLLATE latin1_general_ci NOT NULL ,
`imagem` VARCHAR( 30 ) COLLATE latin1_general_ci NOT NULL ,
`coordenadas` VARCHAR( 20 ) COLLATE latin1_general_ci NOT NULL ,
`id_freguesia` INT( 11 ) NOT NULL ,
`id_tipo` INT( 11 ) NOT NULL ,
PRIMARY KEY ( `id_ponto` ),
FOREIGN KEY ( id_freguesia ) REFERENCES freguesias( id_freguesia ),
FOREIGN KEY ( id_tipo ) REFERENCES tipo( id_tipo )
) ENGINE = MYISAM DEFAULT CHARSET = latin1 COLLATE = latin1_general_ci AUTO_INCREMENT =1


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

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.