2016-10-03 6 views
1

У меня есть этот переменный:Чтения JSON массив в PHP

var order = $('#listadoImages').sortable('serialize'); 

Когда отправить вар заказа из JSON в PHP, показывает "идентификатор [] = 18 & идентификатора [] = 19", моя проблема, я не может прочитать это в php. Я пробовал с foreach, но возвращал ошибку.

Мой Аякса код:

$("#mainAction").click(function(){ 
     //alert("New position: " + ui.item.index()); 
      var order = $('#listadoImages').sortable('serialize'); 
      var rutas = []; 
      $('#listadoImages li').each(function(index, li){ 
       var bg = $(this).find('span').css('background-image'); 
       bg = bg.replace('url(','').replace(')','').replace(/\"/gi, ""); 
       var res = bg.substring(42); 

       if(index == 0){ 
        rutas += res; 
       }else{ 
        rutas += ";" + res; 
       } 

      }); 


      //alert(rutas); 
      $.ajax({ 
       type: "POST",  
       url: "functions/guardar.php", 
       data: { 
       orden : order, 
       path : rutas 
       }, 
       "success":function(data){ 

       } 
      }); 
     }); 

Мой PHP код:

$paths = $_POST['path']; 
$orden = $_POST['orden']; 
$rutas = explode(";", $paths); 

if(isset($paths)){ 

    $sql = "SELECT * FROM imagenes"; 
    $respuesta = mysql_query($sql); 

    if($respuesta){ 
    $i=0; 
     while($rs = mysql_fetch_assoc($respuesta)){ 
      $rutaBD = $rs['ruta_imagen']; 
      foreach ($orden as $k => $value) { 
      foreach ($rutas as $key => $rut) { 
         for($i=0;$i<count($rut);$i++){ 
          if($rutaBD == $rut){ 
           //Here Update Statment 
          } 
         } 
       }  
      } 


     }  

    } 

Благодарим Вас за ридми. Я надеюсь, что кто-то может мне помочь. Спасибо! С уважением.

+0

Я не вижу, чтобы вы пытались использовать '$ orden' в любом месте вашего PHP? (он должен содержать массив '['id => [first, second, third, ... и т. д.]].' Дамп переменной '$ _POST?' и посмотреть, что он содержит. –

+0

Hi @Magnus Eriksson the JSON возвращает "id [] = 18 & id [] = 19" и не может читать с php – Emily

+0

JSON является форматом и не может «возвращать» что-либо. Вы говорите о Javascript? –

ответ

1

Чтобы превратить строку в массив, вам необходимо использовать parse_str. Затем он создаст массив $id, через который вы сможете выполнить итерацию.

parse_str($_POST['orden']); 
var_dump($id); 

Для перебора массива можно использовать Еогеасп, или еще лучше, использовать implode поставить его в IN пункта.

$sqlUpdate = "UPDATE imagenes SET ruta_imagen='".$rut."', orden=".$i." WHERE id_imagen IN (".implode(',',$id).")"; 

Обратите внимание, что этот SQL-запрос открыт для SQL-инъекции. Я настоятельно рекомендую перейти к PDO или mysqli и использовать подготовленные операторы. Вам также нужна запятая между заданиями ruta_imagen и order.

+0

Привет @ynber! Да, это мне помогает, но как я могу использовать эти данные и использовать идентификатор в статусе обновления? – Emily

+0

Трудно сказать без инструкции по обновлению. Вы можете использовать цикл foreach' для итерации по этим значениям. – aynber

+0

Извините @aynber мое обновление своего «$ sqlUpdate =" UPDATE imagenes SET ruta_imagen = '". $ Rut."' Orden = ". $ I." WHERE id_imagen = "$ ord;" где "ord" - это идентификатор, который был в $ _ P OST ['order']. Когда используется foreach 'foreach ($ newarray as $ k => $ ord)' дайте мне ошибку "Недопустимый аргумент, который был добавлен для foreach()". Мое определение newarray: '$ newarray = parse_str ($ _ POST ['orden']);' – Emily

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