← Tutoriais

[PHP] Iniciantes, PHP e MySQL

Lida 50383 vezes

Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

vamos para algo um bocadinho mais complicado?

PHP e MySQL

eh eh eh... como devem imaginar, isto te muito que lhe diga. Já tenho uma vasta experiência em juntar o php e mysql, e ainda estou a aprender... mas como é uma ferramenta que eu acho indispensável, ficam aqui as bases para começar neste mundo!

O que é o mysql?

mysql - base de dados (como o nome indica, ao estilo do MS SQL) que permite manter uma bd no servidor para consultas. tem uma grande vantagem em relação ao MSSQL... é grátis! :D
para quem não tem experiência com bds, pensem neste exemplo: imaginem uma folha de excel com as colunas e linhas todas preenchidas, onde o código que escrevem vai consultar aquela linha/coluna que nos especificamos... é uma maneira de olhar para bds ;)

como construir uma bd?

depois das primeiras experiências, até que é fácil! primeiro, precisam de um servidor que tenha suporte mysql instalado (normalmente, os que têm suporte php, também têm mysql). Depois, procurem um programinha chamado "phpmyadmin" (no cpanel, por exemplo), e façam assim:

- por default, costuma haver uma bd já criada chamada "test". vamos usar essa! no phpmyadmin, do lado esquerdo, existe uma dropdown para escolher as várias bds. escolham a "test";
- Aparece uma nova janela "Create new table on database test". escrevam "teste" como nome e "3" como fields;
- na nova janela, aparecem os 3 campos que seleccionamos anteriormente. Deixem todos os valores como aparecem, mas escrevam o nome dos campos: "nome", "nick" e "mail". também precisam de por um número no campo "Length/Values". aqui podem delimitar quantos caracteres podem ser memorizados no máximo. Vamos por "255" em todos.
- SAVE! ;)

E já criaram a primeira bd! mas agora, temos que lhe meter dados lá dentro... Repararam que do lado direito já apareceu uma bd com o nome "teste"? cliquem nela! e agora está uma tab em cima que diz "insert"! click! ;)

na nova janela insiram dois novos registos:
1º - manuel, manelinho, abc@def.com
2º - maria, maumaria, bcd@def.com
e carreguem no "Go!".

E pronto! temos uma bd com 3 campos e dois registos criada! ;) :D

Código para consultar a bd!
mas uma bd que não é consultada de nada serve! vamos tratar de arranjar um código para ligar com a bd!

1º passo: ligar com a bd:

em primeiro lugar, é preciso estabelecer uma ligação com a bd. isso consegue-se através de:

Código: [Seleccione]
$host="O_HOST_MYSQL";
$sqluser="O_USER_MYSQL";
$sqlpassword="A_PASSWORD_MYSQL";
$database="teste";
$connection=mysql_connect($host,$sqluser,$sqlpassword) or die (mysql_error());
$db = mysql_select_db($database) or die (mysql_error());

se não sabem o host, sqluser e password, perguntem ao vosso alojamento.

se tudo correr bem, já temos a ligação efectuada ao mysql. agora vamos a uma consulta:

Código: [Seleccione]
$query = "SELECT * FROM teste WHERE nome='manuel'";
$result = mysql_query($query) or die (mysql_error());
$row = mysql_fetch_array($result);extract($row);


traduzindo, a primeira linha estabelece os parametros que queremos, ou seja, todos os campos da bd "teste" onde "nome" é igual a manuel (já sabemos que é só 1 ;) )
as linhas seguintes são para o php ir buscar a instrução que demos :D !

se acrescentarmos mais uma coisinha assim:

Código: [Seleccione]
echo"
nome -> $nome<br>
nick -> $nick<br>
mail -> $mail";


vai dar o quê? adivinharam! :D os dados que metemos na primeira linha! ;)
repararam que o nome das colunas tranformaram-se em variáveis? ah pois é! depois da consulta efectuada, o nome das colunas são transmitidos através de variáveis! :D

ou seja, código completo:

Código: [Seleccione]
<?
$host="O_HOST_MYSQL";
$sqluser="O_USER_MYSQL";
$sqlpassword="A_PASSWORD_MYSQL";
$database="teste";
$connection=mysql_connect($host,$sqluser,$sqlpassword) or die (mysql_error());
$db = mysql_select_db($database) or die (mysql_error());

$query = "SELECT * FROM teste WHERE nome='manuel'";
$result = mysql_query($query) or die (mysql_error());
$row = mysql_fetch_array($result);extract($row);

echo"
nome -> $nome<br>
nick -> $nick<br>
mail -> $mail";
?>


eu sei... eu sei... parece complicado! mas aprofundem bem os vossos conhecimentos e não há limites para o que conseguem fazer a juntar estas duas magias! ;)

postem coisas!  8)
Offline

