Steven Matthews
Steven Matthews

Reputation: 11285

Could this code be generating an infinite loop?

The code on my page doesn't seem to load - I think the program logic is a bit much for it.

$resultromney = mysql_query("SELECT category, value, timestamp from results where name='".$chartname2."'");
if (!$resultromney) {
    die('Invalid query, please contact administrator');
}

$posromney = 0;
$negromney = 0;
$dateromney = "1/1/2012";
$romray = array();

while ($twitromney = mysql_fetch_assoc($resultromney)) 
{

$romneytime = intval($twitromney["timestamp"]);
$romneydate = date('m/d/Y', $romneytime);
$romlinearray = array();
$romlinearray["date"] = null;
$romlinearray["value"] = null;
$romneydiff = date_diff($dateromney, $romneydate);

$PLromney = 0;
$NLromney = 0;
$totalromney = 0;

if ($romneydiff == 0) {


switch ($twitromney["category"]) {
    case "composed":
        $PLromney = $PLromney + $twitromney["value"];
break;
    case "elated":
        $PLromney = $PLromney + $twitromney["value"];
break;
    case "clearheaded":
        $PLromney = $PLromney + $twitromney["value"];
break;
    case "agreeable":
        $PLromney = $PLromney + $twitromney["value"];
break;
    case "energetic":
        $PLromney = $PLromney + $twitromney["value"];
break;
    case "unsure":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "tired":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "depressed":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "guilty":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "confused":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "anxious":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "hostile":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "confident":
        $PLromney = $PLromney + $twitromney["value"];
break;
}
$totalromney = $PLromney - $NLromney;

$romlinearray["value"] = $totalromney + $romlinearray["value"];
}

else {

$dateromney = $romneydate;

switch ($twitromney["category"]) {
    case "composed":
        $PLromney = $PLromney + $twitromney["value"];
break;
    case "elated":
        $PLromney = $PLromney + $twitromney["value"];
break;
    case "clearheaded":
        $PLromney = $PLromney + $twitromney["value"];
break;
    case "agreeable":
        $PLromney = $PLromney + $twitromney["value"];
break;
    case "energetic":
        $PLromney = $PLromney + $twitromney["value"];
break;
    case "unsure":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "tired":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "depressed":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "guilty":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "confused":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "anxious":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "hostile":
        $NLromney = $NLromney + $twitromney["value"];
break;
    case "confident":
        $PLromney = $PLromney + $twitromney["value"];
break;
}
$totalromney = $PLromney - $NLromney;

$romlinearray["date"] = $romneydate;
$romlinearray["value"] = $totalromney;
}

$romray[] = $romlinearray;

}

It is supposed to calculate arrays for different days with different numbers for values, but instead the page is refusing to load - but it did load before I put this code up there.

Upvotes: 0

Views: 94

Answers (3)

Tivie
Tivie

Reputation: 18923

This piece of code can probably be written in another way.

Suggestions:

Use MySQLi or PDO instead. Here's some documentation regarding Database APIs choices. Example:

$mysqli = new mysqli("example.com", "user", "password", "database");
$result = $mysqli->query( 
   sprint_f("SELECT category, value, timestamp from results where name='%s'", $chartname2) 
);

Use arrays to store data and then loop them after getting the results:

$romneytime = $romneydate = $romlinearray = $romneydiff = array();

while ($twitromney = $result->fetch_assoc()) 
{
    $romneytime[] = intval($twitromney["timestamp"]);
    $romneydate[] = date('m/d/Y', $romneytime);
    $romneydiff[] = date_diff($dateromney, $romneydate);
}

loop each one and try to figure out which one is giving error. var_dump($var) comes in handy.

Upvotes: 1

Marin Sagovac
Marin Sagovac

Reputation: 3972

Why you have in switch case repeately cases?

