Jump to content

[SOLVED] subtracting CURDATE... anyhelp?


phpstuck

Recommended Posts

OK I get the following error when running this on my server.... any ideas?

 

"Title: 650 New!!

Warning: mysql_fetch_array(): 4 is not a valid MySQL result resource in C:\Program Files\xampp\htdocs\jhc\csidisplay.php on line 6"

 

It returns the tag number and the phrase New!! but develops this error, any help is greatly appreciated!

 

<?
include "db.php";

$sql_date = mysql_query("SELECT tag, ro, veh, cust, phone, warr, appt, wait, tech, type, notes, dateadded , ( TO_DAYS(CURDATE()) - TO_DAYS(dateadded) ) as date_diff FROM repairs") or die (mysql_error());

    while(list($tag, $ro, $veh, $cust, $phone, $warr, $appt, $wait, $tech, $type, $notes, $dateadded, $date_diff)=mysql_fetch_array($sql_date)){

        if($date_diff > 14){

        $new = "y";

        }

    echo "Title: $tag";

    if($new == "y"){

        echo " <font color='red'>New!!</font>";

    }

    mysql_free_result($sql_date);

    unset($new);

  }



?>

Link to comment
https://forums.phpfreaks.com/topic/78026-solved-subtracting-curdate-anyhelp/
Share on other sites

Oh well I will just make it invisible for now using the trusty ole'

 

<?
include "db.php";
error_reporting(~E_ALL);

$sql_date = mysql_query....

 

But I still sure would like to know what is causing the warning to pop up there... If anyone knows I am watching for the answer so that I can learn from my mistake.

Always dump the variables... you'll learn to troubleshoot your own scripts quickly.

 

Run this script and post the results:

 

<?
include "db.php";

$sql_date = mysql_query("SELECT tag, ro, veh, cust, phone, warr, appt, wait, tech, type, notes, dateadded , ( TO_DAYS(CURDATE()) - TO_DAYS(dateadded) ) as date_diff FROM repairs") or die (mysql_error());

$row = mysql_fetch_array($sql_date);

echo"$sql_date<br /><pre>";
print_r($row);
die("</pre>");

   while(list($tag, $ro, $veh, $cust, $phone, $warr, $appt, $wait, $tech, $type, $notes, $dateadded, $date_diff)=mysql_fetch_array($sql_date)){

       if($date_diff > 14){

       $new = "y";

       }

   echo "Title: $tag";

   if($new == "y"){

       echo " <font color='red'>New!!</font>";

   }

   mysql_free_result($sql_date);

   unset($new);

 }



?>

 

PhREEEk

mysql_free_result($sql_date);<--- that i guess is the prob you free the result inside the loop so when the loop run for the second time no more resource data to be used

 

Nice catch.. yes, proper code formatting would have made that so much more apparent.

Also, to the OP, you don't need to free the result set unless you really need to, which is rather rare.

So, 2 solutions:

 

<?php
include "db.php";

$sql_date = mysql_query("SELECT tag, ro, veh, cust, phone, warr, appt, wait, tech, type, notes, dateadded , ( TO_DAYS(CURDATE()) - TO_DAYS(dateadded) ) as date_diff FROM repairs") or die (mysql_error());

while(list($tag, $ro, $veh, $cust, $phone, $warr, $appt, $wait, $tech, $type, $notes, $dateadded, $date_diff)=mysql_fetch_array($sql_date)) {
    if($date_diff > 14) {
        $new = "y";
    }
    echo "Title: $tag";
    if($new == "y") {
        echo " <font color='red'>New!!</font>";
    }
    unset($new);
}
mysql_free_result($sql_date);

?>

 

Or just

 

<?php
include "db.php";

$sql_date = mysql_query("SELECT tag, ro, veh, cust, phone, warr, appt, wait, tech, type, notes, dateadded , ( TO_DAYS(CURDATE()) - TO_DAYS(dateadded) ) as date_diff FROM repairs") or die (mysql_error());

while(list($tag, $ro, $veh, $cust, $phone, $warr, $appt, $wait, $tech, $type, $notes, $dateadded, $date_diff)=mysql_fetch_array($sql_date)) {
    if($date_diff > 14) {
        $new = "y";
    }
    echo "Title: $tag";
    if($new == "y") {
        echo " <font color='red'>New!!</font>";
    }
    unset($new);
}

?>

 

PhREEEk

Archived

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

×
×
  • 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.