[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема сортировки модулей
Mr_Smitt
Доброго времени суток всем! smile.gif
У меня на сайте выводятся модули которые сортируются по "весу" модуля. Управление "весом" модуля осуществляется в админке с помощью кнопок user posted imageuser posted imageuser posted image. Вродебы все работает, все сортирует... НО! при обновлении страницы само по себе присваевается значение "0" к первому модулю вместо "1".. и допустим если отсортировать модули по весу 0,1,2,3.. при обновлении страницы я опять получаю "0" вместо "1" тоесть 0,0,2,3 и т.д.
Помогите решить проблему sad.gif
Прилагаю код:
$id = intval($_GET['id']);//id модуля
$set = $_GET['set'];//вверх или вниз
mysql_select_db($database_MySql, $MySql);
$result = mysql_query("SELECT weight FROM modules WHERE id=".$id);
$row = mysql_fetch_array($result);//текущий вес
$bot = $row['weight']+1;//вес соседа снизу
$top = $row['weight']-1;//вес соседа сверху

if($set=='top'){
mysql_query("UPDATE modules SET weight=weight+1 WHERE weight=".$top);//опустили соседа
mysql_query("UPDATE modules SET weight=weight-1 WHERE id=".$id);//сами поднялись
} else {
mysql_query("UPDATE modules SET weight=weight-1 WHERE weight=".$bot);//подняли соседа
mysql_query("UPDATE modules SET weight=weight+1 WHERE id=".$id);//сами опустились
}

Кнопачка поднятия модуля на позицию вверх:
<a href="modules.php?set=top&id=<?php echo $row_newsblock['id']; ?>">вверх</a>

Кнопачка поднятия модуля на позицию вниз:
<a href="modules.php?set=bot&id=<?php echo $row_newsblock['id']; ?>">вниз</a>




Спустя 10 часов, 21 минута, 9 секунд (15.07.2010 - 10:21) tomash написал(а):
А где Вы выводите данные из БД?

Спустя 12 часов, 32 минуты, 56 секунд (15.07.2010 - 22:54) Mr_Smitt написал(а):
На этойже странице.. Табличный вид
Например:
||Имя модуля || Сортировка || Действия||
||_Модуль 1_||___user posted image1user posted image___||__user posted imageuser posted image__||
||_Модуль 2_||___user posted image2user posted image___||__user posted imageuser posted image__||

Спустя 5 часов, 17 минут, 22 секунды (16.07.2010 - 04:11) Wird_34 написал(а):
Mr_Smitt, tomash ненавязчиво попросил код предоставить, т. к. в том коде, что привел ты ошибки не видно. А вообще посмотри в таблицу базы данных до и после изменения приоритета модулей. Думаю ошибку тут лучше всего определять экспериментальным методом, а не просмотром кода.

Спустя 15 часов, 56 минут, 49 секунд (16.07.2010 - 20:08) Mr_Smitt написал(а):
Вот код страницы
<?php require_once('Connections/MySql.php'); ?>
<?php

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}


$currentPage = $_SERVER["PHP_SELF"];

if ((isset($_GET['deleteID'])) && ($_GET['deleteID'] != "")) {
$deleteSQL = sprintf("DELETE FROM modules WHERE id=%s",
GetSQLValueString($_GET['deleteID'], "int"));

mysql_select_db($database_MySql, $MySql);
$Result1 = mysql_query($deleteSQL, $MySql) or die(mysql_error());

$deleteGoTo = "modules.php";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $deleteGoTo));
}
//сортировка
$id = intval($_GET['id']);//id модуля
$set = $_GET['set'];//вверх или вниз
mysql_select_db($database_MySql, $MySql);
$result = mysql_query("SELECT weight FROM modules WHERE id=".$id);
$rows = mysql_fetch_array($result);//текущий вес
$bot = $rows['weight']+1;//вес соседа снизу
$top = $rows['weight']-1;//вес соседа сверху

if($set=='top'){
mysql_query("UPDATE modules SET weight=weight+1 WHERE weight=".$top);//опустили соседа
mysql_query("UPDATE modules SET weight=weight-1 WHERE id=".$id);//сами поднялись
} else {
mysql_query("UPDATE modules SET weight=weight-1 WHERE weight=".$bot);//подняли соседа
mysql_query("UPDATE modules SET weight=weight+1 WHERE id=".$id);//сами опустились
}
//

