2014-01-13 3 views
0

У меня есть приложение php для отображения некоторых изображений, хранящихся в базе данных. Я хочу использовать javascript для изменения порядка фотографий. Index.php страница выглядит следующим образом:Обновление значений базы данных с помощью javascript

$photos = array(); 
$photos_query = "SELECT * FROM `photos` WHERE `id`=".$_SESSION['id']."ORDER BY `order`"; 
$data = mysqli_query($dbc, $photos_query); 
while ($photos_row= mysqli_fetch_assoc($data)){ 
    $photos[] = array(
       'photo_id' => $photos_row['photo_id'], 
       'id' => $photos_row['id'], 
       'photo_name' => $photos_row['photo_name'], 
       'order' => $photos_row['photo_order'] 
      ); 
} ... 
<div id="message"></div> 
<div id="showphotos"> 
    if (empty($photos)) { 
     echo 'No photos'; 
    } else { 
     echo '<ul>'; 
     foreach ($photos as $photo) { 
      echo '<li id="photoid_'.$photo['photo_id'].'"> 
      <img src="uploads/', $photo['id'], '/', $photo['photo_id'],'"' .$photo['photo_name']. 'height="150" width="150"> 
      ...  </li>';  
     } echo '</ul>'; 
    } 
</div> 

Эта страница вызывает move.js раз пользователь пытается изменить положение изображения в:

$(document).ready(function(){ 

    function slideOut(){ 
     setTimeout(function(){ 
      $("#message").slideUp("slow", function() {}); 
     }, 2000); 
    }; 

    $("#message").hide(); 

    $(function() { 
     $('ul').sortable({ 
      cursor: 'move', 
      opacity: 0.7, 
      revert: false, 
      update: function(){ 
       var neworder = $(this).sortable("serialize") + '&update=update'; 
       $.post("change_image_position.php", neworder, function (themessage) { 
        $("#message").html(themessage); 
        $("#message").slideDown('slow'); 
        slideOut(); 
       }); 
      } 
     }); 
    }); 

}); 

Наконец change_image_position.php содержит:

$array = $_POST['photoid']; 
if ($_POST['update'] == "update"){ 
    $count = 1; 
    foreach ($array as $idval) { 
     $query = "UPDATE photos SET order = " . $count . " WHERE photo_id = " . $idval; 
     mysqli_query($query) or die('Error, insert query failed'); 
     $count ++; 
    } 
    echo 'All saved! refresh the page to see the changes'; 
} 

Я столкнувшись с двумя проблемами ... Во-первых, order by statement (index.php) не работает, а во-вторых, запрос на изменение фотографий по запросу базы данных (change_image_position.php) не возвращает никакого результата. Заранее благодарю за любую помощь.

+0

Я бы предложил убрать ваш код в первую очередь :) –

+0

в файле 'change_image_position.php', сделайте' var_dump ($ _ POST) 'и вставьте опубликованную информацию. Убедитесь, что сообщение об ошибках полностью изменилось ('ini_set ('display_errors', 'on'), error_reporting (E_ALL);'). У вас есть некоторые проблемы с синтаксисом в вашей инструкции SQL в файле 'index.php' (пробелы, цитирование - если идентификатор сеанса не является целым числом и т. Д.). –

+0

После изменения «$ update = update»; to "& update = update"; var_dump ($ _ POST) prints array (2) {["photoid"] => array (3) {[0] => string (1) "3" [1] => string (1) "1" [2] => string (1) "2"} ["update"] => string (6) "update"} Ошибка, вставить запрос не удалось – user3169832

ответ

0

Вашего заявление MYSQL имеет недостающее пространство -

$photos_query = "SELECT * FROM `photos` WHERE `id`=".$_SESSION['id']."ORDER BY `order`"; 

Должен быть

$photos_query = "SELECT * FROM `photos` WHERE `id`=".$_SESSION['id']." ORDER BY `order`"; 

Я думаю, что так, как вы сейчас делаете сохранение фотографий терпит неудачу на neworder частей.

Вы в настоящее время проходите мимо $update, а затем звоните $_POST['update'], который будет искать только update=update.

+0

О запросе sql вы были правы. Итак, что бы вы предложили для второй части? (Я изменил «$ update = update»; на «& update = update»;) – user3169832

+1

Проблема решена ... У него возникла проблема с подключением к базе данных mysql должным образом ... Спасибо за помощь ... – user3169832

+0

Рад, что это работает! –

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