使用jQuery和PHP

时间:2018-07-23 19:18:25

标签: javascript php jquery mysql datatable

我有一个页面,用户可以在HTML文本区域中输入注释。最近,用户已经在其注释中包含了要点。

这是用户在HTML文本区域中输入带有项目符号的注释的方式:

enter image description here

现在,保存注释后,这正是注释在数据库中的外观:

enter image description here

我在数据库中添加了其他列,以便清楚地看到有多个条目的注释带有项目符号。

返回数据,然后将注释显示到JQuery数据表单元格中时,注释将完全按照下图显示:

enter image description here

如果您要注意图片,则项目符号点采用段落形式,并且与最初在HTML文本区域中输入时最初的方式不同。

我需要做的是在数据表单元格中出现的每个项目符号点后面添加一个换行符,以使其看起来像最初输入的样子。

我不确定是否需要使用MySQL进行此操作,但是这是查询数据库时PHP / MySQL的外观:

<?php
include("../include/database.php"); 

$select = "SELECT pk, region, loctype, city, twenty, twenty_comm FROM eqpstatus";   
$query = mysqli_query($dbc, $select);

$out = array(); 
while($row = $query->fetch_assoc())
{
    $out[] = $row;
}
echo json_encode($out);
?>

我不确定是否有办法检查MySQL查询中的项目符号。

在jQuery方面,这是将数据表返回到页面的方式(尽可能缩短):

var newData = 'process/eqpGuide.php'; 

$('#example1').DataTable({      
"ajax": {
    "url": newData,
    "type": "POST",
    "dataSrc": ''
},
"columns": [
  {"data": "region"},
  {"data": "loctype"},
  {"data": "city"},
  {"data": "twenty"},
  {"data": "twenty_comm"} // here is where I need to check for bullet points
],
"iDisplayLength": 25,
"order": [[ 1, "desc" ]],
"paging": false,
"scrollY": 550,
"scrollX": true,
"bDestroy": true,
"stateSave": true,
"autoWidth": true 
});   

因此,要重申我提到的所有内容,我需要做的一切都与数据库的二十个_comm部分有关,那就是在每个要点之后添加一个换行符。我不确定是应该还是可以在代码的PHP / MySQL部分中完成此操作,或者是否可以在数据表中的JQuery方面完成此操作。

以疑问形式提出:如何在PHP / MySQL或jQuery中的项目符号点后添加换行符?

3 个答案:

答案 0 :(得分:2)

您也许可以尝试在preg_split()列中使用twenty_comm并添加一个<br />字符,但不知道它将如何呈现:

$row['twenty_comm'] = addNewLine($row['twenty_comm']); 

function addNewLine($string){
   $newString = '';
   $split= preg_split("/[;,]+/",$string);
   foreach($split as $char){
        $newString.=$char.'<br />'; 
   }
      return $newString;
}

答案 1 :(得分:2)

我猜你的意思是想在项目符号前 处添加换行符,并在其后添加空白?除了下一个项目符号之前,不可能知道之后是什么。您可以使用列render回调:

{ data: 'twenty_comm' ,
  render: function(data) {
     return data
       .replace(/•/g,'•&nbsp;&nbsp;')
       .replace(/(?!^)(•)/g, '<br>\$1')
  }
}

第一个正则表达式只是用项目符号和两个白点代替项目符号(或中点)。接下来是否定超前行为,在第一个项目符号之前插入<br>,但第一次出现除外。

请参见 http://jsfiddle.net/cj6nk8yz/

答案 2 :(得分:2)

已编辑

我认为最好的办法是在用户提交文本时添加新行...在保存到数据库之前。但这是一种看法。

第二个最好的事情是在服务器端执行字符串操作,因为依靠客户端设备(我删除的最小的最佳解决方案...)来完成在服务器上可行的操作是被认为是不良做法。

尝试一下:

<?php
include("../include/database.php"); 

$select = "SELECT pk, region, loctype, city, twenty, twenty_comm FROM eqpstatus";   
$query = mysqli_query($dbc, $select);

$out = array(); 
while($row = $query->fetch_assoc())
{
    $row['twenty_comm'] = implode("<br>•",explode("•",$row['twenty_comm']));
    if(substr($row['twenty_comm'],0,4)=="<br>"){
        $row['twenty_comm'] = substr($row['twenty_comm'],4);
    }

    $out[] = $row;
}
echo json_encode($out);
?>