Jump to content
Rodrigo2000

Problema a guardar os dados de uma textarea para o mysql

Recommended Posts

Bom dia,

 

Tenho estado a criar uma base dados onde vou inserir um conjunto de elementos de uma textarea.

Quando o texto é curto, facilmente passa para a base de dados, no caso de ser longo não passa nada.

O problema é claramente as variáveis, na base de dados já alterei o tamanho dos campos, mas resolveu o

problema.

Alguem tem uma ideia de como posso resolver o problema.

 

Envio o código fonte da página de entrada de dados.

Tenho igualmente um problema que ainda nem percebi o que se passa.

O texto quando carregado na textarea e input aparece com espaços, como é que os posso

eliminar.

 

Sem mais

Rodrigo Lourenço

 

<!DOCTYPE HTML>
<html>

<head>
  <title>Adiciona Artigo</title>
  <meta name="description" content="website description" />
  <meta name="keywords" content="website keywords, website keywords" />
  <meta http-equiv="content-type" content="text/html; charset=windows-1252" />
  <link rel="stylesheet" type="text/css" href="style/style.css" title="style" />
</head>

<body>

  <?php
    //começa por verificar a sessão, caso não esteja activa envia para a página inicial.
    require("livraria.php");
    session_start();
    $validacao = array();
    
    $login = 0;
    if (isset($_SESSION['login']) && isset($_SESSION["sessionmaxtime"])){
        $login = $_SESSION['login'];        
    }
    if ($login == 0)
        echo "<meta http-equiv=\"refresh\" content=\"0; url=index.php\">";
    else{    
        if ($_SERVER["REQUEST_METHOD"] == "POST"){            
            $validacao = validarAdd();
        }
    }
  ?>
  <div id="main">
    <div id="header">
      <div id="logo">
        <div id="logo_text">
          <!-- class="logo_colour", allows you to change the colour of the text -->
          <h1><a href="index.php">Livro<span class="logo_colour">Aberto</span></a></h1>
          <h2>Um lugar onde se lê e fala de livros.</h2>

        </div>
      </div>
      <div id="menubar">
        <ul id="menu">
          <!-- put class="selected" in the li tag for the selected page - to highlight which page you're on -->
          <li><a href="index.php">Home</a></li>
          <li class="selected"><a href="add.php">Criar</a></li>
          <li><a href="apagar.php">Apagar</a></li>
          <li><a href="alterar.php">Alterar</a></li>
          <li><a href="gerir.php">Utilizadores</a></li>
          <li><a href="sair.php">Sair</a></li>
          <?php
            echo "<li><a href=\"#\"> ".$_SESSION["utilizador"]."</a></li>";
          ?>
        </ul>
      </div>
    </div>
    <div id="site_content">
      <div class="sidebar">
        <!-- insert your sidebar items here -->
        <h3>Livros em Revista</h3>
        <p>Use o formulário para inserir um novo artigo.</p>          
        <p>
            Os campos abaixo mencionados são preenchidos automáticamente.
            <ul>
                <li> Autor </li>
                <li> Data </li>
            </ul>
          </p>
        <p></p>
        <h3>Sites Uteis</h3>
        <ul>
          <li><a href="#">link 1</a></li>
          <li><a href="#">link 2</a></li>
          <li><a href="#">link 3</a></li>
          <li><a href="#">link 4</a></li>
        </ul>
      </div>
      <div id="content">
        <!-- insert the page content here -->
        <h1>Novo Registo</h1>
        <form action="#" method="post">
          <div class="form_settings">
            <p><span>Titulo
            <?php
                if ($_POST && in_array("titulo",$validacao))
                    echo "(Obrigatório)";    
            ?></span><input class="contact" type="text" name="titulo"  value="
            <?php
                    if($_POST  && (count($validacao) > 0))
                        if(!empty($_POST["titulo"]))
                            echo $_POST["titulo"];
            ?>
            " /></p>
            <p><span>Autor</span><input class="contact" type="text" name="autor" readonly="true" value="
            <?php
                echo $_SESSION["utilizador"];
            ?>" /></p>
            <p><span>Artigo
            <?php
                if ($_POST && in_array("artigo",$validacao))
                    echo "(Obrigatório)";    
            ?>            
            </span><textarea class="contact textarea" rows="20" cols="50" name="artigo">
            <?php
                    //echo $_POST["artigo"];
                    if($_POST  && (count($validacao) > 0))
                        if(!in_array("artigo",$validacao))
                            echo $_POST["artigo"];                                        
            ?>
            </textarea></textarea></p>
            <p><span>Resumo
            <?php
                if ($_POST && in_array("resumo",$validacao))
                    echo "(Obrigatório)";    
            ?>                
            </span><textarea class="contact textarea" rows="4" cols="50" name="resumo">
            <?php
                    if($_POST  && (count($validacao) > 0))
                        if(!in_array("resumo",$validacao) )
                            echo $_POST["resumo"];                                    
            ?>            
            </textarea></textarea></p>
            <p><span>Data</span><input class="contact" type="date" name="data" readonly="true" value="<?php
                date_default_timezone_set('Europe/Lisbon');
                echo date('Y-m-d');        
            ?>" /></p>
            
            <p style="padding-top: 15px"><span>&nbsp;</span><input class="submit" type="submit" name="contact_submitted" value="Adicionar" /></p>
          </div>
        </form>
      </div>
    </div>
    <div id="footer">
      Copyright &copy; textured_blue | <a href="http://validator.w3.org/check?uri=referer">HTML5</a> | <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a> | <a href="http://www.html5webtemplates.co.uk">Free CSS Templates</a>
    </div>
  </div>
  <?php
        //Uso da base de dados.
        $servername = "localhost";
        $username = "root";
        $password = "";  //campo a ser mudado consoante a password da base de dados.
        $dbname = "bdbooks";

        // Create connection
        $con = new mysqli($servername, $username, $password, $dbname);
            
        //Verifica se houve erro ao aceder à base de dados
        if ($con->connect_errno!=0){
            echo "Ocorreu um erro de ligação à base de dados.".$con->connect_errno;
            exit;
        }
        
        //Só quando não houverem elementos na $validação é que se pode avançar.
        if(($_POST) && (count($validacao) == 0)){
            
            //Inserção dos dados na base de dados.            
            //Usando antes o metodo query que usa a sintaxe mysql directamente.
            //Tratamento das variáveis para evitar problemas de injecção de SQL.
            $titulo = htmlentities(htmlspecialchars($_POST["titulo"]),ENT_QUOTES);
            $artigo = htmlentities(htmlspecialchars($_POST["artigo"]),ENT_QUOTES);
            $resumo = htmlentities(htmlspecialchars($_POST["resumo"]),ENT_QUOTES);
            //Os campos pré preenchidos
            $iduser = $_SESSION["userid"];
            $data = $_POST["data"];
                
            //Segundo construção da string para introdução dos dados SQL.
            $query = "INSERT INTO articles (artigo, data, id_users, resumo, titulo) VALUES(";
            //Introdução dos dados na string.
            $query = $query. "\"".$artigo."\",";
            $query = $query. "\"".$data."\",";
            $query = $query. "\"".$iduser."\",";
            $query = $query. "\"".$resumo."\",";
            $query = $query. "\"".$titulo."\");";

            //realização da query
            $con->query($query);

            //Depois de utilizar os dados temos que os apagar.
            unset($_POST);            
            } //Fim do if  
  ?>
    
