← Tutoriais

[PHP] Iniciantes, Criação e Consulta de BD's

Lida 34517 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

Finalmente! Depois de muita dieta, cá vamos nós para a parte 6!  :mrgreen:

No último tutorial, a maioria decidiu que vamos criar, inserir e consultar uma bd com mails. Ora vamos lá!

Criação e Consulta de bds!

Ora bem... a primeira coisa que temos a fazer é ter uma bd onde brincar.
Eu criei uma bd chamada "teste" e usei o phpmyadmin para inserir este comando sql:

Código: [Seleccione]
CREATE TABLE `mails` (
`mails_id` INT( 9 ) NOT NULL AUTO_INCREMENT ,
`mails_nome` VARCHAR( 255 ) NOT NULL ,
`mails_mail` VARCHAR( 255 ) NOT NULL ,
`mails_data` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY ( `mails_id` )
) TYPE = MYISAM ;


o que criou uma tabela chamada "mails" com 4 campos:

mails_id - a chave primária, que vai ter uma numeração ordenada e sequencial;
mails_nome - o nome da pessoa cujo mail vamos inserir;
mails_mail - (acho que não é preciso dizer o que isto é ;) );
mails_data - a data em que foi inserido na bd;

Assim sendo, já temos a bd para brincar. Vamos mexer nela!

Vamos criar um formulário como já tinhamo visto anteriormente. O html fica:

Código: [Seleccione]
<table border='0' width='250'>
  <form method='POST' action='?gravar=sim'>
    <tr>
      <td width='64' align='center'>Nome</td>
      <td><p align='center'><input type='text' name='nome' size='20'></td>
    </tr>
    <tr>
      <td width='64' align='center'>Mail</td>
      <td><p align='center'><input type='text' name='mail' size='20'></td>
    </tr>
    <tr>
      <td width='64'>&nbsp;</td>
      <td><p align='center'><input type='submit' value='inserir' name='botao'></td>
    </tr>
  </form>
</table>


e a parte do php fica:

Código: [Seleccione]
<?
if($gravar=='sim'){
comando a executar
}
?>


juntando os dois num ficheiro chamado "form.php" fica assim:

Código: [Seleccione]
<?
if($gravar=='sim'){
comando a executar
}
?>
<table border='0' width='250'>
  <form method='POST' action='?gravar=sim'>
    <tr>
      <td width='64' align='center'>Nome</td>
      <td><p align='center'><input type='text' name='nome' size='20'></td>
    </tr>
    <tr>
      <td width='64' align='center'>Mail</td>
      <td><p align='center'><input type='text' name='mail' size='20'></td>
    </tr>
    <tr>
      <td width='64'>&nbsp;</td>
      <td><p align='center'><input type='submit' value='inserir' name='botao'></td>
    </tr>
  </form>
</table>


mas vamos ter que dar o comando para inserir o conteudo na tabela. Para efectuar a ligação à tabela, podemos por:

Código: [Seleccione]
$dbh=mysql_connect ("localhost", "USERNAME", "PASSWORD") or die ('Lamentamos, mas não é possivel ligar à base de dados porque: ' . mysql_error());
mysql_select_db ("BASE_DE_DADOS");


E juntamos o comando mysql:

Código: [Seleccione]
$query = "INSERT INTO mails (mails_nome,mails_mail,mails_data) VALUES ('$nome','$mail','$data')" or die (mysql_error());
$result = mysql_query($query) or die(mysql_error());


Este comando vai inserir as variaveis na bd. Mas falta uma! o "$data" ainda não foi definida! ok, usamos:

Código: [Seleccione]
$data = date("d/m/Y");

assim, já temos a variavel "$data".


Vamos resumir. Já temos então:

Código: [Seleccione]
<?
if($gravar=='sim'){
$dbh=mysql_connect ("localhost", "USERNAME", "PASSWORD") or die ('Lamentamos, mas não é possivel ligar à base de dados porque: ' . mysql_error());
mysql_select_db ("BASE_DE_DADOS");
$data = date("d/m/Y");
$query = "INSERT INTO mails (mails_nome,mails_mail,mails_data) VALUES ('$nome','$mail','$data')" or die (mysql_error());
$result = mysql_query($query) or die(mysql_error());
}
?>
<table border='0' width='250'>
  <form method='POST' action='?gravar=sim'>
    <tr>
      <td width='64' align='center'>Nome</td>
      <td><p align='center'><input type='text' name='nome' size='20'></td>
    </tr>
    <tr>
      <td width='64' align='center'>Mail</td>
      <td><p align='center'><input type='text' name='mail' size='20'></td>
    </tr>
    <tr>
      <td width='64'>&nbsp;</td>
      <td><p align='center'><input type='submit' value='inserir' name='botao'></td>
    </tr>
  </form>
</table>


e (depois de muito suor) temos o formulário para inserir mails na tabela que criamos! :mrgreen: Dúvidas? ninguém se acusa portanto vou continuar! :lol:

Q: E como vamos consultar esta bd?
R: com um código assim:

Código: [Seleccione]
$query = "SELECT * FROM mails ORDER BY -mails_mail";
$result = mysql_query($query) or die (mysql_error());
while ($row = mysql_fetch_array($result)){
extract($row);
echo"$mails_nome --> $mails_mail, inserido a $mails_data<br>";
}


com este comando, a tabela mails vai ser consultada e vai retornar todos os registos ordenados alfabeticamente pelo endereço de email. Podem inserir no mesmo ficheiro para que devolva estes resultados sempre que inserirem um novo registo:

Código: [Seleccione]
<?
if($gravar=='sim'){
$dbh=mysql_connect ("localhost", "root", "morpheus") or die ('Lamentamos, mas não é possivel ligar à base de dados porque: ' . mysql_error());
mysql_select_db ("teste");
$data = date("d/m/Y");
$query = "INSERT INTO mails (mails_nome,mails_mail,mails_data) VALUES ('$nome','$mail','$data')" or die (mysql_error());
$result = mysql_query($query) or die(mysql_error());
}

if($gravar=='sim'){
$query = "SELECT * FROM mails ORDER BY mails_mail";
$result = mysql_query($query) or die (mysql_error());
while ($row = mysql_fetch_array($result)){
extract($row);
echo"$mails_nome --> $mails_mail, inserido a $mails_data<br>";
}}
?>

<table border='0' width='250'>
  <form method='POST' action='?gravar=sim'>
    <tr>
      <td width='64' align='center'>Nome</td>
      <td><p align='center'><input type='text' name='nome' size='20'></td>
    </tr>
    <tr>
      <td width='64' align='center'>Mail</td>
      <td><p align='center'><input type='text' name='mail' size='20'></td>
    </tr>
    <tr>
      <td width='64'>&nbsp;</td>
      <td><p align='center'><input type='submit' value='inserir' name='botao'></td>
    </tr>
  </form>
</table>


Façam upload para o vosso servidor preferido (que suporte php ;) ) e façam o teste!

Com isto, já têm bases para partir para algo mais complicado! por exemplo: Quem me consegue dizer como faço para ordenar pelo nome?

e como TPC  :twisted: ...
Q: Como é que posso por uma numeração sequencial na lista de consulta antes de cada mail? do estilo:

Citar
1 - mail_a@mail.com
2 - mail_b@mail.com
3 - mail_c@mail.com


Fica o desafio. Dúvidas? Postem à  vontade!
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

excelente =D&gt;
parabens e muito obrigado :wink:
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

<?
$y = mysql_query("SELECT * FROM mails")
while($x = mysql_fetch_array($y)){
echo''.$x['mail_mail'].'';
}
?>

Será? Só não tou a ver como é que vou por o numero!
Talvez assim:

<?
$y = mysql_query("SELECT * FROM mails")
$numero = 1;
while($x = mysql_fetch_array($y)){
echo' $numero - '.$x['mail_mail'].'';
$numero++;
}
?>


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

cenourinha, também está correcto assim... existe uma maneira mais simples! ;) mas não revelo já!  :mrgreen:
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

Bem, depois se puderes abre ai um post sobre as acções em mysql!

Tipo Delete Update Create Drop

etc...
Offline

asturmas 
Administrador
Mensagens 19733 Gostos 50
Feedback +2

Troféus totais: 39
Trófeus: (Ver todos)
Mobile User Windows User Super Combination Combination Topic Starter 100 Poll Votes 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter

parabens  :wink:
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

Citação de: "cenourinha"
Bem, depois se puderes abre ai um post sobre as acções em mysql!

Tipo Delete Update Create Drop

etc...


o proximo assim será! ;)
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

Citação de: "asturmas"
parabens  :wink:


não faço anos! :lol:
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

Citação de: "morpheus"
cenourinha, também está correcto assim... existe uma maneira mais simples! ;) mas não revelo já!  :mrgreen:

olha que talvez a maneira do cenourinha seja mesmo a melhor, porque se estás a pensar em chamar o mails_id funciona inicialmente, mas se depois for apagada uma daquelas linhas depois os numeros começavam a saltar tipo:
1 - mailblablabla
3 - mailblablabla
4 - mailblablabla

se não for isso não sei a que te referes

btw: keep it up ;)
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

pois, se fosse apagado algum id na bd ele iria mostrar os mails saltando!
Offline

asturmas 
Administrador
Mensagens 19733 Gostos 50
Feedback +2

Troféus totais: 39
Trófeus: (Ver todos)
Mobile User Windows User Super Combination Combination Topic Starter 100 Poll Votes 50 Poll Votes 10 Poll Votes Poll Voter Poll Starter

morpheus, daki a uns dias irei persisar de falar contigo sobre os teus tutoriais  :lol:
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

Grande morpheus! Grande tutorial!  :D

Muito obrigado!
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

Citação de: "kebrus"
olha que talvez a maneira do cenourinha seja mesmo a melhor, porque se estás a pensar em chamar o mails_id funciona inicialmente, mas se depois for apagada uma daquelas linhas depois os numeros começavam a saltar tipo:
1 - mailblablabla
3 - mailblablabla
4 - mailblablabla
se não for isso não sei a que te referes
btw: keep it up ;)


:mrgreen: olha que ainda não disse nada acerca de apagar registos na bd! mas não, não é por aí! ;)
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

Citação de: "asturmas"
morpheus, daki a uns dias irei persisar de falar contigo sobre os teus tutoriais  :lol:


para ouvir estou sempre disponível ;)
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

Citação de: "fpware"
Grande morpheus! Grande tutorial!  :D

Muito obrigado!

:lol: lembrei-me agora aquele anuncio do felino mal cheiroso... grande DVD, grande compra! :lol: