Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    query ordinamento record

    Cerco di non fare più pasticci.

    Come da discussioni precedenti.

    Il mio problema è questo:

    Devo ordinare i record spostandoli su è giù di una posizione.

    Ho fatto delle query che funzionano solamente se i record sono progressivi o meglio non ho ancora eliminato dei record.

    Come gestireste l'ordinamento.

    Vi posto il link del programma test che stò realizzando:

    http://www.mekacom.it/ADMINHUDSON/gest_articoli.php

    Grazie e scusate il "disturbo precendente"
    Ma sarà..... ma io ci credo poo....

  2. #2
    metti un'altro campo int nel database che indica la tabulazione delgi elementi , è poi fai order by campoditabulazione, anche se capita una cosa di queste

    8
    5
    1
    9

    i record verranno ordinati

    1
    5
    8
    9
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  3. #3

    si

    quello è già stato fatto ovviamente.
    è solo il problema dell'amministratore che deve spostare su e giù i record e quindi si devono riordinare.

    Come vedi da link.


    Ma penso di essere alla soluzione, implemento e poi posto la funzione.
    Ma sarà..... ma io ci credo poo....

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    premetto che hai un campo tipo quello indicato da bonaprogram e che i valori hanno un incremento di 10 e che per ogni riga hai un id di creazione independente dalla posizione della riga nella pagina.

    Quando sposti sù togli 11 al valore della riga.
    Quando sposti giù aggiungi 11.
    Poi fai il richiamo ad una pagina (trattamento batch nel senso che nessun valore viene inviato al browser) che rinumera il campo e torni alla pagina principale con un header.

    codice:
    Situazione iniziale :
             Pos  Creazione
    Riga 1 - 10       1
    Riga 2 - 20       2
    Riga 3 - 30       3
    
    Sposti sù la Riga 3....
             Pos  Creazione
    Riga 1 - 10       1
    Riga 3 - 19       3
    Riga 2 - 20       2
    
    Fai la rinumerazione a partire dalle posizioni utilizzando l'id di creazione e ottieni
             Pos  Creazione
    Riga 1 - 10       1
    Riga 3 - 20       3
    Riga 2 - 30       2
    codice:
    ... collegamento al db
    $num   = 10;
    $query = "select idcreazione from tabella order by posizione";
    $res   = mysql_query($query);
    while (list($idcreazione) = mysql_fetch_array($res)) {
     $query2 = "update tabella set posizione = '$num' where idcreazione = '$idcreazione'";
     $res2   = mysql_query($query2);
     $num    = $num + 10;
    }
    header('location:'.$pagina_di_ritorno);
    exit;

  5. #5

    ciao

    ho sempre usato un campo ordine_id (vedi img) per fare l'ordinamento.
    Avevo fatto anche la funzione di aggoirnamento di posizioni.

    Ma sono andato in tilt quando:

    Vedi img:
    supponiamo che la id_categoria 4 e 5 vengono eliminate.
    Quando effettuo il riordino è qui che sono inceppato?

    Da considerare anche il parent_id
    Ma sarà..... ma io ci credo poo....

  6. #6

    allora

    mi sono fatto questa funzione (di volata,devo rifinirla e testarla) per ottenere ciò che volevo

    sembra essere tutto apposto (per ora solo lo spostamento sù).
    Oggi è festa

    Booo speriamo bene

    //DA SPOSTARE IN FUNZIONI GENERALI
    function riordino_cat ($move, $id, $oid, $parent_id) {
    global $db;
    $preserve_oid = '';
    $preserve_idc = '';
    switch ($move) {
    //id prima
    case 'mup':
    $query_ordine = $db->sql_query("SELECT id_categoria, ordine_id FROM ".TABLE_CAT." WHERE ordine_id < ".$oid." AND parent_id = ".$parent_id." ORDER BY ordine_id DESC LIMIT 0,1");
    $num = $db->sql_numrows($query_ordine);
    if ($num) {
    $mod_id = $db->sql_fetchrow($query_ordine);
    //$preserve_idc = $mod_id['id_categoria'];
    $preserve_oid = $mod_id['ordine_id'];
    $query_upd = $db->sql_query("UPDATE ".TABLE_CAT." SET ordine_id = ".$oid." WHERE id_categoria = ".$mod_id['id_categoria']." AND parent_id = ".$parent_id."");
    $query_upd2= $db->sql_query("UPDATE ".TABLE_CAT." SET ordine_id = ".$preserve_oid." WHERE id_categoria = ".$id." AND parent_id = ".$parent_id."");
    }
    break;
    //id dopo
    case 'mdw':
    //DA FARE
    break;
    }
    }
    Ma sarà..... ma io ci credo poo....

  7. #7

    completando

    almeno sembra

    function riordino_cat ($move, $id, $oid, $parent_id) {
    global $db;
    switch ($move) {
    //id prima
    case 'mup':
    $query_ordine = $db->sql_query("SELECT id_categoria, ordine_id FROM ".TABLE_CAT." WHERE ordine_id < ".$oid." AND parent_id = ".$parent_id." ORDER BY ordine_id DESC LIMIT 0,1");
    $num = $db->sql_numrows($query_ordine);
    if ($num) {
    $mod_id = $db->sql_fetchrow($query_ordine);
    $db->sql_query("BEGIN");
    $query_upd = $db->sql_query("UPDATE ".TABLE_CAT." SET ordine_id = ".$oid." WHERE id_categoria = ".$mod_id['id_categoria']." AND parent_id = ".$parent_id."");
    $query_upd2= $db->sql_query("UPDATE ".TABLE_CAT." SET ordine_id = ".$mod_id['ordine_id']." WHERE id_categoria = ".$id." AND parent_id = ".$parent_id."");
    if (!$query_upd || !$query_upd2) {
    $db->sql_query("ROLLBACK");
    } else {
    $db->sql_query("COMMIT");
    }
    }
    break;
    //id dopo
    case 'mdw':
    $query_ordine = $db->sql_query("SELECT id_categoria, ordine_id FROM ".TABLE_CAT." WHERE ordine_id > ".$oid." AND parent_id = ".$parent_id." ORDER BY ordine_id ASC LIMIT 0,1");
    $num = $db->sql_numrows($query_ordine);
    if ($num) {
    $mod_id = $db->sql_fetchrow($query_ordine);
    $db->sql_query("BEGIN");
    $query_upd = $db->sql_query("UPDATE ".TABLE_CAT." SET ordine_id = ".$oid." WHERE id_categoria = ".$mod_id['id_categoria']." AND parent_id = ".$parent_id."");
    $query_upd2= $db->sql_query("UPDATE ".TABLE_CAT." SET ordine_id = ".$mod_id['ordine_id']." WHERE id_categoria = ".$id." AND parent_id = ".$parent_id."");
    if (!$query_upd || !$query_upd2) {
    $db->sql_query("ROLLBACK");
    } else {
    $db->sql_query("COMMIT");
    }
    }
    break;
    }
    }

    Ciao
    Ma sarà..... ma io ci credo poo....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.