maliary Posted September 24, 2007 Share Posted September 24, 2007 Hello there, I've got a logic problem over here that needs to be checked out. $deps = $db->Execute("SELECT * FROM $dbtable WHERE job_id='$batch_nr' AND group_id='$rowb[group_id]'" ); while($rowz = $deps->FetchRow()) { // get the test group $pio = $rowz['group_id']; // get the test data values and the test param name $test_vals = $rowz['serial_value']; $values = preg_split ("/[\&]+/", "$test_vals"); array_shift($values); $new_strs = implode("=", $values); $vals = preg_split ("/[\=]+/", "$new_strs"); array_shift($vals); $numitems2 = count($vals); $notes = $rowz['notes']; for ($col=0; $col <$numitems2; $col+=2){ $fname2 =$fname2.$vals[$col].'#'; } for ($rol=1; $rol <$numitems2; $rol+=2){ $rname2 = $rname2.$vals[$rol].'#'; } } $counterup=0; // Obtains the nr values here $nval2 = preg_split ("/[\#]+/", "$fname2"); array_pop($nval2); $jack = 285285; $numname = count($nval2); $rvalues = str_replace( "-", 285285, "$rname2"); $rvals = preg_split ("/[\#]+/", " $rvalues"); $disp = $db->Execute("SELECT * FROM $table WHERE group_id='$rowb[group_id]' ORDER by torder"); while($rows3 = $disp->FetchRow()) { if ($rows3['nr'] == $nval2[$counterup]) { if ($rvals[$counterup] != $jack) { $cache .= '<tr class=wardlistrow1'; $cache .= '>'; $cache.='<td class=va12_n > '.$rows3['name'].' </td>'."\n"; $cache.= "<td width=149 valign=top class=va12_n > $rvals[$counterup] </td>"; $cache.='<td class=va12_n> '.$row3['msr_unit'].'</td>'."\n"; $cache.='<td width="149" valign="top" class=va12_n> '.$rows3['normals'].' </td>'."\n"; $cache .= '</tr>'; } } $counterup++; } $cache .= '<tr><td width="160" height="10"></td> </tr>'; } echo $cache; the two arrays $rows3['nr'] and $nval2[$counterup] need to match up to display the data in between the if brackets. The problem is they cannot match up unless they are exactly of the same order. But this is not possible as the data needs to be printed out in torder.$nval2[$counterup] should not neccesarily be in torder and torder can change. So the question is, Is it possible to match them up while respecting the torder and still out put the data btwn the brackets correctly? take this as sample : $rows3['nr'] = '125','136','143','148','149','159','160','161','191','201','205','212','221','247','251','253','254','255','327','256','239','262','257','337','338','339','340' $nval2[$counterup] = '125','136','143','148','149','159','160','161','191','201','205','212','221','247','251','253','254','255','256','239','262','257' Quote Link to comment https://forums.phpfreaks.com/topic/70468-arrays/ Share on other sites More sharing options...
Psycho Posted September 24, 2007 Share Posted September 24, 2007 I'm not 100% sure what you are doing or what you are trying to accomplish. I *think* you are just trying to find the records where the value of the 'nr' column is in the list $nval2. If that is the case, then you just need to modify your query such that it only pulls those records to begin with. Much simpler and elegant solution. Change this: $disp = $db->Execute("SELECT * FROM $table WHERE group_id='$rowb[group_id]' ORDER by torder"); To this: $query = "SELECT * FROM $table WHERE group_id='$rowb[group_id]' AND nr in ('".implode("','",$nval2)."') ORDER by torder"; $disp = $db->Execute($query); Quote Link to comment https://forums.phpfreaks.com/topic/70468-arrays/#findComment-354087 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.