• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

dmais

integrar FCKeditor numa base de dados

12 mensagens neste tópico

Boa tarde,

sou web designer e concebo sites estáticos em html e css.

só recentemente comecei a trabalhar com php.

estou a criar um site com um backoffice para possibilitar ao cliente, através do editor, alterar alguns elementos do site para o frontoffice.

Encontrei o editor FCKeditor para criar as páginas em backoffice mas tive alguma dificuldade em conseguir inserir informação numa base de dados.

descobri um site com um tutorial bastante bom que explica como integrar o editor fckeditor numa base de dados mysql.

http://www.msbware.com/p/view_article/article_id/110

mas apenas exemplifica com um registo na base de dados e no site que estou a criar terei mais que uma página.

tendo as páginas a, b e c numa base de dados, como poderei inserir elementos no editor para por exemplo, a página b?

Obrigado,

Pedro

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A tua dúvida não tem a ver com FCKeditor. Olha pra o FCKeditor simplesmente como uma text-area quitada, pois é apenas isso que é.

Posto isto, tens que criar uma aplicação com formulários que possam fazer update de registos específicos. Provavelemnte quererás implementar o conjunto de funcionalidades a que chamam CRUD (create, read, update, delete).

Infelizmente ainda não há nenhum tutorial no fórum que vá directo a esse assunto.

Talvez uma boa forma de começares é leres os tópicos sobre guestbooks nas secções "armazem de código" e "tutoriais e how tos"

No wiki também lá tem um exemplo:

http://wiki.portugal-a-programar.pt/dev_web:php:criar_um_sistema_de_artigos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu acho que é uma questão de estudares mais php, estuda os comandos mysql que vais precisar também como o SELECT DELETE UPDATE etc.. porque eu quando comecei no php não sabia essas coisas,foi uma questão de lógica que ainda não tinha, depois de teres a lógica é só expandires o conhecimento na linguagem neste caso php.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá Bom dia,

Obrigado por terem respondido :)

tenho esta base de dados com a seguinte tabela exp1:

id INT NOT NULL AUTO-INCREMENT,

a text NOT NULL,

b text NOT NULL,

c text NOT NULL,

PRIMARY KEY (id)

tenho este código em index.php com o editor que está conectado com a base de dados.

<?php 

 // Connect to the database
 $cnx = mysql_connect("localhost", "root", "pedro")
        OR die("Unable to connect to database!");
 mysql_select_db("info", $cnx);


 if ($_POST['submit_form'] == 1)  {
   // Save to the database
   $filename = mysql_real_escape_string(trim($_POST['fcktext']));
   $res = mysql_query("UPDATE exp1 SET a = '$filename'  WHERE id = 1");

if (!$res)
     die("Error saving the record!  Mysql said: ".mysql_error());

   // Redirect to self to get rid of the POST
   header("Location: index.php");
 }

 include_once "../includes/FCKeditor/fckeditor.php";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Test FCKeditor</title>
</head>
<body>


<table align="center" height="100" width="200">
               <tr>

                   <td align="center" width="20">
       <a href="index.php?filename=a" >a</a>
                   </td>
                   <td align="center" width="20">
       <a href="index.php?filename=b" >b</a>
                   </td>
                   <td align="center" width="20">
       <a href="index.php?filename=c" >c</a>
                   </td>

               </tr>
           </table>

<?php
switch($_GET['filename']) {
   case a:
   include'a.php';
   break;
   case b:
   include'b.php';
   break; 
   case c:
   include'c.php';
   break; 

default:
   $_GET['filename'] = "a.php";
}
?>

<h1>Test FCKeditor</h1>

<form action="index.php" method="post">
<?php 
 // Get data from the database
 $query = mysql_query("SELECT * FROM exp1 WHERE id = 1");
 $filename = mysql_fetch_array($query);

 // Configure and output editor
 $oFCKeditor = new FCKeditor('fcktext');
 $oFCKeditor->BasePath = "../includes/FCKeditor/";
 $oFCKeditor->Value    = $filename[($_GET['filename'])];
 $oFCKeditor->Width    = 1200;
 $oFCKeditor->Height   = 600;
 echo $oFCKeditor->CreateHtml();
