Jump to content
#StayAtHome ×

Archived

This topic is now archived and is closed to further replies.

keenej

[SOLVED] Unknown Issue PHP SQL

Recommended Posts

IM not sure what IM doing wrong here, but the code within the if statement never executes. The Dates Change I used the echo statment to see the dates and tmpDATE1 always = tmpDATE2.

 

Please take a look at the code and point me in the right direction. Thanks

   

        while (!$rs->EOF) {

 

$tmpDATE1=$rs->Fields('CountedDate');

 

echo $tmpDATE1;

echo $tmpDATE2;

 

if($tmpDATE1<>$tmpDATE2){

echo "DATE CHANGED";

$tmpDATE2=$tmpDATE1;

$tmpACOUNT=0;

$tmpBCOUNT=0;

$tmpCCOUNT=0;

}

 

if($rs->Fields('ABC')=="A"){

$tmpACOUNT++;

}

 

if($rs->Fields('ABC')=="B"){

$tmpBCOUNT++;

}

 

if($rs->Fields('ABC')=="C"){

$tmpCCOUNT++;

}

 

 

$tmpX = $tmpX + 1;

echo "<tr>";

echo "<td align='Left'>$tmpX</td>";

echo "<td align='Left'>$tmpDATE2</td>";

echo "<td align='Left'>$tmpPART</td>";

echo "<td align='Left'>$tmpACOUNT</td>";

echo "<td align='Left'>$tmpBCOUNT</td>";

echo "<td align='Left'>$tmpCCOUNT</td>";

echo "</tr>";

 

        $rs->MoveNext(); }

Share this post


Link to post
Share on other sites

Which if statment gives you a problem?

Share this post


Link to post
Share on other sites

        $tmpDATE1=$rs->Fields('CountedDate');

 

        echo $tmpDATE1;

        echo $tmpDATE2;

 

        if($tmpDATE1<>$tmpDATE2){

            echo "DATE CHANGED";

            $tmpDATE2=$tmpDATE1;

            $tmpACOUNT=0;

            $tmpBCOUNT=0;

            $tmpCCOUNT=0;       

        }

 

 

Share this post


Link to post
Share on other sites

But you say that $tmpDATE1 is always equal to $tmpDATE2 ???

Share this post


Link to post
Share on other sites

Result should be like below. Except  where 13 is printed a second time should be a 0 and where the 1 is on the second 13 should be there, but the next value should be 0. Only 1 of the 3 numbers in each row should have a value and increment to the next time that column has a certain value. A B or C

Hope this helps a little more.

9/2/20089/2/2008 1 9/2/2008  1 0 0

9/2/20089/2/2008 2 9/2/2008  2 0 0  

9/2/20089/2/2008 3 9/2/2008  3 0 0

9/2/20089/2/2008 4 9/2/2008  4 0 0

9/2/20089/2/2008 5 9/2/2008  5 0 0

9/2/20089/2/2008 6 9/2/2008  6 0 0  

9/2/20089/2/2008 7 9/2/2008  7 0 0

9/2/20089/2/2008 8 9/2/2008  8 0 0

9/2/20089/2/2008 9 9/2/2008  9 0 0

9/2/20089/2/2008 10 9/2/2008  10 0 0

9/2/20089/2/2008 11 9/2/2008  11 0 0

9/2/20089/2/2008 12 9/2/2008  12 0 0  

9/2/20089/2/2008 13 9/2/2008  13 0 0  

9/2/20089/2/2008 14 9/2/2008  13 0 1

9/3/20089/3/2008 15 9/3/2008  14 0 1

 

Share this post


Link to post
Share on other sites

Yes. Its completely weird. $tmpDATE2 is changing without entering the if statement

Share this post


Link to post
Share on other sites

I think the if statement syntax is correct, but I don't know how the $tmpDATE2 value is being set without entering the if Statement

Share this post


Link to post
Share on other sites

here is the complete block of code.

 

$tmpX = 0;

 