$maxRows_mod = 10;
$pageNum_mod = 0;
if (isset($_GET['pageNum_mod'])) {
$pageNum_mod = $_GET['pageNum_mod'];
}
$startRow_mod = $pageNum_mod * $maxRows_mod;

mysql_select_db($database_MySql, $MySql);
$query_mod = "SELECT * FROM modules ORDER BY weight ASC";
$query_limit_mod = sprintf("%s LIMIT %d, %d", $query_mod, $startRow_mod, $maxRows_mod);
$mod = mysql_query($query_limit_mod, $MySql) or die(mysql_error());
$row_mod = mysql_fetch_assoc($mod);

if (isset($_GET['totalRows_mod'])) {
$totalRows_mod = $_GET['totalRows_mod'];
} else {
$all_mod = mysql_query($query_mod);
$totalRows_mod = mysql_num_rows($all_mod);
}
$totalPages_mod = ceil($totalRows_mod/$maxRows_mod)-1;

$queryString_mod = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_mod") == false &&
stristr($param, "totalRows_mod") == false) {
array_push($newParams, $param);
}
}

if (count($newParams) != 0) {
$queryString_mod = "&" . htmlentities(implode("&", $newParams));
}
}

$queryString_mod = sprintf("&totalRows_mod=%d%s", $totalRows_mod, $queryString_mod);
?>
<head>
</
head>
<
body>
<
table border="0" width="560" cellspacing="0" cellpadding="0">
<
tr>
<
td width="30">id</td>
<
td>Заголовок</td>
<
td width="50">Позиция</td>
<
td width="100">Сортировка</td>
<
td width="100">Маска</td>
<
td width="50">Действия</td>
</
tr>
<?php do { ?><tr>
<
td width="30"><?php echo $row_mod['id']; ?></td>
<
td>
<
a href="moduledit.php?recordID=<?php echo $row_mod['id']; ?>"><?php echo ucfirst($row_mod['name']); ?></a>
</
td>
<
td width="50">
<?php echo $row_mod['position']; ?>
</td>
<
td width="100">
<
a href="modules.php?set=top&id=<? echo $row_mod['id']; ?>"><img src="template/images/up.png" width="16" height="16" /></a> <?php echo $row_mod['weight']; ?> <a href="modules.php?set=bot&id=<? echo $row_mod['id']; ?>"><img src="template/images/down.png" width="16" height="16" /></a>
</
td>
<
td width="100">
<?php echo $row_mod['mask']; ?></td>
<
td width="50">
<
a href="modules.php?deleteID=<?php echo $row_mod['id']; ?>"><img src="template/images/b_drop.png"/ alt="Удалить"></a>  <a href="moduledit.php?recordID=<?php echo $row_mod['id']; ?>"><img src="template/images/b_edit.png"/ alt="Редактировать"></a></td>
</
tr><?php } while ($row_mod = mysql_fetch_assoc($mod)); ?>
<tr>
<
td colspan="3"> </td>
<
td colspan="3">Всего модулей:<?php echo $totalRows_mod ?></td>
</
tr>
</
table>
</
body>
</
html><?php
mysql_free_result($mod);
?>

Спустя 2 дня, 57 минут, 34 секунды (18.07.2010 - 21:05) Mr_Smitt написал(а):
unsure.gif Че никто ниче незнает?

Спустя 11 часов, 35 минут, 49 секунд (19.07.2010 - 08:41) twin написал(а):
Вот это место попробуй перевести на русский язык:
if($set=='top'){
mysql_query("UPDATE modules SET weight=weight+1 WHERE weight=".$top);//опустили соседа
mysql_query("UPDATE modules SET weight=weight-1 WHERE id=".$id);//сами поднялись
} else {
mysql_query("UPDATE modules SET weight=weight-1 WHERE weight=".$bot);//подняли соседа
mysql_query("UPDATE modules SET weight=weight+1 WHERE id=".$id);//сами опустились
}

и представь, что будет делать скрипт при обновлении страницы.

Спустя 2 дня, 12 часов, 40 секунд (21.07.2010 - 20:42) Mr_Smitt написал(а):
Тоесть при обновление выполняется else? Или я нетак понял
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.