</body>
</html>

 

Share this post


Link to post
Share on other sites

Qual o formato/tamanho do campo resumos no banco?

 

Para retirar espaços, utilize str_replace().

 

Sugiro simplificar seu INSERT, ex:

$query = "INSERT INTO articles (artigo, data, id_users, resumo, titulo) VALUES ('$artigo', $data, $iduser, '$resumo', '$titulo')";
$con->query($query);

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By adrianno
      Fala pessoal beleza?
      Tenho um problema para resolver,  tenho um sistema em PHP com MySQL, mas preciso melhorar a paginação,  tenho uma 2 lógicas de paginação em mente, uma delas é a que mais se encontra e videos, blogs, postagens  mostrando na web,
       
      onde damos um primeiro select CAMPO from TABELA, contamos  o resultado e temos o total de registros para tratar a quantidade de páginas, limite, quantidade que vai aparecer por página etc,  apos isso damos novamente o select CAMPOS from TABELA limite x, y  de acordo com o que obtivemos na lógica da paginação com a primeira SQL. esta lógica até que funciona, mas, não consegui aplicar ela usando JOIN  agrupando 2 ou mais tabelas, pois ai, eu teria  que fazer esta contagem  lá a primeira SQL, ou seja no fim, teria 2 SQL sendo executadas , uma mais rápida devido ao limit passado, mesmo assim ainda seriam 2 consultas.
      Outras lógica seria dar um SELECT count(CAMPO) from TABELA  seria uma SQL mais rápida,  mas...  se eu tiver um JOIN agrupando dados de uma tabela de categoria + produtos, eu teria que contar o resultado já agrupado das 2.
      Já pensei em executar a consulta normal, retornar o array dos dados, e depois paginar este array  com array_slice, e dividir ele de acordo com a quantidade de páginas e registros de cada.
      Já fiz paginação com JS/AJAX  mas mesmo assim, ainda preciso passar os dados totalizados, consigo uma boa visualização final na interface, mas por tras, sei que o processamento no MYSQL pesa
       
      Lembrando que em cada caso citado, cada vez que alteramos entre as páginas, é novamente executado os calculos.
       
      Alguem tem uma lógica bacana para paginação? de forma que nao fique pesado, lento em uma tabela muito grande?
       
       
       
       
       
       
       
    • By RDG
      Amigos, estou com um problema no resultado de busca somente no campo conteudo, o qual não exibe informações se não for buscado exatamente como é está no banco de dados neste caso não diferenciando letras maiúsculas de minúsculas.
      Por exemplo por "Palio" como está cadastrado o resultado é exibido, agora de buscar por "palio" não exibe nenhum resultado.
      O que notei também é se eu buscar por "alio" exibe os resultados que no caso seria do Palio.
       
      Abaixo a estrutura do Banco de Dados que utilizo para esse sistema, um detalhe que notei é que o o campo conteudo Tipo blob não aceira o Collation  latin1_swedish_ci. Alterei e salvei mas volta a ficar em branco.
       
        # Nome Tipo Agrupamento (Collation) Atributos Nulo Predefinido Comentários Extra Acções   1 id  int(10)   UNSIGNED Não None   AUTO_INCREMENT         2 idpeca int(10)   UNSIGNED Não None             3 codymax varchar(255) latin1_swedish_ci   Sim NULL             4 valor varchar(300) latin1_swedish_ci   Não None             5 montadora varchar(300) latin1_swedish_ci   Não None             6 referencia varchar(300) latin1_swedish_ci   Não None             7 conteudo blob     Não None             8 ext varchar(3) latin1_swedish_ci   Sim NULL           -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      Esta sessão está na index, que no caso aparece também na página do resultado da busca.
       
        <form action="?pg=busca" method="post" enctype="multipart/form-data">
                
                  <?php
                  $selCats = "SELECT * FROM galeria_pecas ORDER BY codymax";
                  $qrCats = mysql_query($selCats);
                      while($linhaCat = mysql_fetch_array($qrCats)){
                  ?>
                 
                  <?php
                  }
                  ?>

            </form>
       
      ---------------------------------------------------------------------------------------------------------------------
       
      A sessão abaixo está na página de resultado de buscas.
       
      <?php 
            if (isset($_POST['acao']) && $_POST['acao'] == 'buscar'){
            $idcategorias = $_POST['galeria_pecas'];
            $pesquisa = strip_tags(trim($_POST['pesquisa']));
            
            $busca = "SELECT * FROM galeria_pecas WHERE
              codymax LIKE '%$pesquisa%' 
              OR valor LIKE '%$pesquisa%' 
              OR montadora LIKE '%$pesquisa%' 
              OR referencia LIKE '%$pesquisa%' 
              OR conteudo LIKE '%$pesquisa%' AND idpeca order by idpeca ";

            $qrBusca = mysql_query($busca);
             if(mysql_num_rows($qrBusca) == '0'){
               echo '<p> Não foram encontrados resultados para sua pesquisa!</p>';
       
             }else{
                 while($linhaBusca = mysql_fetch_assoc($qrBusca)){
         ?>
    • By zinleo1
      Galera, estou sofrendo com um problema ao editar a senha do aluno, alguém saberia ajudar com o motivo do erro? Tô precisando disso pra entregar a avaliação no curso urgentemente.
       
      Pag 1: Codigos -> areadoaluno.php
      <html>      <?php        session_start();    ?>     <head>         <title>Editar registro de aluno</title>         <meta charset='utf-8'/>        </head>     <body>             <form name="areadoaluno.php" method="POST" action="alterar_senha.php">                 <fieldset>                     <legend>bem vindo,<?php echo $_SESSION['logado']."!";?></legend>                     <?php  session_destroy(); ?>                 </fieldset>                 <input type="submit" name="editarsenha" value="Editar Senha">             </form>              </body> </html> Pag 2: Codigos -> Alterar_senha.php
      <html>     <head>         <title>Editando a senha do aluno</title>         <meta charset='utf-8'/>        </head>     <body> <?php     include('conexao.php');               $cod = $_GET['id'];          echo $cod;    echo "<b>Editando sua senha! ".$cod."</b></br></br>";     $query ="SELECT * FROM aluno WHERE cod_aluno = $cod";          $result = mysqli_query($con,$query);     if ($result->num_rows > 0) {         echo "<form method='post' action='alterar_senha_conf.php'>";         while($linha = mysqli_fetch_array($result)) {             echo "<label>Login:</label><input required type='text' name='login_aluno' readonly='readonly' value='".$linha["login_aluno"]."'></input><br>";             echo "<label>Senha:</label><input type='text' name='senha_aluno' value='".$linha["senha_aluno"]."'></input><br>";                          echo "<label>Código do aluno:</label><input  type='text' name='cod_aluno' readonly='readonly' value='".$linha["cod_aluno"]."'></input><br>";             echo "<input type='submit' value='salvar'></input>";         }             echo "</form>";     } else {         echo "<b class='erro'>Sem resultados para mostrar</b><br><br>";     } ?> </body> </html> Pag 3: Codigos -> Alterar_senha_conf.php 
      <html>     <head>         <title></title>         <meta charset='utf-8'/>     </head>     <body> <?php     include('conexao.php');     $login = $_POST['login_aluno'];     $senha = $_POST['senha_aluno'];     $cod = $_POST['cod_aluno'];     echo "Login: ".$login."</br>Senha: ".$senha."</br></br>";     $adc = "UPDATE aluno SET login_aluno='$login', senha_aluno='$senha' WHERE cod_aluno='$cod'";      $ins = mysqli_query($con,$adc);     if($ins)     {     echo "<b style='color:green'>Usuário editado com sucesso!</b> </br><a href='areadoaluno.php'>Voltar</a>";     }     else     {     echo "Erro </br><a href='areadoaluno.php'>Voltar</a>";     }           ?>     </body> </html>  
    • By robertopr
      Prezados, bom dia,
       
      Por favor, uma dúvida:
      Para evitar usar o phpmyadmin, Heidi ou qualquer outro front-end, estou tentando fazer a importação de dados
      para a tabela direto pelo php.
      Já empaquei no básico, tentando usar o SQL:
      LOAD DATA LOCAL INFILE "C:/pasta/importa.txt" INTO TABLE `people` FIELDS TERMINATED BY ';' ENCLOSED BY '"' 
          LINES TERMINATED BY '\n' 
       
      Não localiza a pasta na minha máquina de jeito nenhum.
       
      Já tentei alterar as barras e aspas, mas não vai. Preciso matar esta questão para
      depois jogar no php.
       
      Obrigado.
    • By Soneca_BO
      Pessoal boa tarde,
       
      estou com um grande problema 
      Criei um código para gravar imagens no banco como mediumblob até ai blz.
      mas quando vou chamar na tela da erro na imagem, aparece uma tela preta com o iconeca da imagem em branco (um quadrado branco)

      fiz o teste em uma tabela simples, só com uma chave primaria, e ok chama normal, mas quando vou usar na tabela que devo que tem 2 chaves primarias não sei como chamar...
      se alguem poder me ajudar agradeço

      para fazer uma pesquisa nessa tabela tenho que saber o cliente que é e o código do cliente (um cliente pode ter vários códigos e cada código uma imagem diferente)
      CLI_COD (CODIGO DO CLIENTE)
      CON_COD (CODIGO DO CONTRATO)
      CON_ARQ_ID ID DO CODIGO DO ARQUIVO)
       
      segue o codigo:
       
       
      Tela que incluir os dados:
       
      <?php if(count($_FILES) > 0) { if(is_uploaded_file($_FILES['userImage']['tmp_name'])) {     require_once "db.php";     $imgData =addslashes(file_get_contents($_FILES['userImage']['tmp_name']));     $imageProperties = getimageSize($_FILES['userImage']['tmp_name']);       $sql = "UPDATE eAMS.CONTRATO SET CON_ARQ_TYPE='{$imageProperties['mime']}', CON_ARQ_CONTRATO='{$imgData}' WHERE CLI_COD='BOT' and CON_COD='005' and CON_ARQ_ID='7'";     $current_id = mysqli_query($conn, $sql) or die("<b>Error:</b> Problem on Image Insert<br/>" . mysqli_error($conn));     if(isset($current_id)) {         header("Location: listImages.php");     } } } ?> <HTML> <HEAD> <TITLE>Upload Image to MySQL BLOB</TITLE> <link href="imageStyles.css" rel="stylesheet" type="text/css" /> </HEAD> <BODY> <form name="frmImage" enctype="multipart/form-data" action="" method="post" class="frmImageUpload"> <label>Upload Image File:</label><br/> <input name="userImage" type="file" class="inputFile" /> <input type="submit" value="Submit" class="btnSubmit" /> </form> </div> </BODY> </HTML> tela que lista os dados: 
      <?php     require_once "db.php";     $sql = "SELECT CON_ARQ_ID FROM eAMS.CONTRATO where CLI_COD='BOT' ORDER BY CON_ARQ_ID DESC";      $result = mysqli_query($conn, $sql); ?> <HTML> <HEAD> <TITLE>List BLOB Images</TITLE> <link href="imageStyles.css" rel="stylesheet" type="text/css" /> </HEAD> <BODY> <?php     while($row = mysqli_fetch_array($result)) {     ?>         <img src="imageView.php?image_id=<?php echo $row["CON_ARQ_ID"]; ?>" /><br/>      <?php             }     mysqli_close($conn); ?> </BODY> </HTML> Script que chama a imagem:
       
      <?php     require_once "db.php";          if(isset($_GET['image_id'])) {         $sql ="SELECT CON_ARQ_TYPE, CON_ARQ_CONTRATO FROM eAMS.CONTRATO WHERE CON_ARQ_ID='".$_GET['image_id']."' and CLI_COD='BOT'";         $result = mysqli_query($conn, $sql) or die("<b>Error:</b> Problem on Retrieving Image BLOB<br/>" . mysqli_error($conn));         $row = mysqli_fetch_array($result);         header("Content-type: " . $row["CON_ARQ_TYPE"]);         echo $row["CON_ARQ_CONTRATO"];     }     mysqli_close($conn);  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.