switch ($twitromney["category"]) {
    case "composed":
    $PLromney = $PLromney + $twitromney["value"];
break;
    case "elated":
    $PLromney = $PLromney + $twitromney["value"];
break;
    case "clearheaded":
    $PLromney = $PLromney + $twitromney["value"];
break;
    case "agreeable":
    $PLromney = $PLromney + $twitromney["value"];
break;
    case "energetic":
    $PLromney = $PLromney + $twitromney["value"];
break;
    case "unsure":
    $NLromney = $NLromney + $twitromney["value"];
break;
    case "tired":
    $NLromney = $NLromney + $twitromney["value"];
break;
    case "depressed":
    $NLromney = $NLromney + $twitromney["value"];
break;
    case "guilty":
    $NLromney = $NLromney + $twitromney["value"];
break;
    case "confused":ss
    $NLromney = $NLromney + $twitromney["value"];
break;
    case "anxious":
    $NLromney = $NLromney + $twitromney["value"];
break;
    case "hostile":
    $NLromney = $NLromney + $twitromney["value"];
break;
    case "confident":
    $PLromney = $PLromney + $twitromney["value"];
break;
}

Instead of above use:

switch ($twitromney["category"]) {
    case "composed":
    case "elated":
    case "clearheaded":
    case "agreeable":
    case "energetic":
    case "confident":
    $PLromney = $PLromney + $twitromney["value"];
break;
    case "unsure":
    case "tired":
    case "depressed":
    case "guilty":
    case "confused":
    case "anxious":
    case "hostile":
    $NLromney = $NLromney + $twitromney["value"];
break;
}

I'm modified your to code to check all DUMPS, look at below ant testing dumps:

    $resultromney = mysql_query("SELECT category, value, timestamp from results where name='".$chartname2."'")

    var_dump('[1]:'.$resultromney);

    if (!$resultromney) {
        die('Invalid query, please contact administrator');
    }

    $posromney = 0;
    $negromney = 0;
    $dateromney = "1/1/2012";
    $romray = array();

    while ($twitromney = mysql_fetch_assoc($resultromney)) 
    {

        var_dump('[2]:'.$twitromney);

    $romneytime = intval($twitromney["timestamp"]);

        var_dump('[3]:'.$romneytime);   

    $romneydate = date('m/d/Y', $romneytime);

        var_dump('[4]:'.$romneydate);   

    $romlinearray = array();
    $romlinearray["date"] = null;
    $romlinearray["value"] = null;

        var_dump('[5]:'.$romlinearray); 

    $romneydiff = date_diff($dateromney, $romneydate);

        var_dump('[6]:'.$romneydiff);   

    $PLromney = 0;
    $NLromney = 0;
    $totalromney = 0;

    if ($romneydiff == 0) {

        var_dump('[7]:'.$romneydiff);   


    switch ($twitromney["category"]) {

        var_dump('[8]:'.$twitromney);   

        case "composed":
        case "elated":
        case "clearheaded":
        case "agreeable":
        case "energetic":
        case "confident":
        $PLromney = $PLromney + $twitromney["value"];
    break;
        case "unsure":
        case "tired":
        case "depressed":
        case "guilty":
        case "confused":
        case "anxious":
        case "hostile":
        $NLromney = $NLromney + $twitromney["value"];
    break;
    }

        var_dump('[8]:'.$PLromney);
        var_dump('[9]:'.$NLromney);

    $totalromney = $PLromney - $NLromney;

    $romlinearray["value"] = $totalromney + $romlinearray["value"];

        var_dump('[10]:'.$totalromney, $romlinearray);

    }

    else {

    $dateromney = $romneydate;

    switch ($twitromney["category"]) {

        var_dump('[11]:'.$twitromney);  

        case "composed":
        case "elated":
        case "clearheaded":
        case "agreeable":
        case "energetic":
        case "confident":
        $PLromney = $PLromney + $twitromney["value"];
    break;
        case "unsure":
        case "tired":
        case "depressed":
        case "guilty":
        case "confused":
        case "anxious":
        case "hostile":
        $NLromney = $NLromney + $twitromney["value"];
    break;
    }

        var_dump('[12]:'.$PLromney);
        var_dump('[13]:'.$NLromney);

    $totalromney = $PLromney - $NLromney;

    $romlinearray["date"] = $romneydate;
    $romlinearray["value"] = $totalromney;

        var_dump('[14]:'.$totalromney, $romlinearray);

    }

    $romray[] = $romlinearray;


    var_dump('[15]:'.$romray);

    }

And @Tivie says this code can be write better, yes, it true. Write less, do more.

Upvotes: 1

Reut Sharabani
Reut Sharabani

Reputation: 31339

Probably an error.

Check out your apache's php logs (or whatever it is you're using) at /var/logs/apache2/error_log.log

Or something similar...

Upvotes: 0

Related Questions