1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Nao consigo gravar dados nem exibilos (tinymce + php + mysql). AJUDEM PLEASE!!!

Discussão em 'Web Development' iniciada por Fil__, 28 de Janeiro de 2008. (Respostas: 13; Visualizações: 5638)

  1. Fil__

    Fil__ Power Member

    Malta, tenho o tinymce instalado para poderem meter texto, mas ao gravar ele cria na base de dados o registo mas nao grava o texto em si. E quando chamo para ver os registos ele indica-me que nao tem nenhum. O que tou a fazer de errado? Os meus codigos sao estes:

    Ficheiro html onde se escreve o que se quer
    Código:
    <html>
    <head>
    <title>TinyMCE Test</title>
    <script language="javascript" type="text/javascript" src="http://***.*****.***/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
    <script language="javascript" type="text/javascript">
    tinyMCE.init({
        mode : "textareas",
        theme : "advanced",
        plugins : "table,advhr,advimage,advlink,emotions,iespell,insertdatetime,zoom,searchreplace,contextmenu",
        theme_advanced_buttons1_add_before : "save,separator",
        theme_advanced_buttons1_add : "fontselect,fontsizeselect",
        theme_advanced_buttons2_add : "separator,insertdate,inserttime,preview,zoom,separator,forecolor,backcolor",
        theme_advanced_buttons2_add_before: "cut,copy,paste,separator,search,replace,separator",
        theme_advanced_buttons3_add_before : "tablecontrols,separator",
        theme_advanced_buttons3_add : "emotions,iespell,advhr,separator",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "center",
        /*theme_advanced_statusbar_location : "top",*/
        plugin_insertdate_dateFormat : "%Y-%m-%d",
        plugin_insertdate_timeFormat : "%H:%M:%S",
        extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
        external_link_list_url : "example_data/example_link_list.js",
        external_image_list_url : "example_data/example_image_list.js",
        flash_external_list_url : "example_data/example_flash_list.js"
    });
    </script>
    </head>
    <body>
    <form method="post" action="conteudo.php">
        <textarea name="content" cols="80" rows="15"></textarea>
        <input type="submit" value="Save" />
    </form>
    </body>
    </html>
    
    Ficheiro conteudo.php que supostamente e onde grava
    Código:
    <?php
    $conexao = mysql_connect("********", "******", "*****")
    or die ("Erro na ligação à banco de dados.");
    $db = mysql_select_db("*******")
    or die ("Erro ao selecionar a base de dados.");
    
    $sql = "INSERT INTO paginas (
    texto
    ) VALUES (
    '".$_POST['texto']."'
    )";
    
    $sql = mysql_query($sql)
    or die ("Houve erro na gravação dos dados.");
    ?>
    
    Ficheiro noticias.php onde era para aparecerem as varias noticias
    Código:
    <?php
    $conexao = mysql_connect("***********", "*******", "*******")
    or die ("Erro na conexão à base de dados.");
    $db = mysql_select_db("**********")
    or die ("Erro ao selecionar a base de dados.");
    
    $sql = "SELECT * 
    FROM paginas 
    WHERE ver = '1' 
    ORDER BY id DESC 
    LIMIT 1000";
    
    $resultado = mysql_query($sql) 
    or die ("Não foi possível realizar a consulta");
    if (@mysql_num_rows($resultado) == 0)
       die('Nenhum registro encontrado');
    
    while ($linha=mysql_fetch_array($resultado))
    {
       echo "Notícia: {$linha['texto']} <br />";
    }
    ?>
    
    Esta é a minha base de dados
    Código:
    CREATE TABLE `paginas` (
      `id` int(11) NOT NULL auto_increment,
      `texto` text NOT NULL,
      `ver` tinyint(1) default '0',
      PRIMARY KEY  (`id`)
    )
    
    Podem ajudar-me :'( ?
     
    Última edição: 29 de Janeiro de 2008
  2. anjo2

    anjo2 Power Member

    Não é:
    PHP:
    $_POST['texto']
    mas sim:
    PHP:
    $_POST['content']
    provavelmente copiaste de uns tutoriais, mas com nomes diferentes é normal que não funcione. Para debug podes utilizar o echo, exemplo:
    PHP:
    echo $sql;
    Isto depois de teres definido a query, ele vai mostrar como fica, e aí percebes logo o que foi inserido ou vai ser inserido.
     
  3. Fil__

    Fil__ Power Member

    Nao copiei anjo2, li e fui tentando fazer alguma coisa que funcionasse. Mas tava convencido que naquele post devia ir o campo texto, porque se houvesse mais campos como se distinguia? Mas brigadao pela liçao. Abraço
     
  4. anjo2

    anjo2 Power Member

    Código:
    <textarea name="[U][B][COLOR=Red]content[/COLOR][/B][/U]" cols="80" rows="15"></textarea>
    onde tu defines o "name", vai ser o que ele envia
     
  5. Fil__

    Fil__ Power Member

    Nop anjo2, nao funciona. Continua a gravar para a base de dados e grava o conteudo em si. Mas depois quando o chamo ele nao encontra registo nenhum. Nao percebo porque
     
    Última edição: 29 de Janeiro de 2008
  6. Fil__

    Fil__ Power Member

    Ja consegui. Fiz o que penso ser uma batota mas gostava que me explicassem se fiz bem ou nao

    Código:
    <?php
    $conexao = mysql_connect("***********", "*******", "*******")
    or die ("Erro na conexão à base de dados.");
    $db = mysql_select_db("**********")
    or die ("Erro ao selecionar a base de dados.");
    
    $sql = "SELECT * 
    FROM paginas 
    WHERE ver = '1' 
    ORDER BY id DESC 
    LIMIT 1000";
    
    $resultado = mysql_query($sql) 
    or die ("Não foi possível realizar a consulta");
    if (@mysql_num_rows($resultado) == 0)
       die('Nenhum registro encontrado');
    
    while ($linha=mysql_fetch_array($resultado))
    {
       echo "Notícia: {$linha['texto']} <br />";
    }
    ?>
    
    Na linha if (@mysql_num_rows($resultado) == 0 substitui o 0 por 1 e
    na linha WHERE ver = '1' substitui o 1 por 0
    Deste modo ele ja me acha os registos que tavam na base dados. Esta "batota e correcta" ou nem por isso? Pode ser prejudicial ao codigo?
     
  7. anjo2

    anjo2 Power Member

    Normal que não funcione, e essa alteração é simplesmente sem nexo.

    Na tabela, tens como default a tabela ver como 0, logo inseres tudo com 0, assim ao ir buscar os que teem ver=1 não te aparece nenhum...
     
  8. Fil__

    Fil__ Power Member

    E uma alteraçao sem nexo mas que permitiu funcionar. Sera errado manter assim?
     
  9. anjo2

    anjo2 Power Member

    if (@mysql_num_rows($resultado) == 0)

    Se não houver resultado, ele faz aquela acção, como tu puseste, se ele tiver 1 resultado, diz que não tem nenhum, por isso deixa a 0

    Estás a inserir todos os resultados com ver=0, se pedes os que teem ver=0, ele mostra todos, tens é de mudar o default da tabela para 1, ou ao colocar indicar que o ver vai ser 1.
     
  10. Fil__

    Fil__ Power Member

    Ja percebi anjo2. Isto ja ta a funcionar porreiro. Mas agora tenho outra questao, como é que faço para que os varios registos que sao chamados, sejam chamados no editor de texto tinymce em vez de aparecerem na pagina atraves da funçao echo? Sabes? Brigadao
     
  11. anjo2

    anjo2 Power Member

    Mas queres que sejam editados?
     
  12. Fil__

    Fil__ Power Member

    Sim anjo2, mas que sejam editados no tinymce. No fundo e como se fosse um gestor de conteudos em que a pessoa escreve o que quer na pagina especifica (mas todas as paginas para escrever terao o tinymce). Nao sei se me consegui explicar bem anjo2
     
  13. anjo2

    anjo2 Power Member

    Eu não sei bem o que pretendes, mas há-de ser algo assim:
    Código:
    <form method="post" action="conteudo.php">
        <textarea name="content" cols="80" rows="15"><?= $texto ?></textarea>
        <input type="submit" value="Save" />
    </form>
    O texto é o que está na base de dados
     
  14. Fil__

    Fil__ Power Member

    Isso vai retornar o texto que ta na base de dados no tinymce? Portanto o que pretendo e mesmo isso, os textos serem escritos no tinymce, gravados para a base de dados e depois exibidos (quando se esta no gestor de conteudos) no tinymce
     

Partilhar esta Página