[Ajuda] Flash + PHP + mySQL (phpMyAdmin)

lilcrazy

Power Member
Boas pessoal,
Estou a desenvolver um site Flash, no âmbito de uma cadeira da universidade. Como preciso de utilizar o XAMP, para utilizar o Apache como web server, o mySQL para criar e manusear registos numa base de dados, e fazer integraçao com php, pesquisei uns tutoriais no google para me ajudar. O problema é que já dei mil e uma voltas para tentar colocar isto tudo a funcionar mas sem sucesso. Se alguém me puder ajudar agradecia :)

Bem, utilizando o phpMyAdmin consigo criar bases de dados, mudar privilégios de utilizadores, inserir dados em tabelas etc. O meu objectivo é criar formulários no site flash (do género, recomendar site, enviar formulários, etc) e utilizar scripts em .php para comunicar com a base de dados e inserir registos.

Quanto ao Flash, sei que preciso criar caixas de texto e dar-lhes nomes (ainda não consegui perceber se é melhor colocar nome para o objecto ou nome da variável da caixa de texto, no caso de envio de dados para o ficheiro php...). De seguida crio um botão e na frame adiciono o seguinte script:

Código:
submit.onPress = function () {
      loadVariablesNum("registo.php", 0, "POST")
}

Neste caso, submit é o nome do botão, "registo.php" é o ficheiro que insere dados numa tabela existente na base de dados "test" no phpMyAdmin. Existe diferença entre utilizar como segundo argumento da função loadVariablesNum "0" ou "_blank"? E para terceiro argumento? Segundo percebi "POST" é para enviar para o php, e "GET" para receber do php, por isso suponho que devo utilizar "POST" certo? Aqui seria melhor utilizar loadVariables?

O ficheiro registo.php é o seguinte:

PHP:
<?
$email = $_POST['email'];

// Connects to the Database.
$connection = mysql_connect("localhost","root","");

$db_selected = mysql_select_db("test");

// Preforms the SQL query
//$result = mysql_query('INSERT INTO newsletter VALUES ("'.$email.'")');
$result = mysql_query("INSERT INTO newsletter VALUES ('f')"); //teste

?>

Existe diferença entre utilizar $_POST['email'] e $_POST["email"]? Neste caso "email" é o nome da variável da caixa de texto ou o nome desse objecto do flash? Outra coisa, HTTP_POST_VARS era utilizado em versões anteriores do PHP, tipo a versão 4, estou certo? E quanto à parte de inserção na base de dados, esta parte está correcta ("'.$email.'")?

Eu fiz publish no Flash, abro o html e ao carregar no botão, não é inserido nenhum registo na tabela 'newsletter' da base de dados 'test' :/ No phpMyAdmin funciona tudo bem, mas interligando o php com a base de dados não está a funcionar, não percebo porque. Alguém me consegue dar umas dicas? Já teste duma maneira mais simples, com código mais simples. Neste caso o ficheiro é o seguinte mail.php
PHP:
<?
// recolho as variáveis que vem pelo formulário
$nome_destinatario = $_POST['nome_destinatario'];
$email_destinatario = $_POST['email_destinatario'];
$nome_remetente = $_POST['nome_remetente'];
$email_remetente = $_POST['email_remetente'];

//indica url de seu site
$url = "http://www.feel.com";
//indique o nome de seu site
$nome_do_site = "Feel";

//indique o assunto da mensagem
$assunto = $nome_remetente . " recomenda este site";
//redigir a mensagem
$mensagem = "Caro/a " . $nome_destinatario . ":<br>";
$mensagem .= $nome_remetente . " recomenda-o a visitar ";
$mensagem .= "<a href='" . $url . "'>" . $url . "</a><br><br>Divirta-se";

//indica que o e-mail será enviado em formato HTML
$titulo = "From:".$email_remetente."\nReply-To:".$email_remetente."\n";
$titulo .= "X-Mailer:PHP/".phpversao()."\n";
$titulo .= "Mime-Versao: 1.0\n";
$titulo .= "Content-Type: text/html";

//envia a mensagem

mail($email_destinatario, $assunto, $mensagem, $titulo);
?>

Penso a sintaxe de ambos os .php estarem correctas, de qualquer maneira se me tiver enganado e alguém consegui detectar o erro agradeço :) Com esse simples código, que supostamente deveria funcionar, não chega nenhum email :/ Já ouvi dizer que é melhor utilizar

PHP:
<?php
?>

do que

PHP:
<?
?>

É verdade?

Por último, apenas um dúvida final. Ao fazer o upload dos ficheiros para colocar o site online, coloco apenas os .php, .html, .swf? Como funciona a parte da base de dados, sabendo que não vou utilizar o meu pc como servidor? Na conexão à base de dados através do php, sei que temos que alterar o "localhost" para o URL do nosso site, mas como criamos lá as tabelas? Esta parte está-me a fazer um pouco de confusão.

Agradeço toda a ajuda ;)
 
A questão das <? e ?> é indiferente, se o short_tags tiver ligado, é a mesma coisa.

A questão de " " e ' ' também é indiferente.

Tou a meio de 1 jogo, não tenho tempo para ler o resto do post para já. :D
 
A questão das <? e ?> é indiferente, se o short_tags tiver ligado, é a mesma coisa.

A questão de " " e ' ' também é indiferente.

Tou a meio de 1 jogo, não tenho tempo para ler o resto do post para já. :D

lolol ok ok. Mas pelo menos já me tiraste 2 dúvidas ;) Como ligas o short_tags já agora?
 
lolol ok ok. Mas pelo menos já me tiraste 2 dúvidas ;) Como ligas o short_tags já agora?
Se foste tu que instalaste, podes mudar no ficheiro php.ini
Se existirem dois, um na pasta /php/ e outro na pasta /apache/bin/ (ou se só existir este), é este que tens de alterar.
Abres o php.ini e procuras por short_open_tag .
E encontrarás algo assim:

Código:
; Allow the <? tag.  Otherwise, only <?php and <script> tags are recognized.
; NOTE: Using short tags should be avoided when developing applications or
; libraries that are meant for redistribution, or deployment on PHP
; servers which are not under your control, because short tags may not
; be supported on the target server. For portable, redistributable code,
; be sure not to use short tags.
short_open_tag = Off
e mudas para On, ficando
Código:
short_open_tag = On
:P
 
Por último, apenas um dúvida final. Ao fazer o upload dos ficheiros para colocar o site online, coloco apenas os .php, .html, .swf? Como funciona a parte da base de dados, sabendo que não vou utilizar o meu pc como servidor? Na conexão à base de dados através do php, sei que temos que alterar o "localhost" para o URL do nosso site, mas como criamos lá as tabelas? Esta parte está-me a fazer um pouco de confusão.

Se não vais utilizar o teu computador como servidor (localhost) então terás de usar um servidor que hospede MySQL (remotehost) como é óbvio.

Podes também tornar o teu localhost num remotehost se isso te simplificar a vida mas terás de ter o teu computador ligado à internet durante a apresentação e avaliação do teu trabalho.

Uma boa ferramenta é o serviço de no-ip que atribue um nome à tua máquina local que te permite aceder de qualquer parte da Internet à tua máquina - útil para o caso de quereres usar a base de dados que usas agora.

---------

Outra hipótese, procura um serviço que forneça hospedagem gratuita e corre o mySQL a partir dessa localização e crias as tabelas à mesmo com o phpmyAdmin do serviço deles.

Deixo-te um link para o FreeHostia que é gratuito e vem com uma base de dados que podes usar à vontade para aquilo que precisas. (existem muitos outros serviços semelhantes por aí..)

:)
 
Exacto. Era isso mesmo eheh

Obrigado pela ajuda http://forum.zwame.pt/member.php?u=56576Nuno Brito.

Já agora, quanto ao problema do flash+php, o facto de eu ter o código (até o mais simples -> mail()) e não funcionar quando interligo o flash com o php. Alguém tem alguma sugestão?

Obrigado mais uma vez a todos ;)


tenta assim:
Código:
/*Declarando objecto LoadVars que envia os valores*/

   var objManda:LoadVars = new LoadVars();
 
  objManda.nome_destinatario = nome_destinatario.text;
//mais as restantes variáveis//
 
objManda.sendAndLoad("pag.php",objManda,"POST");


assim tem de funcionar
 
Última edição pelo moderador:
Nesse caso, apenas necessito dar um valor ao nome do objecto da caixa de texto, por exemplo 'caixaTextoNome', e do lado do php faço algo do género '$variavelNome = $_Post['caixaTextoNome']' certo? Ou necessito dar também um nome de variável a essa caixa de texto? Uma dúvida final: relativamente aos .html, .swf, .php, ficam todos na paste htdocs da directoria onde foi instalado o xampp?

Mais uma vez, Obrigado por toda a ajuda pessoal ;)
 
Última edição:
tens de instanciar a caixa de texto como caixaTextoNome..só com o nome de instancia funciona..e depois tens de ter esses ficheiros na directoria na pasta htdocs
 
Back
Topo