Error message: porting 2.0 connection to 4.0

uburoibob 30 Mar, 2013
I've been running a setup using ChronoConnectivity 2.0RC3 for quite a while. Using a custom header and body, I lay out a little form with a pull-down box that lets the user select a country in the header, and that sets a WHERE clause. In the body I format the results of the query. Pretty simple, and the database table is inside my Joomla database.

Now I've had to upgrade Joomla and as a result I'm running 4.0 RC3.2, and everything is different. I'm having a really hard time adapting my little query to work in this. When I use my previous header and body, turning off the default listing function, I'm getting error messages.

"Fatal error: Class 'CFChronoConnectionData' not found in /home/mccolley/ws2012.mcmarketingmedia.com/components/com_chronoconnectivity/libraries/chronoconnection.php(865) : eval()'d code on line 94"

Here's my header:
<div margin-bottom: 40px;>
<p><small>Our dealer list is organized by country. To view the dealers that service your area, please select your country in the pull-down box on the right. A list of dealers will be displayed for you in the area below, with all available contact information.</small></p>

<?php $i = 0;?>
<div style="float: right; margin-bottom: 20px;">
<b>Select country:</b>
<select size="1" name="territory" onchange="this.form.submit();">
<option selected value="">Select</option>
<option value="United States">United States</option>
<option value="Argentina">Argentina</option>
<option value="Armenia">Armenia </option>
<option value="Australia">Australia</option>
<option value="Azerbaijan">Azerbaijan</option>
<option value="Bangladesh">Bangladesh</option>
<option value="Belize">Belize</option>
<option value="Bolivia">Bolivia</option>
<option value="Botswana">Botswana</option>
<option value="Brazil">Brazil</option>
<option value="Brunei">Brunei</option>
<option value="Cambodia">Cambodia</option>
<option value="Canada">Canada</option>
<option value="Chile">Chile</option>
<option value="China">China</option>
<option value="Colombia">Colombia</option>
<option value="Costa Rica">Costa Rica</option>
<option value="Czech Republic">Czech Republic</option>
<option value="Denmark">Denmark</option>
<option value="El Salvador">El Salvador</option>
<option value="Ecuador">Ecuador</option>
<option value="Faroue Islands">Faroue Islands</option>
<option value="Finland">Finland</option>
<option value="Fiji">Fiji</option>
<option value="France">France</option>
<option value="Georgia">Georgia</option>
<option value="Germany">Germany</option>
<option value="Greece">Greece</option>
<option value="Greek Cyprus">Greek Cyprus</option>
<option value="Greek Macedonia">Greek Macedonia</option>
<option value="Greenland">Greenland</option>
<option value="Guatemala">Guatemala</option>
<option value="Guyana">Guyana</option>
<option value="Honduras">Honduras</option>
<option value="Hong Kong">Hong Kong</option>
<option value="India">India</option>
<option value="Indonesia">Indonesia</option>
<option value="Iraq">Iraq</option>
<option value="Ireland">Ireland</option>
<option value="Israel">Israel</option>
<option value="Italy">Italy</option>
<option value="Japan">Japan</option>
<option value="Korea">Korea</option>
<option value="Laos">Laos</option>
<option value="Macao">Macao</option>
<option value="Madagascar">Madagascar</option>
<option value="Malaysia">Malaysia</option>
<option value="Mexico">Mexico</option>
<option value="Morocco">Morocco</option>
<option value="Mozambique">Mozambique</option>
<option value="Namibia">Namibia</option>
<option value="Nepal">Nepal</option>
<option value="Netherlands">Netherlands</option>
<option value="New Zealand">New Zealand</option>
<option value="Nicaragua">Nicaragua</option>
<option value="Nigeria">Nigeria</option>
<option value="Norway">Norway</option>
<option value="Pakistan">Pakistan</option>
<option value="Panama">Panama</option>
<option value="Paraguay">Paraguay</option>
<option value="Peru">Peru</option>
<option value="Philippines">Philippines</option>
<option value="Poland">Poland</option>
<option value="Port Of Spain">Port of Spain</option>
<option value="Romania">Romania</option>
<option value="Russia">Russia</option>
<option value="Singapore">Singapore</option>
<option value="Solomon islands">Solomon Islands</option>
<option value="South Africa">South Africa</option>
<option value="EspaƱa">Spain</option>
<option value="Sri Lanka">Sri Lanka</option>
<option value="Suriname">Suriname</option>
<option value="Sweden">Sweden</option>
<option value="Taiwan">Taiwan</option>
<option value="Thailand">Thailand</option>
<option value="Trinidad">Trinidad</option>
<option value="Turkey">Turkey</option>
<option value="United Kingdom">United Kingdom</option>
<option value="Uruguay">Uruguay</option>
<option value="Vanuatu">Vanuatu</option>
<option value="Venezuela">Venezuela</option>
<option value="Vietnam">Vietnam</option>
</select>
</div>
<?php
$MyData =& CFChronoConnectionData::getInstance($MyConnection->connectionrow->id);
if ( !count($MyData->getDataRows() ) ) {
  echo "<H1>Please select a country. =====></H1>";
} else {echo "<h1>Dealers for ", $_POST["territory"], "</h1>"; }
?>
</div>


