Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente bannato L'avatar di 3com_mr
    Registrato dal
    Jan 2006
    Messaggi
    130

    Ordinare i dati non in ordine alfabetico

    Salve,

    in questo script (che visualizza una tabella all'interno di un CMS) i dati vengono presentati in ordine alfabetico, io invece vorrei che si visualizzassero nell'ordine di inserimento in amministrazione. COme fare?

    Codice PHP:
    <?php

    /*
    * Table Manager (GeDa) - Mambo/Joomla component
    * Copyright (C) 2005 by IW1QLH
    * License [url]http://www.gnu.org/copyleft/gpl.html[/url] GNU/GPL
    * Official website: [url]http://www.iw1qlh.net/projects/table-manager[/url]
    */

    // ensure this file is being included by a parent file
    defined'_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

    function 
    Geda_get_data($id_table$sort_col$limit, &$limitstart, &$total) {
        global 
    $database;

        
    // get the total number of records
        
    $database->setQuery('DROP TABLE IF EXISTS #__geda_tmp_id_row');
        
    $database->query();
        
    $database->setQuery("CREATE TEMPORARY TABLE #__geda_tmp_id_row (`id_row` int(11) NOT NULL)");
        
    $database->query();
        
    $database->setQuery("INSERT INTO #__geda_tmp_id_row SELECT DISTINCT td_row FROM #__geda_data where id_table = $id_table");
        
    $database->query();
        
    $database->setQuery('SELECT COUNT(*) AS c FROM #__geda_tmp_id_row');
        
    $total $database->loadResult();

        
    $database->setQuery('DROP TABLE IF EXISTS #__geda_tmp_value');
        
    $database->query();
        
    $database->setQuery("CREATE TEMPORARY TABLE #__geda_tmp_value (`id_row` int(11) NOT NULL,   `td_numeric` float, `td_char` varchar(255), `td_date` datetime)");
        
    $database->query();
        
    $database->setQuery("INSERT INTO #__geda_tmp_value SELECT td_row, td_numeric, td_char, td_date FROM #__geda_data where id_table = $id_table and id_column = " abs($sort_col));
        
    $database->query();

        
    $database->setQuery("SELECT cn_type FROM #__geda_columns WHERE id_table = $id_table AND id = " abs($sort_col));
        
    $cn_type $database->loadResult();
        switch (
    $cn_type) {
            case 
    'C':
                
    $field 'td_char';
                break;
            case 
    'N':
                
    $field 'td_numeric';
                break;
            case 
    'D':
                
    $field 'td_date';
                break;
            default:
                
    $field 'td_numeric, td_char, td_date';
        }

        if ( 
    $total <= $limit $limitstart 0;

        
    $database->setQuery('DROP TABLE IF EXISTS #__geda_tmp_id_sort');
        
    $database->query();
        
    $database->setQuery("CREATE TEMPORARY TABLE #__geda_tmp_id_sort (`ordering` int(11) NOT NULL auto_increment, `id_row` int(11) NOT NULL, PRIMARY KEY  (`ordering`))");
        
    $database->query();
        
    $database->setQuery("INSERT INTO #__geda_tmp_id_sort SELECT 0, a.id_row FROM #__geda_tmp_id_row AS a LEFT JOIN #__geda_tmp_value AS b ON b.id_row = a.id_row ORDER BY $field " . (($sort_col 0) ? 'DESC' 'ASC') . " LIMIT $limitstart$limit");
        
    $database->query();

        
    $database->setQuery("SELECT b.td_row, b.id_column, b.td_char, b.td_numeric, UNIX_TIMESTAMP(b.td_date) AS td_date, c.cn_type FROM #__geda_tmp_id_sort AS a, #__geda_data AS b, #__geda_columns AS c WHERE b.td_row = a.id_row AND b.id_column = c.id AND b.id_table = $id_table AND c.id_table = $id_table ORDER BY a.ordering, id_column");
        
    $datas $database->loadObjectList();

        
    $rowid = -1;
        
    $rows = array();

        foreach (
    $datas as $data) {

            if (
    $rowid != $data->td_row) {
                
    $rowid $data->td_row;
                if (
    $row) {
                    
    $rows[] = $row;
                }
                
    $row = array();
                
    $row['rowid'] = $rowid;
            }
            
    $value '-';
            switch (
    $data->cn_type) {
                case 
    'C':
                    
    $value $data->td_char;
                    break;
                case 
    'N':
                    
    $value $data->td_numeric;
                    break;
                case 
    'D':
                    
    $value $data->td_date;
                    break;
            }
            
    $row[$data->id_column] = $value;
        }
        if (
    $row)
            
    $rows[] = $row;

        
    // drop temporary tables
        
    $database->setQuery('DROP TABLE IF EXISTS #__geda_tmp_id_row');
        
    $database->query();
        
    $database->setQuery('DROP TABLE IF EXISTS #__geda_tmp_value');
        
    $database->query();
        
    $database->setQuery('DROP TABLE IF EXISTS #__geda_tmp_id_sort');
        
    $database->query();

        return 
    $rows;
    }

    function 
    Geda_view($table) {
        global 
    $database$mosConfig_list_limit;

        if (!
    $table)
            return 
    '<font color="#FF0000">Table manager error: you must insert table=[i]tablename[/i] in the parameters !</font>
    '
    ;

        
    session_start();

        if (
    $sort_col mosGetParam$_REQUEST$table 'order')) {
            
    $_SESSION[$table 'order'] = $sort_col;
        } else {
            
    $sort_col $_SESSION[$table 'order'];
        }

        
    // get the table name
        
    $database->setQuery"SELECT id, tn_description FROM #__geda_tables where tn_name = '$table'" );
        if (!
    $tableData $database->loadRow())
            return 
    "<font color='#FF0000'>Table-manager error: $table isn't a valid table name !</font>
    "
    ;
        
    $id_table $tableData[0];
        
    $tablename $tableData[1];

        
    // get the columns name
        
    $database->setQuery"SELECT id, cn_description, cn_type, cn_format, published FROM #__geda_columns where id_table = $id_table ORDER BY ordering" );
        
    $columns $database->loadObjectList();

        if ((!
    $sort_col) && ($columns[0]->id))
            
    $sort_col $columns[0]->id;

        
    $limit         intvalmosGetParam$_REQUEST'limit''' ) );
        
    $limitstart intvalmosGetParam$_REQUEST'limitstart') );
        
    $limit $limit $limit $mosConfig_list_limit ;
        
    $total 0;

        
    // get datas
        
    $rows Geda_get_data($id_table$sort_col$limit$limitstart$total);
        
        
    mosCache::cleanCache();

        require_once( 
    $GLOBALS['mosConfig_absolute_path'] . '/includes/pageNavigation.php' );
        
    $pageNav = new mosPageNav$total$limitstart$limit );

        return 
    HTML_Geda_view::show($rows$pageNav$table$tablename$columns$sort_col);

    }

    class 
    HTML_Geda_view {

        function 
    show($rows$pageNav$table$tablename$columns$sort_col) {

            
    $html  "\n";
            
    $html .= "\n\n\n";
            
    $html .= "\n<form method='POST' name='" $table "Form'>";
            
    $html .= "\n<input type='hidden' name='" $table "order' value=$sort_col>";
            
    $html .= '<table width="100%" cellpadding="3" cellspacing="5" border="0" align="center">';
            
    $html .= "\n<tr>";
            
    $html .= "<td colspan=" count($columns) . ' class="componentheading"></td>';
            
    $html .= '</tr>';

            
    $html .= "\n<tr>";
            foreach (
    $columns as $col) {
                
    $html .= '<td class="sectiontableheader">[b]' . (($col->id == abs($sort_col)) ? '[b]' '') . $col->cn_description . (($col->id == abs($sort_col)) ? '' '[/b]') . '[/b]';
                
    //$html .= '[url="' . $url . '&gedaorder=' . $col->id . '"]»[/url]</td>';
                
    $html .= '[url="javascript:document.' $table 'Form.' $table 'order.value=' . (($col->id == abs($sort_col)) ? -$sort_col $col->id) . ';document.' $table 'Form.submit();"]»[/url]</td>';

            }
            
    $html .= '</tr>';

            
    $k 0;
            foreach (
    $rows as $row) {
                
    $html .= "\n<tr class='sectiontableentry" . (($k 2) + 1) ."'>";
                foreach (
    $columns as $col) {
                    
    $align 'left';
                    
    $value $row[$col->id];
                    
    $format $col->cn_format;
                      switch (
    $col->cn_type) {
                         case 
    'C':
                            
    $align 'left';
                            if (
    $value) {
                                switch (
    $format) {
                                    case 
    'A':       // ANCHOR
                                        
    $value '[url="' $value '"]' $value '[/url]';
                                        break;
                                    case 
    'M':       // MAILTO
                                        
    $value '[email="' $value '"]' $value '[/email]';
                                        break;
                                    case 
    'IMG':       // IMAGE
                                        
    $value '[img]' $value '[/img]';
                                        break;
                                    case 
    'L':       // LOWER
                                        
    $value strtolower($value);
                                        break;
                                    case 
    'U':       // UPPER
                                        
    $value strtoupper($value);
                                        break;
                                }
                            }
                            break;
                        case 
    'N':
                            
    $align 'right';
                            if (
    $value && $format) {
                                
    $params explode("/"$format);
                                if (!
    $params[1]) $params[1] = '.';
                                if (!
    $params[2]) $params[2] = ',';
                                
    $value number_format($value$params[0], $params[1], $params[2]);
                            }
                            break;
                        case 
    'D':
                            
    $align 'left';
                            if (
    $value$value date(!$format 'Y-m-d H:i:s' $format$value);
                            break;
                       }
                       
    $value $value $value '';
                       
    $html .= "<td align='$align'>$value</td>";
                }
                
    $html .= '</tr>';
                
    $k++;
            }

            
    // [url]http://www.domain.com/[/url]$option/$task/$sectionid/$id/$Itemid/$limit/$limitstart

            
    $link "index.php?"
            
    "option=" mosGetParam($_REQUEST'option''' ) . "&amp;";
            if (
    $_REQUEST['task'])
                
    $link .= "task="   mosGetParam($_REQUEST'task') . "&amp;";
            if (
    $_REQUEST['sectionid'])
                
    $link .= "sectionid=" mosGetParam($_REQUEST'sectionid') . "&amp;";
            if (
    $_REQUEST['id'])
                
    $link .= "id=" mosGetParam($_REQUEST'id') . "&amp;";
            
    $link .= "Itemid=" mosGetParam($_REQUEST'Itemid''' );

            
    $html .= '<tr>';
            
    $html .= '<td colspan=' count($columns) . '"></td>';
            
    $html .= '</tr>';
            
    $html .= '<tr>';
            
    //$html .= '<td align="center" colspan=' . count($columns) . ' class="sectiontablefooter">' . $pageNav->writePagesLinks($link) . '</th>';
            
    $html .= '</tr>';
            
    $html .= '<tr>';
        
    //    $html .= '<td align="center" colspan=' . count($columns) .'>' . _PN_DISPLAY_NR . '' . $pageNav->getLimitBox($link) . $pageNav->writePagesCounter() . '</td>';
            
    $html .= '</tr>';
            
    $html .= '</table>';
            
    $html .= '</form>';
            
    $html .= "\n";

            return 
    $html;

        }
    }
    ?>

  2. #2
    Utente di HTML.it L'avatar di Graboid
    Registrato dal
    Oct 2004
    Messaggi
    619
    da qualche parte in una query dovrebbe esserci un :

    ORDER BY nome_campo ASC

    che tu devi sostituire con

    ORDER BY nome_campo_che_fa_da_id ASC

  3. #3
    Utente bannato L'avatar di 3com_mr
    Registrato dal
    Jan 2006
    Messaggi
    130
    Originariamente inviato da Graboid
    da qualche parte in una query dovrebbe esserci un :

    ORDER BY nome_campo ASC

    che tu devi sostituire con

    ORDER BY nome_campo_che_fa_da_id ASC
    In questo script?

  4. #4
    Utente di HTML.it L'avatar di Graboid
    Registrato dal
    Oct 2004
    Messaggi
    619
    Se e' questo lo script che ordina la tabella direi proprio che e' in questo script

  5. #5
    Utente bannato L'avatar di 3com_mr
    Registrato dal
    Jan 2006
    Messaggi
    130
    Originariamente inviato da Graboid
    Se e' questo lo script che ordina la tabella direi proprio che e' in questo script
    Forse qui....

    Codice PHP:
        $database->setQuery("SELECT cn_type FROM #__geda_columns WHERE id_table = $id_table AND id = " abs($sort_col));
        
    $cn_type $database->loadResult();
        switch (
    $cn_type) {
            case 
    'C':
                
    $field 'td_char';
                break;
            case 
    'N':
                
    $field 'td_numeric';
                break;
            case 
    'D':
                
    $field 'td_date';
                break;
            default:
                
    $field 'td_date';
        }

        if ( 
    $total <= $limit $limitstart 0;

        
    $database->setQuery('DROP TABLE IF EXISTS #__geda_tmp_id_sort');
        
    $database->query();
        
    $database->setQuery("CREATE TEMPORARY TABLE #__geda_tmp_id_sort (`ordering` int(11) NOT NULL auto_increment, `id_row` int(11) NOT NULL, PRIMARY KEY  (`ordering`))");
        
    $database->query();
        
    $database->setQuery("INSERT INTO #__geda_tmp_id_sort SELECT 0, a.id_row FROM #__geda_tmp_id_row AS a LEFT JOIN #__geda_tmp_value AS b ON b.id_row = a.id_row ORDER BY $field " . (($sort_col 0) ? 'DESC' 'ASC') . " LIMIT $limitstart$limit");
        
    $database->query(); 

  6. #6
    Utente di HTML.it L'avatar di Graboid
    Registrato dal
    Oct 2004
    Messaggi
    619
    cerca una query che inizia con SELECT e finisce con ORDER BY.

    Io non so su che campo di quale tabella tu voglia l'ordinamento quindi dai un occhio alle query che agiscono sulla tabella che ti interessa

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 © 2024 vBulletin Solutions, Inc. All rights reserved.