$rs = $conn->Execute("SELECT * FROM [ABC Parts Counted By Reason] WHERE ABC_LogCounted.ABCREASON<>21 AND CountedDate Between #$BD# AND #$ED# ORDER BY CountedDate ASC");

 

      while (!$rs->EOF) {

 

$tmpDATE1=$rs->Fields('CountedDate');

 

echo $tmpDATE1;

echo $tmpDATE2;

 

if($tmpDATE1<>$tmpDATE2){

echo "DATE CHANGED";

$tmpDATE2=$tmpDATE1;

$tmpACOUNT=0;

$tmpBCOUNT=0;

$tmpCCOUNT=0;

}

 

if($rs->Fields('ABC')=="A"){

$tmpACOUNT++;

}

 

if($rs->Fields('ABC')=="B"){

$tmpBCOUNT++;

}

 

if($rs->Fields('ABC')=="C"){

$tmpCCOUNT++;

}

 

 

$tmpX = $tmpX + 1;

echo "<tr>";

echo "<td align='Left'>$tmpX</td>";

echo "<td align='Left'>$tmpDATE2</td>";

echo "<td align='Left'>$tmpPART</td>";

echo "<td align='Left'>$tmpACOUNT</td>";

echo "<td align='Left'>$tmpBCOUNT</td>";

echo "<td align='Left'>$tmpCCOUNT</td>";

echo "<td align='Left'>$tmpDATE</td>";

echo "<td align='Left'>$tmpDATE</td>";

echo "<td align='Left'>$tmpDATE</td>";

echo "<td align='Left'>$tmpDATE</td>";

echo "<td align='Left'>$tmpDATE</td>";

echo "<td align='Left'>$tmpDATE</td>";

echo "<td align='Left'>$tmpDATE</td>";

echo "</tr>";

 

        $rs->MoveNext(); }

 

Share this post


Link to post
Share on other sites

It is strange.

So "DATE CHANGED" is never echoed, and counters are not zeroed...

Share this post


Link to post
Share on other sites

Its strange. IM new to php, but I put similar code in VB it works flawless. Do you see anything wrong with the code?

Share this post


Link to post
Share on other sites

I've even put it in php tags to get it coloured. Can't see anything wrong.

 

$tmpX = 0;

$rs = $conn->Execute("SELECT * FROM [ABC Parts Counted By Reason] WHERE ABC_LogCounted.ABCREASON<>21 AND CountedDate Between #$BD# AND #$ED# ORDER BY CountedDate ASC");

while (!$rs->EOF) {

$tmpDATE1=$rs->Fields('CountedDate');

echo $tmpDATE1;
echo $tmpDATE2;

if($tmpDATE1<>$tmpDATE2){
  echo "DATE CHANGED";
  $tmpDATE2=$tmpDATE1;
  $tmpACOUNT=0;
  $tmpBCOUNT=0;
  $tmpCCOUNT=0;         
}

if($rs->Fields('ABC')=="A"){
  $tmpACOUNT++;
}

if($rs->Fields('ABC')=="B"){
  $tmpBCOUNT++;
}

if($rs->Fields('ABC')=="C"){
  $tmpCCOUNT++;
}
        

$tmpX = $tmpX + 1;
echo "<tr>";
echo "<td align='Left'>$tmpX</td>";
echo "<td align='Left'>$tmpDATE2</td>";
echo "<td align='Left'>$tmpPART</td>";
echo "<td align='Left'>$tmpACOUNT</td>";
echo "<td align='Left'>$tmpBCOUNT</td>";
echo "<td align='Left'>$tmpCCOUNT</td>";
echo "<td align='Left'>$tmpDATE</td>";
echo "<td align='Left'>$tmpDATE</td>";
echo "<td align='Left'>$tmpDATE</td>";
echo "<td align='Left'>$tmpDATE</td>";
echo "<td align='Left'>$tmpDATE</td>";
echo "<td align='Left'>$tmpDATE</td>";
echo "<td align='Left'>$tmpDATE</td>";
echo "</tr>";      
      
$rs->MoveNext(); 
}

 

[edit]

 

It echoes "DATE CHANGED" on my server (I had to get rid of all database stuff obviously)

Share this post


Link to post
Share on other sites

One more thing that came to my mind: perhaps you have a reference for $tmpDATE1 and $tmpDATE2 set up somewhere?

 

References in PHP manual

Share this post


Link to post
Share on other sites

IM not sure how to mark this as resolved, but thanks MCHL. I looked into referencing and that is what was happening.

 

This is the fix

 

if($tmpDATE!=$preDATE){

$preDATE=$tmpDATE;

$tmpDATE=$rs->Fields('countedDATE');

$tmpACOUNT=0;

$tmpBCOUNT=0;

$tmpCCOUNT=0;

}

 

Had to create a fake date before the query runs forcing the if statement to be true. You have to set the referenced variables in the above order or else they will always return the same value. Set First Variable Set Second Variable = to First Variable Change 1st Variable. That was confusing.

 

Thanks Again

Share this post


Link to post
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.