Помогите разобраться с кодом

artemacox
На сайте с 18.01.2010
Offline
89
760

Есть код - он добавляет блоки на страницу, но дело в том что новый (созданный блок) он двигает вниз делая его последним, как сделать чтобы было наоборот, чтобы старые двигались в конец.

function sc_catalog_add_item( $title, $catch, $image, $text, $order = 0 ) {
global $wpdb;
if ( $order == 0 ) {
$query = $wpdb->prepare( "SELECT max(disp_order) FROM "
. _sc_catalog_table() );
$order = $wpdb->get_var( $query, 0, 0 );
if ( $order == 0 ) {
$order = 0;
} else {
$order++;
}
}
$rows_affected = $wpdb->insert( _sc_catalog_table(),
array( 'title' => $title,
'image' => $image,
'catch' => $catch,
'text' => $text,
'disp_order' => $order ) );
if ( $rows_affected == 0 ) {
return false;
}
// Get inserted id
$query = $wpdb->prepare( "SELECT * FROM " . _sc_catalog_table() . " WHERE "
. " title = %s AND image = %s AND "
. "catch = %s AND text = %s AND disp_order = %d "
. "ORDER BY id DESC", $title, $image,
$catch, $text, $order );
$row = $wpdb->get_row( $query, ARRAY_A );
return $row;
}

function sc_catalog_edit_item ( $id, $title, $catch, $image, $text, $order ) {
global $wpdb;
$rows_affected = $wpdb->update( _sc_catalog_table(),
array( 'title' => $title,
'image' => $image,
'catch' => $catch,
'text' => $text,
'disp_order' => $order ),
array( 'id' => $id ) );
if ( $rows_affected == 0 ) {
// Check if the object is the same as in database
$prev_item = sc_catalog_get_item( $id );
if ( $prev_item['title'] == $title
&& $prev_item['image'] == $image
&& $prev_item['catch'] == $catch
&& $prev_item['text'] == $text
&& $prev_item['disp_order'] == $order ) {
return true;
}
}
return $rows_affected > 0;
}

function sc_catalog_delete_item ( $id ) {
global $wpdb;
$item = sc_catalog_get_item( $id );
if ( ! $item ) {
return false;
}
$query = $wpdb->prepare( "DELETE FROM " . _sc_catalog_table()
. " WHERE id = %d", $id );
$rows_affected = $wpdb->query($query);
return $rows_affected > 0;
}

function sc_catalog_get_item( $id ) {
global $wpdb;
$query = $wpdb->prepare( "SELECT * FROM " . _sc_catalog_table()
. " WHERE id = %d", $id );
$row = $wpdb->get_row( $query, ARRAY_A );
return $row;
}

function sc_catalog_get_all() {
global $wpdb;
$query = $wpdb->prepare( "SELECT * FROM " . _sc_catalog_table()
. " ORDER BY disp_order" );
$rows = $wpdb->get_results( $query, ARRAY_A );
return $rows;
}

function sc_catalog_move_up( $id ) {
global $wpdb;
$item = sc_catalog_get_item( $id );
if ( ! $item ) {
return false;
}
// Move down previous item
$prev_order_query = $wpdb->prepare( "SELECT max(disp_order) FROM "
. _sc_catalog_table() . " WHERE "
. "disp_order < %d",
$item['disp_order'] );
$prev_order = $wpdb->get_var( $prev_order_query, 0, 0);
if ( $prev_order !== NULL ) {
// Move up previous item
$wpdb->query( $wpdb->prepare( "UPDATE " . _sc_catalog_table() . " SET "
. "disp_order = %d WHERE disp_order = %d",
$prev_order + 1, $prev_order ) );
// Move down item
$wpdb->query( $wpdb->prepare( "UPDATE " . _sc_catalog_table() . " SET "
. "disp_order = %d WHERE id = %d",
$prev_order, $id ) );
} else {
return false; // selected item is already the first
}
return true;
}

function sc_catalog_move_down( $id ) {
global $wpdb;
$item = sc_catalog_get_item( $id );
if ( ! $item ) {
return false;
}
// Move up previous item
$next_order_query = $wpdb->prepare( "SELECT max(disp_order) FROM "
. _sc_catalog_table() . " WHERE "
. "disp_order > %d",
$item['disp_order'] );
$next_order = $wpdb->get_var( $next_order_query, 0, 0);
if ( $next_order !== NULL ) {
// Move down next item
$wpdb->query( $wpdb->prepare( "UPDATE " . _sc_catalog_table() . " SET "
. "disp_order = %d WHERE disp_order = %d",
$next_order - 1, $next_order ) );
// Move down item
$wpdb->query( $wpdb->prepare( "UPDATE " . _sc_catalog_table() . " SET "
. "disp_order = %d WHERE id = %d",
$next_order, $id ) );
} else {
return false; // selected item is already the last
}
return true;
}
?>


---------- Добавлено 23.03.2012 в 19:13 ----------

artemacox
На сайте с 18.01.2010
Offline
89
#1

готов заплатить

ДП
На сайте с 23.11.2009
Offline
203
#2


function sc_catalog_get_all() {
global $wpdb;
$query = $wpdb->prepare( "SELECT * FROM " . _sc_catalog_table()
. " ORDER BY disp_order DESC" );
$rows = $wpdb->get_results( $query, ARRAY_A );
return $rows;
}

Можно вот таким костыльком: ORDER BY disp_order DESC

Т.е. у вас блоки будут выводиться в обратном порядке просто.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий