2012-04-10 56 views
-1

我想我已经越来越接近理解如何将我的网站转向更多的PHP OOP方法。将PHP/MySql结果放入Javascript

我对每个用户都有不同的页面,因为他们对javascript生成的网格都有不同的需求。为了可维护性,我可以有一个页面,只需将php注入javascript中(如下所示)?标准做法是将php变量保存在MySQL中,并根据$ _SESSION ['user_id'];将它们吐出来。只是想知道我到目前为止是否在正确的道路上?

ORIGINAL GRID 
var mygrid; 

      function doInitGrid(){ 
      mygrid = new dhtmlXGridObject('gridbox'); 
      var combo=mygrid.getCombo(4); 
      combo.put(2, 'Approve/Deny'); 
      combo.put(1, 'Approve'); 
      combo.put(0, 'Deny'); 
      mygrid.setImagePath("../codebase/imgs/");   
      mygrid.setHeader("Submit Date, Manufacturer, Product Category, Progress, Approval Status",null,["text-align:center;","text-align:center;","text-align:center","text-align:center","text-align:center"]);   
      <!--mygrid.attachHeader("#text_filter,#text_filter,#text_filter");--> 
      mygrid.setInitWidthsP("10,16,44,18,12"); 
      mygrid.setColAlign("center,left,left,center,center"); 
      mygrid.enableAutoWidth(false); 
      mygrid.setColTypes("ro,ro,ro,button,coro"); 
      mygrid.setColSorting("str,str,str,str,str,str"); 
      mygrid.enableRowsHover(true,'grid_hover');    
      mygrid.setSkin("modern"); 
      mygrid.init();   
      mygrid.setStyle("font-size:11px;","font-size:11px;","font-size:11px","font-size:11px","font-size:11px"); 
      mygrid.loadXML("connector.php?hospid=<?php echo $hospid; ?>"); 
      mygrid.setColumnIds("date,man_name,group,approval_progress, approval_status");   
      var dp = new dataProcessor ("connector.php?hospid=<?php echo $hospid; ?>");  
      dp.init(mygrid);       
      dhxWins = new dhtmlXWindows(); 
      dhxWins.setImagePath("../codebase/imgs/");   
      mygrid.attachEvent("onRowSelect", function(id,ind){ 
       if (ind == 0 || ind == 1 || ind == 2 || ind == 3){ 
       dhxWins = new dhtmlXWindows(); 
       var w1 = dhxWins.createWindow("w1", 60, 60,925, 575); 
       dhxWins.setSkin("dhx_web"); 
       dhxWins.setImagePath("../codebase/imgs/"); 
       w1.centerOnScreen(); 
       w1.setText(""); 
       w1.setModal(false); 
       theVar11 = (id); 
       w1.attachURL("pop_details.php?var1=" +theVar11); 
       return true; 
       }; 
       }); 

MY IDEA FOR OOP GRID 
    var mygrid; 

       function doInitGrid(){ 
       mygrid = new dhtmlXGridObject('gridbox'); 
       var combo=mygrid.getCombo(4); 
       combo.put(2, 'Approve/Deny'); 
       combo.put(1, 'Approve'); 
       combo.put(0, 'Deny'); 
       mygrid.setImagePath("../codebase/imgs/");   
       mygrid.setHeader(<?php $MySQL_results ?>);  
       <!--mygrid.attachHeader("#text_filter,#text_filter,#text_filter");--> 
       mygrid.setInitWidthsP("<?php $MySQL_results ?>"); 
       mygrid.setColAlign("<?php $MySQL_results ?>"); 
       mygrid.enableAutoWidth(false); 
       mygrid.setColTypes("<?php $MySQL_results ?>"); 
       mygrid.setColSorting("<?php $MySQL_results ?>"); 
       mygrid.enableRowsHover(true,'grid_hover');    
       mygrid.setSkin("modern"); 
       mygrid.init();   
       mygrid.setStyle("<?php $MySQL_results ?>"); 
       mygrid.loadXML("connector.php?hospid=<?php echo $hospid; ?>"); 
       mygrid.setColumnIds("date,man_name,group,approval_progress, approval_status");   
       var dp = new dataProcessor ("connector.php?hospid=<?php echo $hospid; ?>");  
       dp.init(mygrid);       
       dhxWins = new dhtmlXWindows(); 
       dhxWins.setImagePath("../codebase/imgs/");   
       mygrid.attachEvent("onRowSelect", function(id,ind){ 
        if (ind == 0 || ind == 1 || ind == 2 || ind == 3){ 
        dhxWins = new dhtmlXWindows(); 
        var w1 = dhxWins.createWindow("w1", 60, 60,925, 575); 
        dhxWins.setSkin("dhx_web"); 
        dhxWins.setImagePath("../codebase/imgs/"); 
        w1.centerOnScreen(); 
        w1.setText(""); 
        w1.setModal(false); 
        theVar11 = (id); 
        w1.attachURL("pop_details.php?var1=" +theVar11); 
        return true; 
        }; 
        }); 
+0

空白是你的朋友。用一些空行分解代码墙;如果将它的特定部分分组在一起,它会使其更具可读性。 – Amber 2012-04-10 20:38:38

+0

'<! - '评论出JS? Ouch ... – 2012-04-10 20:44:37

+0

@Marc B谢谢指出。甚至不知道这是一个问题。我认为只要在我的编辑器上显示灰色,我很乐意去。我会看看什么更可以接受。试图尽可能快地学习。 – 2012-04-10 20:57:24

回答

3

在我看来,(和其他人可能会自由地不同意),你提出的是一个完全可行的选择。如果你不想在你的javascript中包含太多的php,你可以使用php json_encode()函数来创建一个初始的javascript对象,并使用它的属性而不是php的回声。像这样的例如:

var gridOpts = <?php echo json_encode($MySQL_results);?>; 
mygrid.setColTypes(gridOpts.colTypes); 
+0

感谢您的咨询。这可以为我作为新手程序员打开一个全新的世界。而就像我上面问,我不明白为什么有人会在放置变量之前json_encode而只是将php放在JavaScript中? – 2012-04-10 20:55:27

+0

好吧,大多数时候它只是作为一个JavaScript对象使用起来更容易,并且可以为您节省一些输入。再一次,你的方法没有任何问题,我只是提出一个替代方案。 – 2012-04-10 22:55:06

2

我看不懂的代码,它是太乱了......

但对于一般用途:

<script type="text/javascript"> 
    var js_variable = <?php echo json_encode($php_variable); ?>; 
</script> 

此方法允许您通过任何类型的PHP变量(除资源)到JS。

+0

+1。 – 2012-04-10 20:45:32

+0

对不起,乱码。我是新来的PHP和非常新的JavaScript。感谢您的建议,为什么要创建js变量首先与注入php变量到javascript?不管哪种方式都行吗? – 2012-04-10 20:53:18