icaro 
Membro
Mensagens 128 Gostos 0
Troféus totais: 26
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

A primeira vez que olhei para esse código (em posts anteriores) fiquei tipo burro a olhar para palácio e agora depois de 4 aulinhas apenas já o precebo.

é mesmo para dizer não negue à partida uma ciência que desconhece
Offline

morpheus 
Membro
Mensagens 1199 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 1000 Posts

nem mais!  :lol:  :wink:
Offline

kebrus 
Membro
Mensagens 459 Gostos 0
Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

mais uma vez, espero que não te importes morpheus, aqui vai um complemento

se experimentarem o codigo do morpheus e ele der erro, por exemplo, na ligação com o mysql com esse codigo ele vai repetir o erro duas vezes, isto porque por predefinição o php já nos dá o erro que acontece, e se repararem no codigo do morpheus a seguir a função de ligaçao mysql_connect() ele tem isto "or die (mysql_error())" que para o script (daí o "die") e que ao mesmo tempo nos dá o erro que aconteceu atraves de outra função que é "mysql_error()"

ora isto vai resultar em que o script se falhar ali mostra o erro duas vezes, a primeira porque está predefinido para o fazer e a segunda porque o mandaram fazer, se quiserem evitar isto basta po este simbolo "@" (sem aspas) atras da função de conecçao com o mysql, ou seja, algo do genero: @mysql_connect()

o que vai acontecer é que o erro torna-se silencioso, ou seja, naquela função aquela predefinição do php já não se aplica mais, mostrando só o segundo erro...

fiquem bem ;)

continua os excelentes tutorials morpheus ^^
imagino que a proxima lição será como introduzir informação no mysql a partir do php ^^
Offline

frsantos 
Membro
Mensagens 1458 Gostos 0
Troféus totais: 35
Trófeus: (Ver todos)
Linux User Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter

para kd a parte 5?

n tnyh respondido pk n tnho tido tmp mas smp k poxo vnho ca e imprimo

continua  :morpheus:  :obrigado:
Offline

fpware 
Fundador
Mensagens 15318 Gostos 7
Troféus totais: 38
Trófeus: (Ver todos)
Linux User Mobile User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5

Excelente! :D

Fixo!
Offline

GTO_KAI 
Membro
Mensagens 532 Gostos 13
Troféus totais: 31
Trófeus: (Ver todos)
Level 6 Windows User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5 Level 4 Level 3

Warning: mysql_connect(): Unknown MySQL Server Host 'O_HOST_MYSQL' (2) in /home/gtokai/public_html/test.php on line 6
Unknown MySQL Server Host 'O_HOST_MYSQL' (2)
acho que ainda está muito complicado pra mim #-o
Offline

fpware 
Fundador
Mensagens 15318 Gostos 7
Troféus totais: 38
Trófeus: (Ver todos)
Linux User Mobile User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5

Substitua 'O_HOST_MYSQL' por 'localhost' ;)
Offline

cenourinha 
Elite
Mensagens 4094 Gostos 21
Troféus totais: 34
Trófeus: (Ver todos)
Mobile User Apple User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4

fpware, vi num site e fiquei com uma questão, tipo é possivel ter os ficheiros num host e aceder a uma bd fora desse host, tipo o site ser site.pt e ligar ao as base de dados do site.com?

Seria algo como $host="site.com"; ??
Offline

fpware 
Fundador
Mensagens 15318 Gostos 7
Troféus totais: 38
Trófeus: (Ver todos)
Linux User Mobile User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5

Não sou a melhor pessoa para te responder a essa questão, mas sim cenourinha, à partida é possível. Se não conseguires através do nome de dominio tenta através do ip
Offline

GTO_KAI 
Membro
Mensagens 532 Gostos 13
Troféus totais: 31
Trófeus: (Ver todos)
Level 6 Windows User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5 Level 4 Level 3

obrigado fpware ^^
Offline

fpware 
Fundador
Mensagens 15318 Gostos 7
Troféus totais: 38
Trófeus: (Ver todos)
Linux User Mobile User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5

Funcionou GTO_KAI?
Offline

custume 
Membro
Mensagens 13 Gostos 0
Troféus totais: 22
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 4 Level 3 Level 2 Level 1 10 Posts First Post Signature

eu não sei mas aparece tudo em branco

fica bem

custume
Offline

GTO_KAI 
Membro
Mensagens 532 Gostos 13
Troféus totais: 31
Trófeus: (Ver todos)
Level 6 Windows User Super Combination Combination Topic Starter Poll Voter Poll Starter Level 5 Level 4 Level 3

depois de 3 ou 4 meses sem apareçer... sim funciono :D
Offline

fpware 
Fundador
Mensagens 15318 Gostos 7
Troféus totais: 38
Trófeus: (Ver todos)
Linux User Mobile User Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5

Bem-vindo de volta GTO_KAI!