Link to home
Start Free TrialLog in
Avatar of UniqueData
UniqueDataFlag for United States of America

asked on

error in while loop

I have a mySQL table called filterSetup which has 16 records. in the body of the page I loop through the recordset to dynamically create a form.  That works fine.  I see 16 rows. Each row has two text fields: operator1, value1 for row 1, operator2, value2 for row 2, etc.  Again, this part seems to be fine.

On submit is where I am having trouble looping through the recordset, and perhaps I am even going about this whole thing wrong.  But I have added some "alerts" and see that it gets through the first time but doesn't move to the next record.

I know that I should be using mysqli instead of mysql, and that will be my next task when the site is up and running.

<?php
    require_once('config.php');
    if (!empty($_POST["applyFilter"]) )
    {
        $sql = "Delete from reportfilters";
        if (!$res = mysql_query($sql)) die( mysql_error() );  

        $sql = "SELECT * FROM filterSetup order by filterID" ;
        $res = mysql_query($sql);
        if (!$res) die( mysql_error() );
        while ($row = mysql_fetch_assoc($res))
        {
            echo "</br>top of while</br>";
            $filterID =$row["filterID"];
            $operator = $_POST["operator".$filterID];
            $value = '';
            if (!empty($_POST["value".$row["filterID"]]) ) {            
                $value = mysql_real_escape_string($_POST["value".$filterID]);
            } 
echo "id:".$filterID." operator:".$operator." value:".$value;
            //save the filterSetup
echo "</br>starting update";    
                $sql = "Update filterSetup set myOperator='".$operator."', filterValue='".$value."'".
                            " where filterID=".$filterID;
                if (!$res = mysql_query($sql)) die( mysql_error() ); 
echo "</br>update ok";
            //save the filterLine
                if ($value !='' ) {
                    if ($operator =='contains') {
                        $strFilter=" like '%". $value . "%'";
                    } else {
                        $strFilter=$operator . "'" . $value . "'";
                    }
                    $strFilter= $row["filterField"] . $strFilter;
                    $sql = "Insert into reportfilters (filterLine) values('".mysql_real_escape_string($strFilter)."')";
echo "</br>running: ".$sql;
                    if (!$res = mysql_query($sql)) die( mysql_error() ); 
echo "</br>insert completed";
                }
echo "</br>moving to next";
        }
        //header("Location: gridDisplay_new.php?viewid=1" );
        //exit;                               

    }
?>
<form action="filterForm.php" id="filterForm" name="filterForm" method="POST">
<?php 

    $sql2 = "SELECT * FROM filterSetup order by filterID" ;
    $res2 = mysql_query($sql2);
    if (!$res2) die( mysql_error() );
?>
    <table>
        <?php
            while ($row2 = mysql_fetch_assoc($res2))
            {
        ?>
                <tr>
                    <td><?php echo $row2["filterField"]; ?></td>
                    <td>
                        <select name="operator<?php echo $row2["filterID"]; ?>">
                            <option value = "contains" <?php if ($row2["myOperator"]=="contains") echo " selected" ?>>contains</option>
                            <option value = "=" <?php if ($row2["myOperator"]=="=") echo " selected" ?>>=</option>
                            <option value = "!=" <?php if ($row2["myOperator"]=="!=") echo " selected" ?>>!=</option>
                            <option value = "<" <?php if ($row2["myOperator"]=="<") echo " selected" ?>><</option>
                            <option value = ">" <?php if ($row2["myOperator"]==">") echo " selected" ?>>></option>
                            <option value = "<=" <?php if ($row2["myOperator"]=="<=") echo " selected" ?>><=</option>
                            <option value = ">=" <?php if ($row2["myOperator"]==">=") echo " selected" ?>>=></option>
                        </select>
                    </td>
                    <td><input type="text" name="value<?php echo $row2['filterID']; ?>" value="<?php echo $row2["filterValue"] ?>" /></td>
                </tr>
        <?php
            }
        ?>
    </table>
    <input type="submit" value="Apply Changes" name="applyFilter" id="applyFilter" />
</form>
<button id="closeSlide">Close Filter Menu</button>

Open in new window


Here is the result when I submit:
top of while
id:1 operator:contains value:bronco
starting update
update ok
running: Insert into reportfilters (filterLine) values('Manufacturer_Dealer_Name like \'%bronco%\'')
insert completed
moving to next
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /home/uniqueda/public_html/xtime/filterForm.php on line 11
ASKER CERTIFIED SOLUTION
Avatar of Dan Craciun
Dan Craciun
Flag of Romania image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of UniqueData

ASKER

oh my..of course it was something like that I missed.

thanks for your time
Glad I could help!