0


So I've been working on this for some time, but i cant seem to figure out how to get it to work.

I want to update the prices of a product in the database if the product id is there, if it's not there i want it to insert the new id and it's prices.

Using the code below it updates the database, however it does not insert anything if the id is not there.

Any clues on what's gone wrong?

With thanks
Jim

EDIT

This works for me:

$count = mysql_num_rows(mysql_query("SELECT id FROM products WHERE id = '$id'"));



            if ($count == 1){

            mysql_query("UPDATE products SET price='$price',ordprice='$ordprice' WHERE id='$id'");

            }elseif($count == 0){

            mysql_query("INSERT INTO products (id,price,ordprice) VALUES ('$id','$price','$ordprice')");
            }

/EDIT

if(isset($_POST['submit']))
    {
        $file = $_FILES['file']['tmp_name'];

        $handle = fopen($file,"r");
        while(($fileop = fgetcsv($handle,10000,";")) !== false)
        {
            $id = $fileop[0];
            $price = $fileop[1];
            $ordprice = $fileop[2];


            $count = mysql_num_rows(mysql_query("SELECT id FROM products WHERE id = '$id'"));



            if ($count = $id){

            mysql_query("UPDATE products SET price='$price',ordprice='$ordprice' WHERE id='$id'");

            }elseif($id != $count){

            mysql_query("INSERT INTO products (id,price,ordprice) VALUES ('$id','$price','$ordprice')");
            }

2 Answers 2

4

At first glance, this line:

 if ($count = $id){

will always equate to true, so try:

 if ($count == $id){

However, I think count will always return 1 (or zero if no record found) and wont ever match the id from the csv.

Instead pull the record from the database with mysql_fetch_assoc and compare the id field from the database with from your csv

Sign up to request clarification or add additional context in comments.

1 Comment

"However, I think count will always return 1 (or zero if no record found)" This line made it possible for me. I will update the original question with the solution i made
1

Besides what Hugh Downer said, you're facing another problem.

You're assigning to $count the value returned by mysql_num_rows which seems not to be the value you want.

You're comparing $count to $id to find out if they match. If I assume correctly that your id in the database is unique, $count will never be other than 0 or 1.

So try this:

if ($result = mysql_query("SELECT id FROM products WHERE id = $id")) {
    $row = mysql_fetch_array($result);
    $id2 = $row['id'];
}
else {
    $id2 = NULL;
}

if ($id == $id2) {
    // match found, do the insert magic
}
else {
    // update here
}

2 Comments

"You're comparing $count to $id to find out if they match. If I assume correctly that your id in the database is unique, $count will never be other than 0 or 1." This line made it possible for me. I will update the original question with the solution i made
I don't think i have the reputation to do that, or i do not know how to do it :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.