diff --git a/modules/cart/commerce_cart.module b/modules/cart/commerce_cart.module
index e8826a3..f5fde87 100644
--- a/modules/cart/commerce_cart.module
+++ b/modules/cart/commerce_cart.module
@@ -854,12 +854,27 @@ function commerce_cart_add_to_cart_form_submit($form, &$form_state) {
   $product_id = $form_state['values']['product_id'];
   $product = $form_state['products'][$product_id];
 
+  $cart_order = commerce_cart_order_load($form_state['values']['uid']);
+  $line_items = commerce_order_load_line_items($cart_order);
+
+  $already_in_cart = FALSE;
+  foreach($line_items as $line_item) {
+    if (isset($line_item->product) && $product_id == $line_item->product[LANGUAGE_NONE][0]['product_id']) {
+      $already_in_cart = round($line_item->quantity);
+    }
+  }
+
   // Add the product to the specified shopping cart.
   commerce_cart_product_add($form_state['values']['uid'], $product_id, $form_state['values']['quantity']);
 
   // TODO: Accommodate multiple product Add to Cart forms better; i.e. should it
   // display the product title or the product display node title?
   drupal_set_message(t('%title added to <a href="!cart-url">your cart</a>.', array('%title' => $product->title, '!cart-url' => url('cart'))));
+
+  // Tell user that this item was already in the cart.
+  if ($already_in_cart) {
+    drupal_set_message(t('This item was already in <a href="!cart-url">your cart</a>. If you don\'t want %count of this item, edit <a href="!cart-url">your cart</a>.', array('%count' => $already_in_cart, '!cart-url' => url('cart'))), 'warning');
+  }
 }
 
 /**
diff --git a/modules/cart/includes/commerce_cart.pages.inc b/modules/cart/includes/commerce_cart.pages.inc
index 1b60835..176d0b0 100644
--- a/modules/cart/includes/commerce_cart.pages.inc
+++ b/modules/cart/includes/commerce_cart.pages.inc
@@ -60,14 +60,7 @@ function commerce_cart_form($form, &$form_state, $order) {
     '#value' => $order,
   );
 
-  // First build an array of line items.
-  $line_item_ids = array();
-
-  foreach ($order->line_items[LANGUAGE_NONE] as $key => $value) {
-    $line_item_ids[] = $value['line_item_id'];
-  }
-
-  $line_items = commerce_line_item_load_multiple($line_item_ids);
+  $line_items = commerce_order_load_line_items($order);
 
   // The display title should come from the line item type.
   $product_line_item_type = commerce_line_item_type_load('product');
diff --git a/modules/order/commerce_order.module b/modules/order/commerce_order.module
index cdda349..c71b1f4 100644
--- a/modules/order/commerce_order.module
+++ b/modules/order/commerce_order.module
@@ -297,6 +297,22 @@ function commerce_order_load_multiple($order_ids = array(), $conditions = array(
 }
 
 /**
+ * Load all line items for an order.
+ */
+function commerce_order_load_line_items($order) {
+  // First build an array of line items.
+  $line_item_ids = array();
+
+  if (!empty($order->line_items)) {
+    foreach ($order->line_items[LANGUAGE_NONE] as $key => $value) {
+      $line_item_ids[] = $value['line_item_id'];
+    }
+  }
+
+  return commerce_line_item_load_multiple($line_item_ids);
+}
+
+/**
  * Generate an array for rendering the given order.
  *
  * @param $order
