← Tutoriais

[PHP] Iniciantes, PHP e MySQL

Lida 50382 vezes

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

brigadu! ^^ vo ver se agora volto pra ficar ^^
Offline

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

a bd serve para guardar a base de dados?
como por exemplo, para registar num site, usa-se a bd?
Offline

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

saquei o phpmyadmin onde so vem com cenas, nada para istalar, saquei do baixaki, aqui: http://baixaki.ig.com.br/site/dwnld37861.htm
Offline

André Freitas 
Membro
Mensagens 941 Gostos 16
Troféus totais: 29
Trófeus: (Ver todos)
Apple User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2

Boas, testei experimentei e modifiquei com outros campos, excelente tutorial! :wink:
Offline

André Freitas 
Membro
Mensagens 941 Gostos 16
Troféus totais: 29
Trófeus: (Ver todos)
Apple User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2

Boas, aguém sabe as linhas do código para inserir dados para a os campos da tabela a partir de um ficheiro no browser, como fosse uma administração.
Offline

OFFICER 
Membro
Mensagens 2076 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

O que pretendes é inserir os valores dos campos numa Base de Dados?
Offline

André Freitas 
Membro
Mensagens 941 Gostos 16
Troféus totais: 29
Trófeus: (Ver todos)
Apple User Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2

Sim, a partir de um ficheiro, sem ter de ir ao phpmyadmin. Eu já vi por aí mas não encontro xD
Offline

OFFICER 
Membro
Mensagens 2076 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

4ndr3, Aqui tens :) é um tutorial feito por mim já há algum tempo..lê que percebes como :D

Citação de: "OFFICER"
Bem aqui fica um tutorial que já fiz há algum tempo..não sei se já alguém postou algo do género mas fica por cá..(peço desculpa pelo tamanho e má qualidade das imagens)

Vamos ter aqui uma pequena "aula" de conecção MySQL com PHP. Todas as dúvidas poderão ser tiradas neste tópico..



- Criar uma Base de Dados MySQL (a partir do PhpMyAdmin):

Para criar uma Base de Dados MySQL a partir do PhpMyAdmin basta colocar o nome no campo de inserção e clicar em "Criar", tal como na figura abaixo. Neste tutorial iremos utilizar a Base de Dados "tutorial".



Agora basta selecionar no Drop Down menu a Base de Dados que criámos, neste caso "tutorial".





- Criar uma Tabela em uma Base de Dados MySQL (a partir do PhpMyAdmin):

Bem, para ter a nossa tabela selecionada (passo anterior) para podermos escolher a opção "SQL" como mostra a figura abaixo.



Depois de termos clicado na opção "SQL" vamos inserir no campo o nosso código para criarmos a tabela e os respectivos campos. Aqui nós vamos ter a tabela "tutorial" com os campos "id", "nome", "idade" e "email". Será como um formulário de registo.



Aqui coloquei o seguinte código:

Código: [Seleccione]
CREATE TABLE tutorial (
id int(5) NOT NULL auto_increment,
nome char(30) NOT NULL ,
idade char(3) NOT NULL ,
email char(80) ,
PRIMARY KEY (id),
UNIQUE id (id)
);


Explicando:

CREATE TABLE tutorial, aqui estamos a dizer ao MySQL que queremos criar a tabela tutorial depois abrimos parenteses "(" e dizemos o que está dentro dessa tabela.

id, é o id de cada "registo" por exemplo, não é obrigatório inserir. Está com auto_increment, o que quer dizer que é inserido automáticamente e por ordem.

nome, é o nome da pessoa, temos um char(30) o que quer dizer que o limite do nome é de 30 caracteres e temos um NOT NULL que quer dizer que não pode ser nulo.

idade, é a idade da pessoa, desta vez temos um char(3) que significa que tem um limite de 3 caracteres, para uma idade claro! Também tem NOT NULL que significa o mesmo que o campo anterior.

email, é o email da pessoa, tem char(80), ou seja, limite de 80 carecteres. Desta vez não tem NOT NULL o que significa que poderá ficar em branco. Fica à escolha de cada um a criação dos campos.

PRIMARY KEY (id), aqui estamos a dizer que o primeiro campo é o id, é sempre necessário quando se usam id's.

UNIQUE id (id), aqui estamos a dizer que o campo id terá que ser único.

); <- Aqui estamos a fechar o parentese previamente aberto e a dizer que terminámos com o ";".

Se o código estiver todo correcto vamos obter o seguinte:



