2010-10-08 4 views
0

Я столкнулся с проблемой, что после того, как я создал сообщение jQuery, я смог получить все данные, но как один мир, поэтому, когда я начал перефразировать их, мне удалось до финальной части, которая была вставкой в ​​базу данных, где внутри для цикла, и если цикл я получаю значение, но когда я хотел начать вставлять их в базу данных я получаю нулевые значения, ниже для цикла, и если петлядля цикла, и если цикл отказывается распечатать переменную вне цикла?

if ($action == "insert") 
{ 
    $fields = explode("&",$data); 

    foreach($fields as $field) 
    { 
     $field_key_value = explode("=",$field); 
     $key = urldecode($field_key_value[0]); 
     $value = urldecode($field_key_value[1]); 

     $id = $row['id']; 

     $date1 = date("d/n/Y"); 

     foreach ($cart->get_contents() as $item) 
     { 
      $item_id = $item['id']; 
      $item_name = $item['name']; 
      $item_price = $item['price']; 
      $item_qty = $item['qty']; 
      $item_ids  = explode("-",$item_id); 

      for($i = 0; $i < count($item_ids); $i++) 
      { 
       $item_idn = join("",$item_ids); 
      } 

      if($key == $item_id."id") 
      { 
       $ids = $value; 
       echo $ids."\r\n"; 
      } 
      elseif($key == "Small".$item_idn) 
      { 
       $small= $value; 
       echo $small."\r\n"; 
      } 
      elseif($key == "large".$item_idn) 
      { 
       $large= $value; 
       echo $large."\r\n"; 
      } 
      elseif($key == "medium".$item_idn) 
      { 
       $medium= $value; 
       echo $medium."\r\n"; 
      } 
      elseif($key == "xlarge".$item_idn) 
      { 
       $xlarge= $value; 
       echo $xlarge."\r\n"; 
      } 
      elseif($key == "qty".$item_idn) 
      { 
       $qty = $value; 
       echo $qty."\r\n"; 
      } 
      elseif($key == "Total".$item_idn) 
      { 
       $subtotal = $value; 
       echo $subtotal."\r\n"; 
      } 
      elseif($key == "finaltotal") 
      { 
       $finaltotal = $value.","; 
       $final = explode(",",$finaltotal); 

       for($i = 0; $i < count($final); $i++) 
       { 
        $totalf = $final[$i]; 
        break 3; 
       } 
      } 
     } 
    } 
} 
+1

Что такое значение '$ value' и почему вы добавляете ',' в конце? – fabrik

+0

какую переменную вы пытаетесь распечатать? – Woot4Moo

+0

, пожалуйста, предоставьте дополнительную информацию и код (и отформатируйте его правильно). Я не понимаю, какая именно проблема из вашего описания. – slosd

ответ

1

от jQuery docs:

Метод .serialize() создает текстовую строку в стандартной кодировке с URL-адресами

Итак, на стороне PHP вы получите подобную строку, как это:

a=1&b=2&c=3&d=4&e=5

Там нет необходимости взорвать & «S (или любой другой фокусы), вы можете легко получить доступ к представленные переменные, такие как:

$a = $_POST['a']; //1

конечно, когда вы передаете свои данные через $_GET, что вам нужно используйте $_GET.

+0

эй там @fabrik, когда я тестировал ваш метод, я продолжаю получать нуль – Mahmoud

+0

Что вы получаете, когда вы делаете print_r ($ _ POST) на стороне PHP? – fabrik

0

Похоже, что у вас есть ряд проблем. Если ваш jQuery отправляет на ваш PHP-скрипт, вы можете получить все свои ключи/значения через массив $ _POST. Вы можете получить $ finaltotal, как это $finaltotal = $_POST['finaltotal']. Если ваш jQuery не POSTING, но отправляя их как запрос GET, вы можете получить то же значение, что и $finaltotal = $_GET['finaltotal'].

Кроме того, что касается вашего большого кода if/elseif, я бы рекомендовал вместо этого использовать инструкцию switch, если вы собираетесь сохранить свой код как есть.

switch($key) 
{ 
    case 'finaltotal': 
     //do stuff 
     break; 
    default: 
     //do default 
     break; 
} 
0

Прежде всего, вы либо можете использовать $ _GET/$ _ POST для занесена данных, а Fabrik отметил, или (если по какой-то причине вы действительно только ваши данные в $ данных) можно использовать встроенная функция parse_str.

parse_str($data, $fields); 
foreach($fields as $key => $field) { 
    foreach ($cart->get_contents() as $item) { 
    if($key == ...) { 
     ... 
    } 
    } 
} 

И если я правильно понимаю, что вы здесь делаете, вы должны переместить break 3; из вашего цикл:

elseif($key == "finaltotal") { 
    $finaltotal = $value.","; 
    $final = explode(",",$finaltotal); 

    for($i = 0; $i < count($final); $i++){ 
    $totalf = $final[$i]; 
    } 
    break 3; 
} 
+0

Привет, @slosd, когда я делаю здесь, это то, что я прекратил цикл if от создания дублирования, без перерыва я продолжаю получать 100.00100.00100.00 – Mahmoud

Смежные вопросы