[mysql]php 时循环循环内部 html 时出错

发布时间: 2017/4/9 23:37:44
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

嗨我有小项目,正是我想要从 selectbox 选择,并通过此值,这样我可以从数据库中提取数据并回显它在 html 中的预定义的格式。我能够通过选择值,也是能够从数据库中提取数据,但不是能回显它在 html 中。我从数据库获取多个值。任何解决方案吗?谢谢。 这里是我的代码︰

dashborad.php

if($param['aktion'] == 'save-widget-news')
{
    //$param['news'] 
    //UPDATE SQL...

    $page['register-news'] = array(
        1   => array( 'News','aktiv',$page['script'],'',''),
        0   => array( 'Edit News','enabled',$page['script'],''),    
    );
    $selectValue = $_POST['news'];
    if(isset($_POST['saveId']))
    {
     if(($selectValue)==4){

      $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv
FROM ad_news_texte
INNER JOIN ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news
INNER JOIN ad_news ON ad_news_oe.id_ad_news = ad_news.id
WHERE ad_news.datum_archiv
BETWEEN curdate( ) - INTERVAL DAYOFWEEK( curdate( ) ) +28
DAY AND curdate( )
";

$sql_select=mysql_query($sql);

}
 if(($selectValue)==6){

      $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv
FROM ad_news_texte
INNER JOIN ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news
INNER JOIN ad_news ON ad_news_oe.id_ad_news = ad_news.id
WHERE ad_news.datum_archiv
BETWEEN curdate( ) - INTERVAL DAYOFWEEK( curdate( ) ) +42
DAY AND curdate( )
";

$sql_select=mysql_query($sql);

}

if(($selectValue)==10){

      $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv
FROM ad_news_texte
INNER JOIN ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news
INNER JOIN ad_news ON ad_news_oe.id_ad_news = ad_news.id
WHERE ad_news.datum_archiv
BETWEEN curdate( ) - INTERVAL DAYOFWEEK( curdate( ) ) +70
DAY AND curdate( )
";

$sql_select=mysql_query($sql);

}
$html = '<table width="538" cellspacing="0" cellpadding="0" border="0">
        <tr>
            <td>
                <div>'.CreateRegister($page['register-news']).'</div>
                '.CreateMessage().'
                <div class="cont-liste-verlauf register">                       
                    <table id="news">
                    <div class="welcome-rahmen krz toggleNews" id="news_261_kurz"> ';
                    while($row = mysql_fetch_assoc($sql_select)){
                        $news = $row['headline'] . " " .$row['datum_archiv'] ; 
                        $html = '<p class="welcome-subheadline"><input type="text" name="type" value="'. $news .'" ></p>';  
                        }}                                                                                  
                    $html = '</table>                                           
                </div>
            </td>
    </tr>
    </table>';


                    $return = array(
            'status' => 1,
            'html'  => $html
        );

    echo json_encode($return);
    die();
    $param['aktion'] = 'get-widget-news';
}

if($param['aktion'] == 'get-widget-news')
{
    $newsId = 1;
    $page['register-news'] = array(
        1   => array( 'News','aktiv',$page['script'],''),
        0   => array( 'Edit-News','enabled',$page['script'],'',''), 
    );
        $param['aktion'] = 'save-widget-news';
        $html = '<table width="538" cellspacing="0" cellpadding="0" border="0" >
            <tr>
                <td>
                <div>'.CreateRegister($page['register-news']).'</div>
                '.CreateMessage().'
                <div class="cont-liste-verlauf register">               
                <table id="news">
<div class="welcome-rahmen lng toggleNews" id="news_269_kurz">
<a href="news.php?id=269" class="TrackNews" id="01" target="_blank">
<p class="welcome-breadcrump">Montag, 19.05.2014</p>
<p class="welcome-subheadline">Teilnahme von MAN Top Used an der Samoter 2014</p>
<div class="newsText">
<p class="welcome-text"><img src="http://intern.autodo.de/admin/news/man-it.jpg" width="165" class="text_fixed" border="0"></p>
<p class="welcome-text">Die 29. Internationale Erd- und Bautechnik-Ausstellung Samoter fand zwischen dem 8. und 11. Mai in Verona statt und zog rund 100.000 Besucher an. Samoter ist die wichtigste italienische Messe ihrer Art, die den Themen Erdbewegung, Hochbau und Baumaschinen gewidmet ist. Zugleich ist diese Veranstaltung damit auch f? europ?chen Markt bedeutsam.</p>
</div>
</div>
</a>

</table>
</div>
</td>
</tr>
</table>';

    $return = array(
            'status' => 1,
            'html'  => $html
        );

    echo json_encode($return);
    die();
}

