通过JQuery追加函数从mySQL追加html数据

时间:2013-09-08 23:09:27

标签: php jquery mysql

我想从MySQL数据库加载内容数据,但我有一个问题。我可以回复标题,链接和日期,但我不能写文章内容。

我的 MySQL 数据(存储在文本类型列中):

<div id="player"></div> 
    <p>21.06.2013 r. jak co roku obchodziliśmy w naszej szkole Dzień Patrona. W tym roku po raz pierwszy z tej okazji odbył się rajd rowerowy oraz pieszy urozmaicony międzyklasową rywalizacją.</p>
    <p>Każda klasa niezależnie od wybranego typu rajdu, musiała zmierzyć się z postawionymi przed nią zadaniami, do których należały: klasowy okrzyk, quiz o Norwegii, zawody pływacko-kajakowe, wykonanie zdjęcia z krową oraz zawody strzeleckie.</p>
    <p>W tym roku rywalizację wygrała klasa 3aTI. Drugie i trzecie miejsce zajęły kolejno klasy 1bLO i 3SL.</p>

    <script>
    $(document).ready(function(){
        $('#player').youTubeEmbed({
            video: 'http://www.youtube.com/watch?v=-VprJHEmmJk',
            width: 500,         // Height is calculated automatically
            progressBar: true       // Hide the progress bar
        });
    });
    </script>



JQuery 1 数据效果很好:

$("#dates").append('<li><a href="#"><?php echo date("j.m", strtotime($tresc[1])) ?></a></li>');



JQuery 2 数据不起作用:

$("#issues").append('<li id="date<?php echo $i ?>"> <h1> <a href="<?php echo $tresc[5] ?>"> <?php echo $tresc[2] ?> </a> </h1> <p> <?php echo $tresc[3]; ?> </p> </li>');

我的网站显示:

'); $("#dates").append('
21.06
'); 

而不是存储在db数据中。



当我删除

<p> <?php echo $tresc[3]; ?> </p>

其余代码效果很好。



完整的PHP文件

<h2 style="position: relative; top:-22px;">Aktualności</h2>
<div id="timeline">
    <ul id="dates">
    </ul>
    <ul id="issues">
    </ul>
    <a href="#" id="next">+</a> <!-- optional -->
    <a href="#" id="prev">-</a> <!-- optional -->
</div>

<script>
<?php
    $i = 1;
    if(isset($rok) && isset($miesiac)) 
    {
        $d1 = $rok.'-'.$miesiac.'-01';
        $d2 = $rok.'-'.$miesiac.'-31';
        $SQL = "SELECT * FROM news WHERE data >'" . $d1 . "' AND data <'" . $d2 . "' ORDER BY data DESC";
    } else {
        $SQL = "SELECT * FROM news ORDER BY data DESC LIMIT 10";
    }
    $q=mysql_query($SQL);
    $ilosc=mysql_num_rows($q);//ile jest takich stron w bazie 0 czy 1
    while( $tresc=mysql_fetch_row($q) ) 
    {
        if($tresc[7]==1) {
        ?> 
            $("#issues").append('<li id="date<?php echo $i ?>"> <h1> <a href="<?php echo $tresc[5] ?>"> <?php echo $tresc[2] ?> </a> </h1> <p> <?php echo $tresc[3]; ?> </p> </li>');
            $("#dates").append('<li><a href="#"><?php echo date("j.m", strtotime($tresc[1])) ?></a></li>');         
        <?php
            $i++;
        }
    }
    mysql_free_result($q);
?>

</script>



修改 如果我有这两行:

$("#issues").append('<li id="date<?php echo $i ?>"> <h1> <a href="<?php echo $tresc[5] ?>"> <?php echo $tresc[2] ?> </a> </h1> <p> <?php echo $tresc[3]; ?> </p> </li>');
$("#issues").append('<li id="date<?php echo $i ?>"> <h1> <a href="<?php echo $tresc[5]; ?>"> <?php echo $tresc[2]; ?> </a> </h1> <p> <?php echo $tresc[3]; ?> </p> </li>');

它显示来自mySQL的数据,但当我删除其中一个时,我只接收 ');

3 个答案:

答案 0 :(得分:1)

mysql中的字符串包含换行符,这些换行符在javascript字符串中无效。例如,以下javascript无效:

var foo = 'This is a multi
line string';

要解决此问题,请将多行html回显到&#34;模板&#34;隐藏的div,然后在jquery中将模板div移动到您需要它的位置。

例如:

<div id="dates-template" style="display:none">
    <li id="date<?php echo $i ?>">
        <h1><a href="<?php echo $tresc[5] ?>"> <?php echo $tresc[2] ?> </a></h1>
        <p> <?php echo $tresc[3]; ?> </p>
    </li>
</div>

然后在js:

$('#dates').append($('#dates-template > *'));

答案 1 :(得分:1)

看起来这是因为您的代码包含换行符。尝试使用 <?php echo json_encode($tresc[3]); ?>

答案 2 :(得分:-1)

我想

$("#issues").append('<li id="date<?php echo $i ?>"> <h1> <a href="<?php echo $tresc[5]; ?>"> <?php echo $tresc[2]; ?> </a> </h1> <p> <?php echo $tresc[3]; ?> </p> </li>');

变化

 <?php echo $tresc[3] ?>

 <?php echo $tresc[3]; ?>