and here's my body code:

<div style="margin-bottom: 20px; <?php if ($i % 2) echo ' background-color: #DDD;';?>">
<p><strong>{dealername}</strong>
<?php if ( !empty($Row->contactname)) echo "<br /><strong>{contactname}</strong>"; ?>
</p>
<?php if ( !empty($Row->address)) echo "<p>{address}</p>"; ?>
<?php if ( !empty($Row->phone)) echo "{phone} Voice<br />"; ?>
<?php if ( !empty($Row->fax)) echo "{fax} Fax<br />"; ?>
<?php if ( !empty($Row->email)) echo "<a href=mailto:{email}>{email}</a><br />"; ?>
<?php if ( !empty($Row->website)) echo "<a href={website} target=_blank>{website}</a> on the Web<br />"; ?>
<?php if ( !empty($Row->products)) echo "<strong>Products Carried: </strong>"; ?>
<?php if ( strpos($Row->products,"R") !== false) echo "<strong>(Wheatstone Radio)  </strong>"; ?>
<?php if ( strpos($Row->products,"T") !== false) echo "<strong>(Wheatstone TV) </strong>"; ?>
<?php if ( strpos($Row->products,"A") !== false) echo "<strong>(Audioarts) </strong>"; ?>
<?php if ( strpos($Row->products,"C") !== false) echo "<strong>(Commercial) </strong>"; ?>
<?php if ( strpos($Row->products,"V") !== false) echo "<strong>(Vorsis) </strong>"; ?>

</div>
<?php $i++ ?>


and finally, here's my WHERE sql (I omitted the word "WHERE" because it was doubling up...)

<?php
$search_array = array('territory');
$where = array();
foreach ( $search_array as $search ) {
  $value = JRequest::getVar($search, '' , 'post');
  if ( $value ) {
    $where[] = " $search LIKE '%$value%'";
  }
}
if ( !empty($where) ) {
  echo implode(' AND ', $where);
} else { echo " 'territory' LIKE '%zzz%'"; }
?>


I'm kind of under the gun here, so any help from anyone would be appreciated.
GreyHead 31 Mar, 2013
Hi kd4dcy,

I dug in the code a bit and it looks as though this will give you the record set:
<?php 
$cc =& CFChronoConnection::getInstance('my_list_name');
if ( !count($cc->records_list) ) {
  echo "<H1>Please select a country. =====></H1>";
} else {echo "<h1>Dealers for ", $_POST["territory"], "</h1>"; }
?>
Replace my_list_name with the name of your listing.

Also I think that the data is now in $row in the Body box and is an array, not an object.

Bob
uburoibob 31 Mar, 2013
Thanks for that, Bob. The change from MyRow to row and from object to array should be easy to handle. Just one question ... what do you mean by the "name of my listing?" Do you mean the connection name?

Scott

EDIT: It's actually working perfectly as is, with 'my_list_name'! Thanks again for the help! Incidentally, I've gone ahead and licensed the component for our site -- I just haven't validated it yet because the prototype site hasn't been moved to its final domain name yet and I don't want to break the validation once I've set it.
GreyHead 31 Mar, 2013
Hi Scott,

I did mean the 'Connection name' - surprised it works without but sometimes you get lucky :-)

Bob
This topic is locked and no more replies can be posted.