dashboard.js

function saveNewsWidget()
    {
        var selectBoxValue = $('select[name="news"]').val();
        $.ajax({
        type: "POST",
        url: "ajax/dashboard.php",
        dataType : 'json',
        cache: false,
        data: {'aktion' : 'save-widget-news', 'news' : selectBoxValue},
        success: function(data)
        {
            //getNewsWidget();
            $('#news').html(data['html']);

        }
      });
  }

    function getNewsWidget()
    {
        $.ajax({
        type: "POST",
        url: "ajax/dashboard.php",
        dataType : 'json',
        cache: false,
        data: {'aktion' : 'get-widget-news'},
        success: function(data){
            //alert(data);
            $('#news').html(data['html']);
        },
        error: function(data){
            alert('error');
            //$('#news').html(data.html);
        }
      });
  }

解决方法 1:

总是试图正确设置您的代码的格式,这样读者可以理解语句/子句结束,我找到的几个问题在您的代码,这可能是你有问题的原因

  • if(isset($_POST['saveId'])) 语句体结束后 while 语句体,虽然仍有剩余的逻辑上应该如果体内执行一些代码语句

  • 你不串联的以前设置的数据的 $html 到新设置 $html 数据,因此,只有最后一位将留在变量中

这里是改变的代码,我没有测试它但我固定的两个问题,我发现并应用一些格式,这样对方就能很好的理解

if($param['aktion'] == 'save-widget-news')
{
    //$param['news'] 
    //UPDATE SQL...

    $page['register-news'] = array(
        1   => array( 'News','aktiv',$page['script'],'',''),
        0   => array( 'Edit News','enabled',$page['script'],''),    
    );
    $selectValue = $_POST['news'];
         if(($selectValue)==4)
         {

            $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv
            FROM ad_news_texte
            INNER JOIN ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news
            INNER JOIN ad_news ON ad_news_oe.id_ad_news = ad_news.id
            WHERE ad_news.datum_archiv
            BETWEEN curdate( ) - INTERVAL DAYOFWEEK( curdate( ) ) +28
            DAY AND curdate( )
            ";

            $sql_select=mysql_query($sql);
        }
        if(($selectValue)==6)
        {
            $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv
            FROM ad_news_texte
            INNER JOIN ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news
            INNER JOIN ad_news ON ad_news_oe.id_ad_news = ad_news.id
            WHERE ad_news.datum_archiv
            BETWEEN curdate( ) - INTERVAL DAYOFWEEK( curdate( ) ) +42
            DAY AND curdate( )
            ";

            $sql_select=mysql_query($sql);
        }

        if(($selectValue)==10){

            $sql=" SELECT DISTINCT ad_news_texte.headline, ad_news.datum_archiv
            FROM ad_news_texte
            INNER JOIN ad_news_oe ON ad_news_texte.news_id = ad_news_oe.id_ad_news
            INNER JOIN ad_news ON ad_news_oe.id_ad_news = ad_news.id
            WHERE ad_news.datum_archiv
            BETWEEN curdate( ) - INTERVAL DAYOFWEEK( curdate( ) ) +70
            DAY AND curdate( )
            ";

        $sql_select=mysql_query($sql);

        }

        $html = '<table width="538" cellspacing="0" cellpadding="0" border="0">
                <tr>
                    <td>
                        <div>'.CreateRegister($page['register-news']).'</div>
                        '.CreateMessage().'
                        <div class="cont-liste-verlauf register">                       
                            <table id="news">
                            <div class="welcome-rahmen krz toggleNews" id="news_261_kurz"> ';
                            while($row = mysql_fetch_assoc($sql_select)){
                                $news = $row['headline'] . " " .$row['datum_archiv'] ; 
                                $html .= '<p class="welcome-subheadline"><input type="text" name="type" value="'. $news .'" ></p>';  
                                }                                                                                 
                            $html .= '</table>                                           
                        </div>
                    </td>
            </tr>
            </table>';


                        $return = array(
                            'status' => 1,
                            'html'  => $html
                        );

        echo json_encode($return);
        die();
    $param['aktion'] = 'get-widget-news';
}
官方微信
官方QQ群
31647020