?>
<br />
<input type="hidden" name="submit_form" value="1" />
<input type="submit" value="Save Form" />
</form>

</body>
</html>


<?php 
 // Close the database connection
 mysql_close($cnx);
?> 

a imagem que se segue mostra o resultado no browser

http://www.divert-rir.com/screen.jpg

sempre que clico no link "a" aparece no editor o correspondente ao link que está memorizado na base de dados. e assim sucessivamente com o "b" e o "c".

mas quando quero gravar qualquer coisa no editor, fazer um UPDATE na base de dados, tenho sempre que alterar o seguinte código manualmente:

$res = mysql_query("UPDATE exp1 SET a = '$filename' WHERE id = 1");

para gravar a variável a

$res = mysql_query("UPDATE exp1 SET b = '$filename' WHERE id = 1");

para gravar a variável b

$res = mysql_query("UPDATE exp1 SET c = '$filename' WHERE id = 1");

e para gravar a variável c

Como posso gravar na base de dados as seguintes variáveis sem ter que estar a alterar os códigos?

Gostava de descobrir uma forma quando chamasse a variável "a" , "b" ou "c" no editor poder gravá-la aós editá-la, sem ter que alterar o código manualmente.

Obrigado,

Pedro

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Parece-me que essa base de dados está um pouco mal estruturada. Talvez queiras considerar a seguinte :

Supondo que a, b e c sejam páginas independentes, o que tens a fazer é criar uma tabela com os atributos id e content (conteudo da página em si). A partir daqui, crias 3 entradas na base de dados, 1 para cada página. Depois é só alterar o php, em vez de index.php?filename=a, ficas com index.php?filename=1 (1 é o id da pagina, que varia conforme a pagina que tiveres aberta).

No fim, fazes isto :

$res = mysql_query("UPDATE exp1 SET content = '$conteudo' WHERE id = $filename");
e para gravar a variável c

A variável $content é o $_POST['fcktext'], logo tens de a assignar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá yoda.pt.

Obrigado por responderes ;)

Mas há qualquer coisa que não está a resultar  :confused:

alterei a estrutura da base de dados como sugeriste, criei uma tabela com os atributos id e os conteudos em content. no id pus 1, 2 e 3 correspondente para cada página.

 
$conteudo = mysql_real_escape_string(trim($_POST['fcktext']));
$res = mysql_query("UPDATE exp1 SET content = '$conteudo' WHERE id = $filename");

nos links para as páginas alterei para index.php?filename=1 e sucessivamente ...

e no switch fiz o seguinte código:

<?php 
switch($_GET['$filename']) { 
    case 1:
include'1.php';
break; 
    case 2:
include'2.php';
break;  
    case 3:
include'3.php';
break;  
   
default: 
    $_GET['$filename'] = "1.php"; 
} 
?>

e no editor o seguinte:

<?php  
  // Get data from the database 
  $query = mysql_query("SELECT content FROM exp1 WHERE id = $filename"); 
  $filename = mysql_fetch_array($query); 
  
  // Configure and output editor 
  $oFCKeditor = new FCKeditor('fcktext'); 
  $oFCKeditor->BasePath = "../includes/FCKeditor/"; 
  $oFCKeditor->Value    = $filename[($_GET['filename'])]; 
  $oFCKeditor->Width    = 1200; 
  $oFCKeditor->Height   = 600; 
  echo $oFCKeditor->CreateHtml(); 
?> 

sempre que clico numa página para a seleccionar não consigo vizualizar-la nem gravar no editor.

será o código da expressão switch que está mal elaborado?

Pedro

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Não tenho a certeza, mas experimenta isto :

$oFCKeditor->Value    = $filename[$_GET['filename']]; 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

oi!,

experimentei como disseste e não resultou :confused:

e sempre que tento gravar qualquer coisa no editor aparece este erro:

Error saving the record! Mysql said: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora