Ir para conteúdo
Fórum Script Brasil
  • 0

Criando Uma Nova Página Através De Form


Rastazituh

Pergunta

Boas pessoal !

Falaram-me sobre uma função ou um código PHP que nos permite, ao clickarmos num botão Submit de um formulário, gerar uma nova página através de um modelo já feito e que tenha características introduzidas nos campos de formulário (que serão também enviadas para uma Base de Dados MySQL). Alguém conhece esta função ou alguma que faça algo idêntico ? Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Eu encontrei algo na net como:

<?header("Content-type: text/vnd.wap.wml")?> 
<?echo "<?xml version=\"1.0\"?>\n"?> 
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN "http://hola"> 
<wml> 
<card id="card1" title="teste"> 
<p> 
<?echo $HTTP_USER_AGENT?> 
</p> 
</card> 
</wml> 

É algo como isto que terei de fazer, mas substituindo as tags por PHP ? E o tipo de página a gerar ? Eu conheço: text/html, agora fiquei a conhecer text/vnd.wap.wml. Para PHP é simplesmente text/php ? Obrigado pela atenão. wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

na verdade esse sistema acima citado, éphp cara...

mais para inserir dados no db não tem nada a ver com isso..

voce precisaria de funcoes do tipo:

mysql

http://br.php.net/mysql_pconnect

http://br.php.net/mysql_db_select

http://br.php.net/mysql_query

leia mais em

http://br.php.net/mysql

falou cara

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, eu sei.. Na verdade acho que não me expliquei bem. Isto funciona da seguinte forma:

Tenho um formulário que serve para adicionar conteúdos. Ao clickar em Submit, vai rodar o script, certo ? Bem, este script vai adicionar uma linha numa tabela MySQL, com o conteúdo em HTML e outras informações sobre o mesmo, e vai também gerar dinamicamente uma nova página, em que existirá um SELECT MySQL para ir buscar o título do conteúdo e o texto do conteúdo à tabela. Ou seja, para cada linha na BD vai existir uma página criada dinamicamente, do tipo *.php, cujo nome será inserido numa caixa de texto do formulário (ex: insiro no formulário o link "filme2" e será criada a página filme2.php). É isto que quero fazer. Terei de criar portanto um script, para que, depois de inserir os dados na BD, crie uma nova página através de um modelo em que apenas o local em que estão colocadas as variáveis (que corresponderão, portanto, aos campos do formulário) sejam mudados. Apenas isto. Só não sei como criar a tal página. É por aquele método que postei acima ? Obrigado !

Link para o comentário
Compartilhar em outros sites

  • 0

não sei se é isso mais....

acho q você deve armazena no bd somente os valores dos formularios para cada cadastro feito e exibir os valores em uma pagina padrão onde os dados do bd seriam expostos onde você quisesse q fosse (numa caixa de texto ou texto mesmo) ..

ex..

você tem a pagina q cadastra (onde tem os formularios) e quando você insere os valores para cada campo desse formulario..ele os grava no banco de dados...

depois quando você for exibir os valores você apenas da um select no banco e os retorna em uma pagina padrão onde só é alterada os campos de acordo com os valores do banco...talvez você pode exibir os valores na mesma pagina em q se cadastra...podendo assim fazer uma especie de "editar dados"...

bom estou dizendo pelo q eu intendi....caso esteja errado post ai...

Link para o comentário
Compartilhar em outros sites

  • 0

Não posso dizer que sei ao certo o que você quer, porque se é o que penso é muito simples, por isso não deve ser mas aqui vai...

Você tem os campos da bd assim, tipo:

id

título

texto

A página que vai abrir com os dados você chama sempre a mesma, faz um modelo, no sítio do título, tem, supondo:

<trd>Título</td>
Se gravar o id da última inserção que fez na bd logo depois de o fazer, por exemplo:
$num_id = mysql_insert_id();
Você na página acede à tabela
$query = "select * from tabela1 where id = ".$num_id;
$result = mysql_query($query) or die($query);
$row = mysql_fetch_assoc($result);
Aí basta no sítio do título chamar:
<td><? echo $row['titulo'];?></td>

