2010-10-08 5 views
0

je suis confronté à un problème qui après avoir créé le poste jQuery, je suis en mesure de recevoir toutes les données, mais comme une paix, alors quand je commencé à les reformulant je réussis jusqu'à ce que la dernière partie qui a été l'insertion dans la base de données, où à l'intérieur de la boucle et si boucle je reçois la valeur, mais quand je voulais commencer à les insérer dans la base de données que je reçois des valeurs nulles, ci-dessous est la boucle et si la bouclepour la boucle et si la boucle refuse d'imprimer une varriable en dehors de la boucle?

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

Quelle est la valeur de 'value' de $ et pourquoi avez-vous ajoutez un ',' à la fin? – fabrik

+0

quelle variable essayez-vous d'imprimer? – Woot4Moo

+0

s'il vous plaît fournir plus d'informations et de code (et le formater correctement). Je ne comprends pas quel est le problème exact de votre description. – slosd

Répondre

1

de jQuery docs:

La méthode .serialize() crée une chaîne de texte en notation standard de code URL

donc du côté de PHP vous obtiendrez une chaîne similaire à ceci:

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

Là, vous pouvez facilement accéder a pas besoin d'exploser & « s (ou tout autre abracadabra) votre les variables soumises comme:

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

Bien sûr, lorsque vous soumettez vos données via $_GET, vous devez utilisez $_GET.

+0

hey là @fabrik quand j'ai testé votre méthode je continue à obtenir null – Mahmoud

+0

Ce que vous obtenez quand vous faites print_r ($ _ POST) du côté PHP? – fabrik

0

Il semble que si vous avez un certain nombre de questions. Si votre jQuery publie sur votre script PHP, vous pouvez obtenir toutes vos clés/valeurs via le tableau $ _POST. Vous pouvez obtenir $ finaltotal comme ceci $finaltotal = $_POST['finaltotal']. Si votre jQuery ne POSTing pas, mais en les envoyant comme une demande GET, vous pouvez obtenir la même valeur comme si $finaltotal = $_GET['finaltotal'].

En outre, au sujet de votre gros si/bloc elseif de code, je vous recommande d'utiliser une instruction switch au lieu si vous allez garder votre code comme il est.

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

Tout d'abord, soit vous pouvez utiliser _GET $/$ _ POST pour les données inscrits par cet auteur, comme Fabrik a souligné, ou (si, pour une raison quelconque, vous avez vraiment que vos données données $) peuvent utiliser la fonction intégrée parse_str.

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

Et si je comprends bien ce que vous faites ici, vous devez déplacer le break 3; de votre boucle:

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

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

Hé là @slosd quand je fais ici est que je suis arrêter la boucle si de créer la duplication, sans la pause je continue à obtenir 100.00100.00100.00 – Mahmoud