What did I do wrong with this code?

lapux33

New Member
My PHP scripts below should display a list of device status up or down. But even when one device is up it shows both down. What did I do wrong here in loop statement?\[code\] <? require "config.php"; include_once("header.php"); if($_SESSION['UserId']==""){ $msg="You need to be auhenticated or have privileges to be here"; redirect("main.php"); } $sql = ("SELECT * FROM ont"); $query = db_query($sql); $sql1 = "SELECT ont_id,pon_port FROM ont"; $query1 = db_query($sql1); ?> <head> <meta http-equiv="refresh" content="30" /> </head> <br> <div align="center"><strong><a>ONT List</a></strong></div> <table border="0" align="center"> <tr> <td>S.N.</td> <td>ONT ID</td> <td>HostName</td> <td>PON Port</td> <td>Splitter</td> <td>Splitter Port</td> <td>Run State</td> <td>Match State</td> <td>Distance(m)</td> <td>Status</td> <td> </tr> <? $k=1; while($row=db_fetch_array($query)){ $pon_port=$row['pon_port']; $ont_id=$row['ont_id']; //Query snmp for ONT RunStatus $text = shell_exec("/usr/local/bin/snmpwalk -v2c -c public 10.0.9.3 SNMPv2- SMI::enterprises.2011.6.128.1.1.2.57.1.15.".$pon_port.".".$ont_id.""); $len = preg_match_all('/INTEGER: (\d+)/',$text,$hits); for ( $i=0 ; $i<$len ; $i++ ) { $value = http://stackoverflow.com/questions/15900604/$hits[1][$i]; //$string = $hits[2][$i]; } if ($value =="1"){ $status=up; }else{ $status=down; }/* END RUN Status *///Query ONT Match condition 1= Initialization, 2 = Match, 3 = Mismatch $match_status = shell_exec("/usr/local/bin/snmpwalk -v2c -c public 10.0.9.3 SNMPv2- SMI::enterprises.2011.6.128.1.1.2.57.1.18.".$pon_port.".".$ont_id.""); $match_reg = preg_match_all('/INTEGER: (\d+)/',$match_status,$hits); for ( $i=0; $i<$match_reg; $i++ ){ $value1 = $hits[1][$i]; //$string1 = $hits[2][$i]; } if ($value1 == "1"){ $match_status=Initialization; } if ($value1 == "2"){ $match_status="Match"; } if ($value1 == "3"){ $match_status="Mismatch"; }/* END of Match */// Query ONT Distance $distance = shell_exec("/usr/local/bin/snmpwalk -v2c -c public 10.0.9.3 SNMPv2-SMI::enterprises.2011.6.128.1.1.2.57.1.19.".$pon_port.".".$ont_id.""); $dist_match = preg_match_all('/INTEGER: (\d+)/',$distance,$hits); for ( $i=0; $i<$dist_match; $i++){ $ont_distance = $hits[1][$i]; }/* END OF ONT Distance */ if ($status == "up" && $value1 == "2"){ $image = "<img height='16' src='http://stackoverflow.com/questions/15900604/images/green.png'>"; }else{ $image = "<img height='16' src='http://stackoverflow.com/questions/15900604/images/red.png'>"; } ?> <tr> <td bgcolor="<? echo $color;?>"><? echo $k;?></td> <td bgcolor="<? echo $color;?>"><? echo $row['ont_id'];?></td> <td bgcolor="F4F4FF"><? echo $row['hostname'];?></td> <td bgcolor="F4F4FF"><? echo $row['pon_port'];?></td> <td bgcolor="F4F4FF"><? echo $row['splitter'];?></td> <td bgcolor="F4F4FF"><? echo $row['splitter_port'];?></td> <td bgcolor="F4F4FF"><? echo $status ; ?></td> <td bgcolor="F4F4FF"><? echo $match_status; ?></td> <td bgcolor="F4F4FF"><? echo $ont_distance; ?></td> <td bgcolor="F4F4FF"><? echo $image; ?></td> </tr> <? $k++; } ?> </table>=============================\[/code\]Sorry, I missed the question part while posting: Actually the above scripts will output the device status list up or down. But this code is displaying all devices down if one device goes down.
 
Top