Será essa sua dúvida? Espero ter ajudado

Link para o comentário
Compartilhar em outros sites

  • 0

Oi pessoal ! Bem, acho melhor dar outro exemplo. Acho que desta vez vão compreender. Fórum phpBB: ao criar um novo tópico, os dados são inseridos automaticamente na BD e é também criada uma página, que inclui um header geral para todas as páginas e é baseada no novo template, ou melhor, as características são adaptadas ao novo template, certo ? Post, Adiciona dados na BD, cria nova página. A única diferença entre o que quero e o phpBB é que o phpBB vai criar uma página com um número automático. No meu caso, sou eu que estipulo o nome da página no próprio formulário. Era também uma boa ideia criar páginas por números, mas tou em dúvida de como isso funciona, porque os dados (neste caso, conteúdos) serão colocados em diferentes tabelas MySQL consoante o tema e categoria. Mas se desse, ainda melhor !

Fui pesquisar nos arquivos do meu fórum phpBB e encontrei no ficheiro posting.php isto:

//
// Include page header
//
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

$template->set_filenames(array(
	'body' => 'posting_body.tpl', 
	'pollbody' => 'posting_poll_body.tpl', 
	'reviewbody' => 'posting_topic_review.tpl')
);
make_jumpbox('viewforum.'.$phpEx);

$template->assign_vars(array(
	'FORUM_NAME' => $forum_name,
	'L_POST_A' => $page_title,
	'L_POST_SUBJECT' => $lang['Post_subject'], 

	'U_VIEW_FORUM' => append_sid("viewforum.$phpEx?" . POST_FORUM_URL . "=$forum_id"))
);

Eu penso que seja isso, porque primeiro inclui um header e depois adiciona a página consoante determinados dados. Eu só não percebo é como é que esse script funciona.. Alguém pode, por favor, me explicar ? Orbigado desde já.

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, já tenho isto melhor esquematizado. É assim: formulário > premir botão Submit > corre o script:

<?php
// Conexão com a Base de Dados
require "comum.php";

// Pesquisa o nome do tema no qual a categoria será inserida
$pesquisa = "SELECT * FROM temas WHERE id = '$id'";
$query = mysql_query($pesquisa);
$linha = mysql_fetch_array($query);

// Especificar os campos
$tema = $linha['nome_tema_tabela'];

// Pesquisa o nome da categoria no qual o conteúdo será inserido
$pesquisa2 = "SELECT * FROM categorias$tema WHERE id_categoria = '$id_categoria'";
$query2 = mysql_query($pesquisa2);
$linha2 = mysql_fetch_array($query2);

// Especificar os campos
$categoria = $linha2['nome_categoria_tabela'];

// Insere o conteúdo na tabela correcta
$data = date("Y-m-d");
$sql = "INSERT INTO titulos$categoria (id_categoria, nome_titulo, subtitulo, autor, data, conteudo, link) VALUES ('$id_categoria', '$nome_conteudo', 'off', '" . $_SESSION["nome_utilizador"] . "', '$data', '$conteudo', '$link')";
$resultado = mysql_query($sql);

// Pesquisa o nome da categoria no qual o conteúdo será inserido
$pesquisa3 = "SELECT * FROM titulos$categoria WHERE nome_titulo= '$nome_titulo'";
$query3 = mysql_query($pesquisa3);
$linha3 = mysql_fetch_array($query3);

// Especificar os campos
$id_titulo = $linha3['id_titulo'];

echo "<font size=\"2\" face=\"Verdana\" color=\"#000033\"><strong>Sucesso!</strong></font>";
echo "<BR>";
echo "<font size=\"1\" face=\"Verdana\" color=\"#000033\">Novo conteúdo adicionado à Base de Dados.</font>";
echo "<BR>";
echo "<a href=\"index2.php\"><font size=\"1\" face=\"Verdana\" color=\"#000033\">>> Regressar ao Sistema de Conteúdos Nimbus</font></a>";

?>
Agora, antes da mensagem de sucesso eu quero criar uma nova página. O nome dessa nova página é dado pelo input '$link' do formulário e deve ser feita consoante o seguinte modelo:
<?php
// Conexão à Base de Dados
require "comum.php";