Então se quiserem ver como ficou podem clicar na tabela criada.



Deverá ficar com este aspecto depois de clicar na tabela criada.



OK! Temos a nossa Base de Dados e a nossa Tabela MySQL prontinhas! Vamos ao PHP!



- Inserir dados na Base de Dados a partir de um formulário em PHP:

Para inserir dados a partir de um formulário temos que ter a action do formulário direcionada para o ficheiro PHP que contém isto, por exemplo (as explicações estão junto ao código):

Código: [Seleccione]
<?php

//Abaixo vamos criar uma variável com o seguinte para inserir os dados

//Como devem reparar não temos a variável id presente, pois não é necessário por estar em auto_increment

//Passando a explicar..temos o principal código INSERT INTO tutorial que está a dizer que vamos inserir na tabela tutorial os seguintes dados dentro das variáveis da MySQL. Depois em VALUES temos as variáveis que vieram do nosso formulário..

$sql "INSERT INTO tutorial &#40;nome, idade, email&#41; VALUES &#40;'$nome', '$idade', '$email'&#41;";

//Agora é hora de contactar o MySQL para entrar na Base de dados

//Como estamos num exemplo prático, vou colocar os valores menos a password, sabem que terão que modificar

$conexao mysql_connect&#40;"localhost", "tutorial", "password"&#41; or die &#40;"Dados da Base de Dados incorrectos!"&#41;;

$db mysql_select_db&#40;"tutorial"&#41; or die &#40;"Base de Dados não existente!"&#41;;

//Agora o comando final, o que vai finalmente inserir todos os dados recolhidos pelo formulário e enviar para o MySQL nos respectivos campos anteriormente criados..

$sql mysql_query&#40;$sql&#41; or die &#40;"Existe erros na gravação dos dados!"&#41;;

//Se tudo correr bem podemos definir um echo..mas isto não é obrigatório!

echo "Todos os Dados foram gravados com sucesso na Base de Dados!";

?>


Está pronto, muito fácil não vos parece?!



