Tengo una duda, que más que duda siento es error de lógica:
Tengo una tabla "banner":
Código:
mysql> describe banner;
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| id_banner | int(10) unsigned | NO | PRI | NULL | auto_increment |
| nombre | varchar(45) | YES | | NULL | |
| archivo | varchar(200) | YES | | NULL | |
| thumbnail | varchar(200) | YES | | NULL | |
| ventana_nueva | tinyint(1) | YES | | NULL | |
| url | varchar(255) | YES | | NULL | |
| activo | tinyint(1) | YES | | 1 | |
| borrado | tinyint(1) | YES | | 0 | |
| altura | int(11) | NO | | | |
| anchura | int(11) | NO | | | |
| defront | tinyint(1) | NO | | | |
| slot | int(10) unsigned | NO | UNI | | |
+---------------+------------------+------+-----+---------+----------------+
12 rows in set (0.00 sec)
En donde verán un campo llamado slot(int) que sirve para almacenar de 1 a N (sin que se repitan), esto se hace para ordenar de forma visual mis registros. La duda radica es cómo hacer un manager para controlar el orden.
Lo que hice fue hacer una lista con un par de flechas por cada registro, si es el slot==1 no pongo la flecha hacia "arriba", y de igual forma si es el último slot no pongo la que apunta hacia abajo.
La funcionalidad de "subir" ya quedó OK, sin embargo la bajada nop..
Los parámetros que mando por cada registro en el link son:
Código:
order=down&id_banner=1&slot=1&idnextslot=2
Donde id_banner es el ID del registro, el slot es el número de slot que tiene y el idnextslot es el slot siguiente.
En mis querys tengo lo siguiente:
Código
//--------------------------------------------------------------+ // Case Down | //--------------------------------------------------------------+ if($var['order']=="down"){ //--------------------------------------------------------------+ // First get the next Number ID slot and ID_banner | //--------------------------------------------------------------+ $DBQuery->attrib['query'] = "SELECT id_banner, slot FROM `banner` WHERE `id_banner` ='".$var['idnextslot']."'"; //echo $DBQuery->attrib['query']."<br>"; $getNextSlot = $DBQuery->RunQuery(); //--------------------------------------------------------------+ // Update the original entry with the new id_slot | //--------------------------------------------------------------+ $DBQuery->attrib['query'] = "UPDATE `banner` SET `slot` = '".$var['idnextslot']."' WHERE `id_banner` ='".$var['id_banner']."'"; //echo $DBQuery->attrib['query']."<br>"; $downSlot=$DBQuery->RunQuery(); //--------------------------------------------------------------+ // Update the entry target with the old slot | //--------------------------------------------------------------+ $DBQuery->attrib['query'] = "UPDATE `banner` SET `slot` = '".$var['slot']."' WHERE `id_banner` ='".$getNextSlot[0]['id_banner']."'"; //echo $DBQuery->attrib['query']."<br>"; $downSlot=$DBQuery->RunQuery(); }
Simplemente no funciona.. me actualiza los registros mal , me pone slot's elevados y a veces menores. A ver si me podeis echar un cable.. gracias