// Pesquisa o ID do conteúdo que será pesquisado
$pesquisa = "SELECT * FROM titulos$categoria WHERE id_titulo = '$id_titulo'";
$query = mysql_query($pesquisa);
$linha = mysql_fetch_array($query);

// Especificar os campos
$titulo_conteudo = $linha['nome_titulo'];
$conteudo = $linha['conteudo'];

// Head da página
echo "<html>";
echo "<head>";
echo "<title>$titulo_conteudo</title>";
echo "<link rel='stylesheet' type='text/css' href='dataStyles.css'>";
echo "</head>";
echo "<body>";

// Cria a tabela
echo "<table width='500' border='0' cellspacing='2' cellpadding='0'>";
echo "<tr>"; 
echo "<td><font class='titulo'>$titulo_conteudo</font></td>";
echo "</tr>";
echo "<tr>"; 
echo "<td><font class='conteudo'>$conteudo</font></td>";
echo "</tr>";
echo "<tr>";
echo "<td></td>";
echo "</tr>";
echo "</table>";

// Fecha a página
echo "</body>";
echo "</html>";
?>

Várias páginas serão criadas, certo ? Então, a única diferença (relativamente a este último código) serão as variáveis $categoria e $id_titulo. A partir do momento em que a página PHP é criada, as variáveis $categoria e $id_titulo serão trocadas pelos valores que lhe correspondem.

Aqui vão as questões: como fixar essas variáveis (ou seja, fazer que após a criação da página as variáveis sejam trocadas pelos valores que lhe são correspondentes que vêm do primeiro script que postei) e de que forma devo criar esta nova página e definir o seu nome (que será passado pelo campo $link do formulário) ? Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0
cara eu ainda não entendi o que voce esta tentando fazer?

retornar uma pagina com os dados mysql? ai voce precisa do mysql_query e um loop

é isso?

falou

ele quer fazer as seções..

em tp uma administração...

o cara poim titulo, conteudo ... etc

e ai cria a pagina

axo q é isso rolleyes.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Bem, é um Sistema de Gestão de Conteúdos. Eu não sei se é a melhor solução, mas vou explicar o porquê de eu querer isto assim:

Quando na página do próprio site, no menu, tiver os SELECTs feitos para as diferentes categorias, títulos e possíveis subtítulos, a cada conteúdo deve estar associada uma página. E porquê ?

A página com o menu terá também outra área, onde estarão os conteúdos em que clickarmos. Estes serão apresentados através de includes, ou seja:

Menu:

<a href='?id=pagina1'>Página 1</a>

Área de conteúdos:

<?php

if (file_exists("$id.php")) {

include $_GET['id'] . ".php";

}

?>

--------------> Quando 'Página 1' for premido, abrirá nesse local a página que corresponde. Por isso, a cada conteúdo deve corresponder uma página. Entenderam ? unsure.gif

Link para o comentário
Compartilhar em outros sites

  • 0

O MySQL serve para listar as coisas e para proporcionar uma maior facilidade na edição dos conteúdos - depois da página criada, já sabe em que linha de que tabela deve ir buscar a informação (que, novamente, serão variáveis trocadas pelos seus valores reais) e cada evz que actualizar a BD estará actualizando o conteúdo.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi novamente pessoal ! Bem, estudei as funções que me indicaram (fopen, fwrite e fclose) e também o funcionamento de Constantes PHP (para fixar valores de determinadas variáveis). O meu script está quase pronto; contudo, não sei como utilizar as constantes enquanto variáveis (será que isso é sequer possível ?)..

Bem, vou colocar grande parte do meu script, porque para perceberem a minha dúvida talvez possam necessitar de perceber de onde vêm determinadas variáveis. Não se esqueçam que os dados vêm de um formulário (de campos $nome_conteudo, $link e $conteudo), e que a action="pagina.php?id=$id&id_categoria=$id_categoria&id_titulo=$id_titulo".

<?php
// Conexão com a Base de Dados
require "comum.php";

// Pesquisa o nome do tema no qual a categoria será inserida
$pesquisa = "SELECT * FROM temas WHERE id = '$id'";
$query = mysql_query($pesquisa);
$linha = mysql_fetch_array($query);