- Remover dados a partir dum..campo num formulário (Por exemplo se escrevermos "SIM" no campo:

Código: [Seleccione]
<?php

//Supondo que temos um campo em um formulário em que temos que colocar "SIM" para remover o utilizador ou seja o que for previamente definido por nós em um link por exemplo. &#40;membros.php?id=2232&#41;

if &#40;$remover == SIM&#41; &#123;

$conexao mysql_connect&#40;"localhost","tutorial","password"&#41;;
$db mysql_select_db&#40;"tutorial"&#41;;
$sql "DELETE FROM tutorial WHERE id='2232'";
$resultado mysql_query&#40;$sql&#41;
or die &#40;"Não foi possível realizar a exclusão dos dados."&#41;;

echo "Membro removido com sucesso!";

&
#125;

?>




- Alterar dados a partir de um outro formulário em que já temos a exibição dos mesmo em campos alteráveis:
Código: [Seleccione]

<?php

//Tendo em conta que temos a exibição das variaveis gravadas no MySQL dentro de campos input text alteráveis e depois direcionamos a action deste formulário para este ficheiro.. &#40;atenção que o nome das variáveis do formulário terão que ser diferentes do formulário principal, como nome_novo, email_novo, idade_nova...etc...&#41;

//Vamos acabar por ficar com o que estiver dentro dos campos input text

$conexao mysql_connect&#40;"localhost","tutorial","password"&#41;;
$db mysql_select_db&#40;"tutorial"&#41;;
$sql "UPDATE tutorial SET nome='$nome_novo',idade='$idade_nova',email='$email_novo'";
$resultado mysql_query&#40;$sql&#41; or die &#40;"Não foi possível realizar a consulta à Base de Dados!"&#41;;

echo "Dados Alterados com Sucesso!";

?>




- Exibir os dados que estão gravados na Base de Dados:

Aqui terá que ser um ficheiro PHP completamente, claro.

Código: [Seleccione]
<?php

//Vamos precisar conectar o MySQL novamente

$conexao mysql_connect&#40;"localhost","tutorial","password"&#41;;
$db mysql_select_db&#40;"tutorial"&#41;;

//Agora é realizar a query de busca na Base de Dados

//Vamos usar o SELECT * FROM tutorial para selecionar da tabela tutorial e não de outra qualquer e vamos utilizar ORDER BY id DESC para termos os utilizadores por exemplo, ordenados por id, com ordem descendente..

$sql "SELECT * FROM tutorial ORDER BY id DESC";

//Agora ele vai fazer tudo o que está dentro da variável...

$resultado mysql_query&#40;$sql&#41;
or die &#40;"Não foi possível realizar a consulta à Base de Dados!"&#41;;

// Agora iremos "pegar" cada campo do utilizador neste caso e organizar o HTML

while &#40;$linha=mysql_fetch_array&#40;$resultado&#41;&#41; &#123;

$id $linha["id"&#93;;
$nome $linha["nome"&#93;;
$idade $linha["idade"&#93;;
$email $linha["email"&#93;;

//Usaremos um echo ou vários para mostrar uma tabela com os dados!

echo "<table width='200' border='0'>
  <tr>
    <td>
$id</td>
    <td>
$nome</td>
    <td>
$idade</td>
    <td>
$email</td>
  </tr>
</table>"
;

&
#125;

?>


DICA:

Para ter em exibição uma variável dentro de um campo input text em um formulário temos que ter o seguinte (apenas para conecções com MySQL, NÃO FUNCIONA com hidden input text nem variáveis de links, para tal tem que ser de outra maneira):

1 - Selecionamos a Base de Dados e de seguida selecionamos a variável com os dados que queremos.

2 - No código fonte do input text respectivo colocamos o seguinte, como no exemplo:

Código: [Seleccione]
<input type=text value="<?=$nome?>" name="nome" id="nome">

3 - Caso não queiram que o campo possa ser editado basta adicionar um "readonly" ficando:

Código: [Seleccione]
<input type=text value="<?=$nome?>" name="nome" id="nome" readonly>



Espero que tenham aprendido algo, não coloquei os sources dos formulários porque, para quem quer utilizar PHP e MySQL tem que pelo menos saber utilizar PHP e HTML como deve ser, isto não é um tutorial para PRINCIPIANTES! Fica o aviso!

Qualquer dúvida pode ser colocada aqui!

Todo este tutorial foi elaborado por mim, OFFICER. Caso queiras colocá-lo em algum lado respeita os créditos.
Offline

CasaTuga 
Membro
Mensagens 397 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Avatar Tenth year Anniversary Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3

Como faço se quiser buscar dados de outra tabela no mesmo comando sql?

SELECT COUNT( file_id )
FROM phcdl_files
WHERE file_author = session_name (este é da tal outra tabela)




Offline

STronic 
Elite
Mensagens 546 Gostos 8
Feedback +5

Troféus totais: 30
Trófeus: (Ver todos)
Mobile User Search Apple User Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3

Como faço se quiser buscar dados de outra tabela no mesmo comando sql?

SELECT COUNT( file_id )
FROM phcdl_files
WHERE file_author = session_name (este é da tal outra tabela)

Código: [Seleccione]
SELECT COUNT(file_id)
FROM phcdl_files, outra_tabela
WHERE file_author = session_name
Offline

CasaTuga 
Membro
Mensagens 397 Gostos 0
Troféus totais: 28
Trófeus: (Ver todos)
Avatar Tenth year Anniversary Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3

Obrigado STronic,
já agora, isto tem algum erro?

<?php $ficheiros = mysql_query(SELECT COUNT(file_id) FROM phcdl_files, phcdl_sessions WHERE file_author = . $kernel->session->vars['session_user_id'] ); echo $ficheiros; ?>
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

Mete a query entre parenteses:

Código: [Seleccione]
<?php 
$ficheiros 
mysql_query("SELECT COUNT(file_id) FROM phcdl_files, phcdl_sessions WHERE file_author = . $kernel->session->vars['session_user_id']");
echo 
$ficheiros;
?>

PS: Granda desenterro :)
Offline

marc.2377 
Membro
Mensagens 10 Gostos 1
Troféus totais: 16
Trófeus: (Ver todos)
Super Combination Combination Level 3 Level 2 Level 1 10 Posts First Post Karma Eighth year Anniversary Seventh year Anniversary

Bom tutorial! parabéns!
Cenourinha, será que você podia me ajudar com uma? Estou aplicando o sistema de multi-idioma explicado aqui >> http://forum.maistrafego.pt/index.php?topic=17431.0
Mas tenho problemas na hora de detectar automaticamente o país.
Obrigado a todos.
Offline

p0werj 
Membro
Mensagens 12 Gostos 0
Troféus totais: 16
Trófeus: (Ver todos)
Windows User Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma

Muito obrigado :D