We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 49302
    • 14 Posts
    Hi,

    I'm trying to retrieve data from two custom db tables with a one to one relationship and merge it as an array to display in a chunk (the chunk displays data from the db in a table). The class names for the two tables are 'Results and Colleagues'. When I try to do this I get a blank page. I tried using joins but it still did not display anything.
    My code and xml schema file is pasted below;

    Snippet code
    <?php
    $path = MODX_CORE_PATH . 'components/grades/';
    
    $username = $modx->user->get('username');
    $result = $modx->addPackage('grades',$path .
        'model/','grade_');
     
    if (! $result) {
        return 'failed to add package';
    } else {
        $output = '<p>added Package</p>';
    }
    $collection= $xpdo->getCollectionGraph('Results', '{"Colleagues":{}}', array(array('Results.username'=> $username),array('AND:Colleagues.username'=> $username));
    foreach ($collection as $obj)
    {
    	foreach ($obj->Colleagues as $coll) {
                    $grade = $coll->toArray();
    				$grade['Colleagues.BX1'] = $coll->Colleagues->get('BX1');
    				$grade['Results.X1'] = $coll->Results->get('X1');
    				$output .= $modx->getChunk('ShowResults', $grade);
                    
            }
       
    }
    return $output;
    ?>


    Schema file
    <?xml version="1.0" encoding="UTF-8"?>
    <model package="grades" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" version="1.1">
    	<object class="Colleagues" table="colleagues" extends="xPDOSimpleObject">
    		<field key="id" dbtype="int" precision="25" attributes="unsigned" phptype="integer" null="false" index="pk"  generated="native" />
    		<field key="username" dbtype="varchar" precision="50" phptype="string" null="false" default="" />
    		<field key="email2" dbtype="varchar" precision="20" phptype="string" null="false" default="" />
    		<field key="BX1" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BX2" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BX3" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BX4" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BX5" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BX6" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BX7" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BY8" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BY9" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BY10" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BY11" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BY12" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BY13" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BY14" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BY15" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BZ16" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BZ17" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BZ18" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BZ19" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="BZ20" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="gradeDate" dbtype="timestamp" phptype="timestamp" null="false" default="CURRENT_TIMESTAMP" />
    		<index alias="PRIMARY" name="PRIMARY" primary="true" unique="true" type="BTREE" >
    			<column key="id" length="" collation="A" null="false" />
    		</index>
    		<aggregate alias="Results" class="Results" local="id" foreign="id" cardinality="one" owner="foreign" />
    	</object>
    	<object class="Emails" table="emails" extends="xPDOObject">
    		<field key="Email_id" dbtype="int" precision="25" attributes="unsigned" phptype="integer" null="false" index="pk"  generated="native" />
    		<field key="email1" dbtype="varchar" precision="20" phptype="string" null="true" />
    		<field key="email2" dbtype="varchar" precision="20" phptype="string" null="true" />
    		<field key="email3" dbtype="varchar" precision="20" phptype="string" null="true" />
    		<field key="email4" dbtype="varchar" precision="20" phptype="string" null="true" />
    		<field key="email5" dbtype="varchar" precision="20" phptype="string" null="true" />
    		<field key="email6" dbtype="varchar" precision="20" phptype="string" null="true" />
    		<field key="email7" dbtype="varchar" precision="20" phptype="string" null="true" />
    		<field key="email8" dbtype="varchar" precision="20" phptype="string" null="true" />
    		<field key="gradeDate" dbtype="timestamp" phptype="timestamp" null="false" default="CURRENT_TIMESTAMP" />
    		<field key="id" dbtype="int" precision="25" attributes="unsigned" phptype="integer" null="false" index="index" />
    
    		<index alias="PRIMARY" name="PRIMARY" primary="true" unique="true" type="BTREE" >
    			<column key="Email_id" length="" collation="A" null="false" />
    		</index>
    		<index alias="id" name="id" primary="false" unique="false" type="BTREE" >
    			<column key="id" length="" collation="A" null="false" />
    		</index>
    		<!--<composite alias="Result" class="Results" local="Email_id" foreign="id" cardinality="many" owner="local" />
    		<composite alias="Colleague" class="Colleagues" local="Email_id" foreign="id" cardinality="many" owner="local" />-->
    	</object>
    	
    	<object class="Results" table="results" extends="xPDOSimpleObject">
    		<field key="id" dbtype="int" precision="25" attributes="unsigned" phptype="integer" null="false" index="pk"  generated="native" />
    		<field key="username" dbtype="varchar" precision="50" phptype="string" null="false" default="" />
    		<field key="email1" dbtype="varchar" precision="20" phptype="string" null="false" default="" />
    		<field key="X1" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="X2" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="X3" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="X4" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="X5" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="X6" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="X7" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Y8" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Y9" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Y10" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Y11" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Y12" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Y13" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Y14" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Y15" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Z16" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Z17" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Z18" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Z19" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="Z20" dbtype="int" precision="25" phptype="integer" null="false" />
    		<field key="gradeDate" dbtype="timestamp" phptype="timestamp" null="false" default="CURRENT_TIMESTAMP" />
    		<index alias="PRIMARY" name="PRIMARY" primary="true" unique="true" type="BTREE" >
    			<column key="id" length="" collation="A" null="false" />
    		</index>
    		
    		<composite alias="Colleagues" class="Colleagues" local="id" foreign="id" cardinality="one" owner="local" />
    	</object>
    </model>
      • 4172
      • 5,888 Posts
      seems there are some mistakes.
      $xpdo->getCollectionGraph


      can't see, where you have $xpdo defined.
      use
      $modx->getCollectionGraph


      you have some
      <field key="id"


      in xPDOSimpleObjects, you don't need them, xPDOSimpleObject does add them automatically.
      the same with
              <index alias="PRIMARY" name="PRIMARY" primary="true" unique="true" type="BTREE" >
                  <column key="id" length="" collation="A" null="false" />
              </index>


      I would start with a simple getCollection
      then adding a join

      before playing with getCollectionGraph








        -------------------------------

        you can buy me a beer, if you like MIGX

        http://webcmsolutions.de/migx.html

        Thanks!
        • 49302
        • 14 Posts
        Quote from: Bruno17 at Nov 19, 2014, 07:57 AM
        seems there are some mistakes.
        $xpdo->getCollectionGraph


        can't see, where you have $xpdo defined.
        use
        $modx->getCollectionGraph


        you have some
        <field key="id" [="" code]="" in="" xpdosimpleobjects,="" you="" don't="" need="" them,="" xpdosimpleobject="" does="" add="" them="" automatically.="" the="" same="" with="" ="" <index="" alias="PRIMARY" name="PRIMARY" primary="true" unique="true" type="BTREE">
        <column key="id" length="" collation="A" null="false">
        I would start with a simple getCollection then adding a join before playing with getCollectionGraph </column></field>[/quote] Thanks, I have made the corrections on the schema file. I also have a get collection and a join script stated below. The script only outputs data from one table with classname(Results) and it doesn't output any data for 'Colleagues'. Please do you know how I can display data for 'Colleagues' as well.
        <?php
        $path = MODX_CORE_PATH . 'components/grades/';

        $username = $modx->user->get('username');
        $result = $modx->addPackage('grades',$path .
        'model/','grade_');

        if (! $result) {
        return 'failed to add package';
        } else {
        $output = '<p>added Package</p>';
        }
        $query = $modx->newQuery('Results');
        $query->rightJoin('Colleagues','Colleagues','Colleagues.username = Results.username' );
        $query->where(array('Results.username'=> $username));
        $query->andCondition(array('Colleagues.username' =>$username));
        $grades = $modx->getCollection('Results',$query);

        $output .= '<p>Total: '. count($grades) . '</p>';
        foreach($grades as $grade) {
        $fields = $grade->toArray();
        $output .= $modx->getChunk('ShowResults', $fields);
        }



        return $output;
          • 49302
          • 14 Posts
          Quote from: Bruno17 at Nov 19, 2014, 07:57 AM
          seems there are some mistakes.
          $xpdo->getCollectionGraph


          can't see, where you have $xpdo defined.
          use
          $modx->getCollectionGraph


          you have some
          <field key="id" [="" code]="" in="" xpdosimpleobjects,="" you="" don't="" need="" them,="" xpdosimpleobject="" does="" add="" them="" automatically.="" the="" same="" with="" ="" <index="" alias="PRIMARY" name="PRIMARY" primary="true" unique="true" type="BTREE">
          <column key="id" length="" collation="A" null="false">
          I would start with a simple getCollection then adding a join before playing with getCollectionGraph </column></field>[/quote] Thanks, I have made the corrections on the schema file. I also have a get collection and a join script stated below. The script only outputs data from one table with classname(Results) and it doesn't output any data for 'Colleagues'. Please do you know how I can display data for 'Colleagues' as well.
          <?php
          $path = MODX_CORE_PATH . 'components/grades/';

          $username = $modx->user->get('username');
          $result = $modx->addPackage('grades',$path .
          'model/','grade_');

          if (! $result) {
          return 'failed to add package';
          } else {
          $output = '<p>added Package</p>';
          }
          $query = $modx->newQuery('Results');
          $query->rightJoin('Colleagues','Colleagues','Colleagues.username = Results.username' );
          $query->where(array('Results.username'=> $username));
          $query->andCondition(array('Colleagues.username' =>$username));
          $grades = $modx->getCollection('Results',$query);

          $output .= '<p>Total: '. count($grades) . '</p>';
          foreach($grades as $grade) {
          $fields = $grade->toArray();
          $output .= $modx->getChunk('ShowResults', $fields);
          }



          return $output;
            • 49302
            • 14 Posts
            Quote from: Bruno17 at Nov 19, 2014, 07:57 AM
            seems there are some mistakes.
            $xpdo->getCollectionGraph


            can't see, where you have $xpdo defined.
            use
            $modx->getCollectionGraph


            you have some
            <field key="id" [="" code]="" in="" xpdosimpleobjects,="" you="" don't="" need="" them,="" xpdosimpleobject="" does="" add="" them="" automatically.="" the="" same="" with="" ="" <index="" alias="PRIMARY" name="PRIMARY" primary="true" unique="true" type="BTREE">
            <column key="id" length="" collation="A" null="false">
            I would start with a simple getCollection then adding a join before playing with getCollectionGraph </column></field>[/quote] Thanks, I have made the corrections on the schema file. I also have a get collection and a join script stated below. The script only outputs data from one table with classname(Results) and it doesn't output any data for 'Colleagues'. Please do you know how I can display data for 'Colleagues' as well.
            <?php
            $path = MODX_CORE_PATH . 'components/grades/';

            $username = $modx->user->get('username');
            $result = $modx->addPackage('grades',$path .
            'model/','grade_');

            if (! $result) {
            return 'failed to add package';
            } else {
            $output = '<p>added Package</p>';
            }
            $query = $modx->newQuery('Results');
            $query->rightJoin('Colleagues','Colleagues','Colleagues.username = Results.username' );
            $query->where(array('Results.username'=> $username));
            $query->andCondition(array('Colleagues.username' =>$username));
            $grades = $modx->getCollection('Results',$query);

            $output .= '<p>Total: '. count($grades) . '</p>';
            foreach($grades as $grade) {
            $fields = $grade->toArray();
            $output .= $modx->getChunk('ShowResults', $fields);
            }



            return $output;
              • 49302
              • 14 Posts
              Hi, thanks, it works now. I added a select query

              <?php
              $path = MODX_CORE_PATH . 'components/grades/';
              
              $username = $modx->user->get('username');
              $result = $modx->addPackage('grades',$path .
                  'model/','grade_');
               
              if (! $result) {
                  return 'failed to add package';
              } else {
                  $output = '<p>added Package</p>';
              }
              $query = $modx->newQuery('Results');
              $query->innerJoin('Colleagues','Colleagues','Colleagues.username = Results.username' );
              $query->where(array('Results.username'=> $username, 'Colleagues.username' =>$username));
              //$query->andCondition(array('Colleagues.username' =>$username));
              $query->select(array('Results.*','Colleagues.*'));
              
              $grades = $modx->getCollection('Results',$query);
              
              $output .= '<p>Total: '. count($grades) . '</p>';
              foreach($grades as $grade) {
              $fields = $grade->toArray();
              $output .= $modx->getChunk('ShowResults', $fields);
              }
              
              
               
              return $output;
                • 3749
                • 24,544 Posts
                If you have a proper alias that connects Colleagues with Results, you can skip all the joins and the select and do something like this (off the top of my head -- untested):

                $criteria = $modx->newQuery('Results');
                $criteria->where(array(
                    'Colleagues.username' => $username,
                    'Colleagues.username' => 'Results.username',
                ));
                
                $grades = $this->modx->getCollectionGraph('Results', '{"Colleagues":{} }', $criteria);
                
                foreach($grades as $grade) {
                    $fields = $grade->toArray();
                    $fields = array_merge($grade->Colleagues->toArray(), $fields);
                
                    $output .= $modx->getChunk('ShowResults', $fields);
                
                }

                [ed. note: BobRay last edited this post 11 years, 10 months ago.]
                  Did I help you? Buy me a beer
                  Get my Book: MODX:The Official Guide
                  MODX info for everyone: http://bobsguides.com/modx.html
                  My MODX Extras
                  Bob's Guides is now hosted at A2 MODX Hosting
                  • 49302
                  • 14 Posts
                  Hi,

                  thanks for your response on how to use collection graph, I have another issue. When I use the code below to fetch data for some users, if some of the users do not have a record on either "Results" or "Colleagues" table, nothing is passed to the "ShowResults chunk" which is a template displaying a table with place holders.

                  I want the snippet to be able to display data on the chunk irrespective of how many tables in the database have values in them. the snippet and chunk code is stated below

                  Code for the snippet
                  <?php
                  $path = MODX_CORE_PATH . 'components/grades/';
                   
                  $username = $modx->user->get('username');
                  $result = $modx->addPackage('grades',$path .
                      'model/','grade_');
                    
                  if (! $result) {
                      return 'failed to add package';
                  } else {
                      $output = '<p>added Package</p>';
                  }
                  $query = $modx->newQuery('Results');
                  $query->innerJoin('Colleagues','Colleagues','Colleagues.username = Results.username' );
                  $query->innerJoin('Results3','Results3','Results3.username = Results.username' );
                  $query->innerJoin('Results4','Results4','Results4.username = Results.username' );
                  $query->innerJoin('Results5','Results5','Results5.username = Results.username' );
                  $query->innerJoin('Results6','Results6','Results6.username = Results.username' );
                  $query->innerJoin('Results7','Results7','Results7.username = Results.username' );
                  $query->innerJoin('Results8','Results8','Results8.username = Results.username' );
                  $query->innerJoin('Results9','Results9','Results9.username = Results.username' );
                  $query->innerJoin('Results10','Results10','Results10.username = Results.username' );
                  $query->innerJoin('Results11','Results11','Results11.username = Results.username' );
                  $query->innerJoin('Results12','Results12','Results12.username = Results.username' );
                  $query->innerJoin('Results13','Results13','Results13.username = Results.username' );
                  $query->innerJoin('Results14','Results14','Results14.username = Results.username' );
                  $query->innerJoin('Results15','Results15','Results15.username = Results.username' );
                  $query->innerJoin('Results16','Results16','Results16.username = Results.username' );
                  $query->where(array(
                  					'Results.username'=> $username,
                  					'Colleagues.username' =>$username,
                  					'Results3.username' =>$username,
                  					'Results4.username' =>$username,
                  					'Results5.username' =>$username,
                  					'Results6.username' =>$username,
                  					'Results7.username' =>$username,
                  					'Results8.username' =>$username,
                  					'Results9.username' =>$username,
                  					'Results10.username' =>$username,
                  					'Results11.username' =>$username,
                  					'Results12.username' =>$username,
                  					'Results13.username' =>$username,
                  					'Results14.username' =>$username,
                  					'Results15.username' =>$username,
                  					'Results16.username' =>$username
                  					));
                  //$query->andCondition(array('Colleagues.username' =>$username));
                  $query->select(array('Results.*','Colleagues.*', 'Results3.*', 'Results4.*', 'Results5.*', 'Results6.*', 'Results7.*', 'Results8.*', 'Results9.*', 'Results10.*', 'Results11.*', 'Results12.*', 'Results13.*', 'Results14.*', 'Results15.*', 'Results16.*'));
                   
                  $grades = $modx->getCollection('Results',$query);
                   
                  $output .= '<p>Total: '. count($grades) . '</p>';
                  foreach($grades as $grade) {
                  $fields = $grade->toArray();
                  $output .= $modx->getChunk('ShowResults', $fields);
                  }
                   
                   
                    
                  return $output;


                  Chunk to display data and graph
                  <p class="Results">
                  <html>
                  
                  <head>
                  <style>
                  table, th, td {
                      border: 1px solid black;
                      border-collapse: collapse;
                  }
                  th, td {
                      padding: 5px;
                      text-align: left;    
                  }
                  </style>
                  </head>
                  
                  <body>
                  
                  <h2>Questionnaire Results</h2>
                  <table style="width:100%">
                    <tr>
                  <th></th>
                  <th></th>
                      <th colspan="11">Round1</th>
                      <th></th>
                  
                  <th colspan="10">Round2</th>
                    </tr>
                    <tr>
                  <th></th>
                  <th></th>
                      <th>Self</th>
                  <th colspan="10">Colleague Evaluation</th>
                      
                  <th></th>
                  
                  <th colspan="10">Colleague Evaluation</th>
                    </tr>
                  
                    <tr>
                  <th></th>
                  <th></th>
                        <th></th>
                      <th>A</th>
                  <th>B</th>
                  <th>C</th>
                  <th>D</th>
                  <th>E</th>
                  <th>F</th>
                  <th>G</th>
                  <th>H</th>
                  <th>Total</th>
                  <th>Average</th>
                  <th></th>
                  <th>J</th>
                  <th>K</th>
                  <th>L</th>
                  <th>M</th>
                  <th>N</th>
                  <th>O</th>
                  <th>P</th>
                  <th>Q</th>
                  <th>Total</th>
                  <th>Average</th>
                    </tr>
                  
                  <tr>
                  <td>X1</td>
                  <td>How well do I establish positive working relationships with colleagues?</td>
                  <td>[[+SX1]]</td>
                  <td>[[+X1]]</td>
                  <td>[[+BX1]]</td>
                  <td>[[+CX1]]</td>
                  <td>[[+DX1]]</td>
                  <td>[[+EX1]]</td>
                  <td>[[+FX1]]</td>
                  <td>[[+GX1]]</td>
                  <td>[[+HX1]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JX1]]</td>
                  <td>[[+KX1]]</td>
                  <td>[[+LX1]]</td>
                  <td>[[+MX1]]</td>
                  <td>[[+NX1]]</td>
                  <td>[[+OX1]]</td>
                  <td>[[+PX1]]</td>
                  <td>[[+QX1]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                  
                  <tr>
                  <td>X2</td>
                  <td>How often do I use praise?</td>
                  <td>[[+SX2]]</td>
                  <td>[[+X2]]</td>
                  <td>[[+BX2]]</td>
                  <td>[[+CX2]]</td>
                  <td>[[+DX2]]</td>
                  <td>[[+EX2]]</td>
                  <td>[[+FX2]]</td>
                  <td>[[+GX2]]</td>
                  <td>[[+HX2]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JX2]]</td>
                  <td>[[+KX2]]</td>
                  <td>[[+LX2]]</td>
                  <td>[[+MX2]]</td>
                  <td>[[+NX2]]</td>
                  <td>[[+OX2]]</td>
                  <td>[[+PX2]]</td>
                  <td>[[+QX2]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                  
                  <tr>
                  <td>X3</td>
                  <td>How well do I communicate what I think and want?</td>
                  <td>[[+SX3]]</td>
                  <td>[[+X3]]</td>
                  <td>[[+BX3]]</td>
                  <td>[[+CX3]]</td>
                  <td>[[+DX3]]</td>
                  <td>[[+EX3]]</td>
                  <td>[[+FX3]]</td>
                  <td>[[+GX3]]</td>
                  <td>[[+HX3]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JX3]]</td>
                  <td>[[+KX3]]</td>
                  <td>[[+LX3]]</td>
                  <td>[[+MX3]]</td>
                  <td>[[+NX3]]</td>
                  <td>[[+OX3]]</td>
                  <td>[[+PX3]]</td>
                  <td>[[+QX3]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                  
                  <tr>
                  <td>X4</td>
                  <td>Am I open and honest?</td>
                  <td>[[+SX4]]</td>
                  <td>[[+X4]]</td>
                  <td>[[+BX4]]</td>
                  <td>[[+CX4]]</td>
                  <td>[[+DX4]]</td>
                  <td>[[+EX4]]</td>
                  <td>[[+FX4]]</td>
                  <td>[[+GX4]]</td>
                  <td>[[+HX4]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JX4]]</td>
                  <td>[[+KX4]]</td>
                  <td>[[+LX4]]</td>
                  <td>[[+MX4]]</td>
                  <td>[[+NX4]]</td>
                  <td>[[+OX4]]</td>
                  <td>[[+PX4]]</td>
                  <td>[[+QX4]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                  
                  <tr>
                  <td>X5</td>
                  <td>Grade me on my concern for colleagues</td>
                  <td>[[+SX5]]</td>
                  <td>[[+X5]]</td>
                  <td>[[+BX5]]</td>
                  <td>[[+CX5]]</td>
                  <td>[[+DX5]]</td>
                  <td>[[+EX5]]</td>
                  <td>[[+FX5]]</td>
                  <td>[[+GX5]]</td>
                  <td>[[+HX5]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JX5]]</td>
                  <td>[[+KX5]]</td>
                  <td>[[+LX5]]</td>
                  <td>[[+MX5]]</td>
                  <td>[[+NX5]]</td>
                  <td>[[+OX5]]</td>
                  <td>[[+PX5]]</td>
                  <td>[[+QX5]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                  
                  <tr>
                  <td>X6</td>
                  <td>Grade me on my concern for the quality of SystmOne and TPP</td>
                  <td>[[+SX6]]</td>
                  <td>[[+X6]]</td>
                  <td>[[+BX6]]</td>
                  <td>[[+CX6]]</td>
                  <td>[[+DX6]]</td>
                  <td>[[+EX6]]</td>
                  <td>[[+FX6]]</td>
                  <td>[[+GX6]]</td>
                  <td>[[+HX6]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JX6]]</td>
                  <td>[[+KX6]]</td>
                  <td>[[+LX6]]</td>
                  <td>[[+MX6]]</td>
                  <td>[[+NX6]]</td>
                  <td>[[+OX6]]</td>
                  <td>[[+PX6]]</td>
                  <td>[[+QX6]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                  
                  <tr>
                  <td>X7</td>
                  <td>Grade me on my personal attitude</td>
                  <td>[[+SX7]]</td>
                  <td>[[+X7]]</td>
                  <td>[[+BX7]]</td>
                  <td>[[+CX7]]</td>
                  <td>[[+DX7]]</td>
                  <td>[[+EX7]]</td>
                  <td>[[+FX7]]</td>
                  <td>[[+GX7]]</td>
                  <td>[[+HX7]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JX7]]</td>
                  <td>[[+KX7]]</td>
                  <td>[[+LX7]]</td>
                  <td>[[+MX7]]</td>
                  <td>[[+NX7]]</td>
                  <td>[[+OX7]]</td>
                  <td>[[+PX7]]</td>
                  <td>[[+QX7]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                  
                  <tr>
                  <td>Y8</td>
                  <td>Grade me on how open I am to criticism</td>
                  <td>[[+SY8]]</td>
                  <td>[[+Y8]]</td>
                  <td>[[+BY8]]</td>
                  <td>[[+CY8]]</td>
                  <td>[[+DY8]]</td>
                  <td>[[+EY8]]</td>
                  <td>[[+FY8]]</td>
                  <td>[[+GY8]]</td>
                  <td>[[+HY8]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JY8]]</td>
                  <td>[[+KY8]]</td>
                  <td>[[+LY8]]</td>
                  <td>[[+MY8]]</td>
                  <td>[[+NY8]]</td>
                  <td>[[+OY8]]</td>
                  <td>[[+PY8]]</td>
                  <td>[[+QY8]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                  
                  <tr>
                  <td>Y9</td>
                  <td>Do I speak up when things go wrong or when I have a solution to a problem?</td>
                  <td>[[+SY9]]</td>
                  <td>[[+Y9]]</td>
                  <td>[[+BY9]]</td>
                  <td>[[+CY9]]</td>
                  <td>[[+DY9]]</td>
                  <td>[[+EY9]]</td>
                  <td>[[+FY9]]</td>
                  <td>[[+GY9]]</td>
                  <td>[[+HY9]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JY9]]</td>
                  <td>[[+KY9]]</td>
                  <td>[[+LY9]]</td>
                  <td>[[+MY9]]</td>
                  <td>[[+NY9]]</td>
                  <td>[[+OY9]]</td>
                  <td>[[+PY9]]</td>
                  <td>[[+QY9]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                  
                  <tr>
                  <td>Y10</td>
                  <td>Do I speak up in group situations?</td>
                  <td>[[+SY10]]</td>
                  <td>[[+Y10]]</td>
                  <td>[[+BY10]]</td>
                  <td>[[+CY10]]</td>
                  <td>[[+DY10]]</td>
                  <td>[[+EY10]]</td>
                  <td>[[+FY10]]</td>
                  <td>[[+GY10]]</td>
                  <td>[[+HY10]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JY10]]</td>
                  <td>[[+KY10]]</td>
                  <td>[[+LY10]]</td>
                  <td>[[+MY10]]</td>
                  <td>[[+NY10]]</td>
                  <td>[[+OY10]]</td>
                  <td>[[+PY10]]</td>
                  <td>[[+QY10]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                  
                  <tr>
                  <td>Y11</td>
                  <td>Do I ask questions when I am uncertain?</td>
                  <td>[[+SY11]]</td>
                  <td>[[+Y11]]</td>
                  <td>[[+BY11]]</td>
                  <td>[[+CY11]]</td>
                  <td>[[+DY11]]</td>
                  <td>[[+EY11]]</td>
                  <td>[[+FY11]]</td>
                  <td>[[+GY11]]</td>
                  <td>[[+HY11]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JY11]]</td>
                  <td>[[+KY11]]</td>
                  <td>[[+LY11]]</td>
                  <td>[[+MY11]]</td>
                  <td>[[+NY11]]</td>
                  <td>[[+OY11]]</td>
                  <td>[[+PY11]]</td>
                  <td>[[+QY11]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                  
                  <tr>
                  <td>Y12</td>
                  <td>Do I feedback enough?</td>
                  <td>[[+SY12]]</td>
                  <td>[[+Y12]]</td>
                  <td>[[+BY12]]</td>
                  <td>[[+CY12]]</td>
                  <td>[[+DY12]]</td>
                  <td>[[+EY12]]</td>
                  <td>[[+FY12]]</td>
                  <td>[[+GY12]]</td>
                  <td>[[+HY12]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JY12]]</td>
                  <td>[[+KY12]]</td>
                  <td>[[+LY12]]</td>
                  <td>[[+MY12]]</td>
                  <td>[[+NY12]]</td>
                  <td>[[+OY12]]</td>
                  <td>[[+PY12]]</td>
                  <td>[[+QY12]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                  
                    <tr>
                  <td>Y13</td>
                  <td>Do I stand up to others?</td>
                  <td>[[+SY13]]</td>
                  <td>[[+Y13]]</td>
                  <td>[[+BY13]]</td>
                  <td>[[+CY13]]</td>
                  <td>[[+DY13]]</td>
                  <td>[[+EY13]]</td>
                  <td>[[+FY13]]</td>
                  <td>[[+GY13]]</td>
                  <td>[[+HY13]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JY13]]</td>
                  <td>[[+KY13]]</td>
                  <td>[[+LY13]]</td>
                  <td>[[+MY13]]</td>
                  <td>[[+NY13]]</td>
                  <td>[[+OY13]]</td>
                  <td>[[+PY13]]</td>
                  <td>[[+QY13]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                    
                      <tr>
                  <td>Y14</td>
                  <td>Do I stay calm under pressure?</td>
                  <td>[[+SY14]]</td>
                  <td>[[+Y14]]</td>
                  <td>[[+BY14]]</td>
                  <td>[[+CY14]]</td>
                  <td>[[+DY14]]</td>
                  <td>[[+EY14]]</td>
                  <td>[[+FY14]]</td>
                  <td>[[+GY14]]</td>
                  <td>[[+HY14]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JY14]]</td>
                  <td>[[+KY14]]</td>
                  <td>[[+LY14]]</td>
                  <td>[[+MY14]]</td>
                  <td>[[+NY14]]</td>
                  <td>[[+OY14]]</td>
                  <td>[[+PY14]]</td>
                  <td>[[+QY14]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                    
                   
                         <tr>
                  <td>Y15</td>
                  <td>Am I assertive</td>
                  <td>[[+SY15]]</td>
                  <td>[[+Y15]]</td>
                  <td>[[+BY15]]</td>
                  <td>[[+CY15]]</td>
                  <td>[[+DY15]]</td>
                  <td>[[+EY15]]</td>
                  <td>[[+FY15]]</td>
                  <td>[[+GY15]]</td>
                  <td>[[+HY15]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JY15]]</td>
                  <td>[[+KY15]]</td>
                  <td>[[+LY15]]</td>
                  <td>[[+MY15]]</td>
                  <td>[[+NY15]]</td>
                  <td>[[+OY15]]</td>
                  <td>[[+PY15]]</td>
                  <td>[[+QY15]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                    
                         <tr>
                  <td>Z16</td>
                  <td>Do I take on responsibility?</td>
                  <td>[[+SZ16]]</td>
                  <td>[[+Z16]]</td>
                  <td>[[+BZ16]]</td>
                  <td>[[+CZ16]]</td>
                  <td>[[+DZ16]]</td>
                  <td>[[+EZ16]]</td>
                  <td>[[+FZ16]]</td>
                  <td>[[+GZ16]]</td>
                  <td>[[+HZ16]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JZ16]]</td>
                  <td>[[+KZ16]]</td>
                  <td>[[+LZ16]]</td>
                  <td>[[+MZ16]]</td>
                  <td>[[+NZ16]]</td>
                  <td>[[+OZ16]]</td>
                  <td>[[+PZ16]]</td>
                  <td>[[+QZ16]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                    
                         <tr>
                  <td>Z17</td>
                  <td>Am I willing to take on new challenges?</td>
                  <td>[[+SZ17]]</td>
                  <td>[[+Z17]]</td>
                  <td>[[+BZ17]]</td>
                  <td>[[+CZ17]]</td>
                  <td>[[+DZ17]]</td>
                  <td>[[+EZ17]]</td>
                  <td>[[+FZ17]]</td>
                  <td>[[+GZ17]]</td>
                  <td>[[+HZ17]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JZ17]]</td>
                  <td>[[+KZ17]]</td>
                  <td>[[+LZ17]]</td>
                  <td>[[+MZ17]]</td>
                  <td>[[+NZ17]]</td>
                  <td>[[+OZ17]]</td>
                  <td>[[+PZ17]]</td>
                  <td>[[+QZ17]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                    
                         <tr>
                  <td>Z18</td>
                  <td>Do I demonstrate a high level of commitment to the quality of my work and my pursuit of excellence?</td>
                  <td>[[+SZ18]]</td>
                  <td>[[+Z18]]</td>
                  <td>[[+BZ18]]</td>
                  <td>[[+CZ18]]</td>
                  <td>[[+DZ18]]</td>
                  <td>[[+EZ18]]</td>
                  <td>[[+FZ18]]</td>
                  <td>[[+GZ18]]</td>
                  <td>[[+HZ18]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JZ18]]</td>
                  <td>[[+KZ18]]</td>
                  <td>[[+LZ18]]</td>
                  <td>[[+MZ18]]</td>
                  <td>[[+NZ18]]</td>
                  <td>[[+OZ18]]</td>
                  <td>[[+PZ18]]</td>
                  <td>[[+QZ18]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                    
                         <tr>
                  <td>Z19</td>
                  <td>Grade me on my ability to conduct myself professionally</td>
                  <td>[[+SZ19]]</td>
                  <td>[[+Z19]]</td>
                  <td>[[+BZ19]]</td>
                  <td>[[+CZ19]]</td>
                  <td>[[+DZ19]]</td>
                  <td>[[+EZ19]]</td>
                  <td>[[+FZ19]]</td>
                  <td>[[+GZ19]]</td>
                  <td>[[+HZ19]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JZ19]]</td>
                  <td>[[+KZ19]]</td>
                  <td>[[+LZ19]]</td>
                  <td>[[+MZ19]]</td>
                  <td>[[+NZ19]]</td>
                  <td>[[+OZ19]]</td>
                  <td>[[+PZ19]]</td>
                  <td>[[+QZ19]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                    
                       <tr>
                  <td>Z20</td>
                  <td>Grade me on my effectiveness and ability to get things done</td>
                  <td>[[+SZ20]]</td>
                  <td>[[+Z20]]</td>
                  <td>[[+BZ20]]</td>
                  <td>[[+CZ20]]</td>
                  <td>[[+DZ20]]</td>
                  <td>[[+EZ20]]</td>
                  <td>[[+FZ20]]</td>
                  <td>[[+GZ20]]</td>
                  <td>[[+HZ20]]</td>
                  <td></td>
                  <td></td>
                  <td></td>
                  <td>[[+JZ20]]</td>
                  <td>[[+KZ20]]</td>
                  <td>[[+LZ20]]</td>
                  <td>[[+MZ20]]</td>
                  <td>[[+NZ20]]</td>
                  <td>[[+OZ20]]</td>
                  <td>[[+PZ20]]</td>
                  <td>[[+QZ20]]</td>
                  <td></td>
                  <td></td>
                    </tr>
                    
                  </table>
                  
                  </body>
                  </html>
                  
                  <html>
                    <head>
                    
                      <script type="text/javascript" src="https://www.google.com/jsapi"></script>
                      <script type="text/javascript">
                        google.load("visualization", "1", {packages:["corechart"]});
                        google.setOnLoadCallback(drawChart);
                  		
                  	
                        function drawChart() {
                  	  
                          var data = google.visualization.arrayToDataTable([
                            ['Year', 'Self', 'Others'],
                            ['X1',  [[+SX1]],      [[+X1]]],
                            ['X2',  [[+SX2]],      [[+X2]]],
                            ['X3',  [[+SX3]],       [[+X3]]],
                            ['X4',  [[+SX4]],      [[+X4]]],
                  		  ['X5',  [[+SX5]],      [[+X5]]],
                  		  ['X6',  [[+SX6]],      [[+X6]]],
                  		  ['X7',  [[+SX7]],      [[+X7]]],
                  		  ['Y8',  [[+SY8]],      [[+Y8]]],
                  		  ['Y9',  [[+SY9]],      [[+Y9]]],
                  		  ['Y10',  [[+SY10]],      [[+Y10]]],
                                    ['Y11',  [[+SY11]],      [[+Y11]]],
                  		  ['Y12',  [[+SY12]],      [[+Y12]]],
                  		  ['Y13',  [[+SY13]],      [[+Y13]]],
                                    ['Y14',  [[+SY14]],      [[+Y14]]]
                                    
                  		  	  
                          ]);
                  
                          var options = {
                            title: 'Grade'
                        
                                         
                          };
                  
                          var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
                          chart.draw(data, options);
                      
                        }
                      </script>
                    </head>
                    <body>
                      <div id="chart_div" style="width: 1000px; height: 500px;"></div>
                    </body>
                  </html>
                  
                  
                  </p>
                    • 3749
                    • 24,544 Posts
                    Is it really necessary to have 16 separate tables to hold the data? I wonder if a little normalization of the DB design might make this a simpler and faster query.
                      Did I help you? Buy me a beer
                      Get my Book: MODX:The Official Guide
                      MODX info for everyone: http://bobsguides.com/modx.html
                      My MODX Extras
                      Bob's Guides is now hosted at A2 MODX Hosting