// Especificar os campos
$tema = $linha['nome_tema_tabela'];

// Pesquisa o nome da categoria no qual o conteúdo será inserido
$pesquisa2 = "SELECT * FROM categorias$tema WHERE id_categoria = '$id_categoria'";
$query2 = mysql_query($pesquisa2);
$linha2 = mysql_fetch_array($query2);

// Especificar os campos
$categoria = $linha2['nome_categoria_tabela'];

// Insere o conteúdo na tabela correcta
$data = date("Y-m-d");
$sql = "INSERT INTO titulos$categoria (id_categoria, nome_titulo, subtitulo, autor, data, conteudo, link) VALUES ('$id_categoria', '$nome_conteudo', 'off', '" . $_SESSION["nome_utilizador"] . "', '$data', '$conteudo', '$link')";
$resultado = mysql_query($sql);

// Cria o ficheiro
$filename = "$link.php";
$handle = fopen("data/$filename","x");
fclose($handle);

// Define as constantes
define("categoria_constant", "$categoria");
define("id_constant", "$id_titulo");

// Define o contéudo a ser inserido
$conteudo_final = "<?php
// Conexão à Base de Dados
require "comum.php";

// Pesquisa o ID do conteúdo que será pesquisado
$pesquisa = "SELECT * FROM titulos[categoria_constant] WHERE id_titulo = '[id_constant]'";
$query = mysql_query($pesquisa);
$linha = mysql_fetch_array($query);

// Especificar os campos
$titulo_conteudo = $linha['nome_titulo'];
$conteudo = $linha['conteudo'];
?>";

// Define o caminho do ficheiro
$filename2 = "data/$filename";

// Adiciona o conteúdo
	if (is_writable($filename2)) {
  if (!handle2 = fopen("$filename2","a"){
  	print "<font size=\"1\" face=\"Verdana\" color=\"#000033\">Erro ao abrir o ficheuro ($filename2).</font>";
  	exit; }
  if (!fwrite($handle2,$conteudo_final)) {
  	print "<font size=\"1\" face=\"Verdana\" color=\"#000033\">Erro ao modificar o ficheiro ($filename2).</font>";
  	exit; }
  print "<font size=\"1\" face=\"Verdana\" color=\"#000033\">Sucesso! Modificação no ficheiro ($filename2) concluída.</font>";
  fclose($handle2); }
	else {
  print "<font size=\"1\" face=\"Verdana\" color=\"#000033\">O ficheiro $filename2 não pode ser modificado.</font>"; }

?>
Bem, vejam as seguintes linhas (variável $conteudo_final):
// Pesquisa o ID do conteúdo que será pesquisado
$pesquisa = "SELECT * FROM titulos[categoria_constant] WHERE id_titulo = '[id_constant]'";
$query = mysql_query($pesquisa);
$linha = mysql_fetch_array($query);
Claro que não colocarei o nome das constantes ente []'s, era só para indicar o nome das constantes que quero aí utilizar. Mas é precisamente aí que reside a minha dúvida: como devo colocar o nome da constante que quero utilizar aí ? Por exemplo, se fosse uma variável colocaria $categoria_constant. Será que tenho de utilizar ${categoria_constant} ? Bem, esta é a minha dúvida: como devo definir ali o nome da constante em questão. Não encontrei nada no manual do PHP, por isso vim cá perguntar. Obrigado. Editado: Ah ! E também já reparei que na variável $conteudo_final deve ter todas as aspas que pertençam ao código a inserir (ou seja, excepto a primeira e a última), trocadas por plicas ('):
// Define o contéudo a ser inserido
$conteudo_final = "<?php
// Conexão à Base de Dados
require 'comum.php';

// Pesquisa o ID do conteúdo que será pesquisado
$pesquisa = 'SELECT * FROM titulos[categoria_constant] WHERE id_titulo = '[id_constant]'';
$query = mysql_query($pesquisa);
$linha = mysql_fetch_array($query);

// Especificar os campos
$titulo_conteudo = $linha['nome_titulo'];
$conteudo = $linha['conteudo'];
?>";

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...