Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    Ordinare Colonne da intestazione

    Ciao a tutti.
    Ho una tabella con intestazione fissa e corpo scorrevole e righe che si alternano di colore.
    Vorrei che cliccando sulle celle dell'intestazione i contenuti delle colonne vnissero ordinati in maniera Crescente o Decrescente.
    Mi potete dare una mano?
    Grazie.
    La tabella è ottenuta dal seguente file:

    visualizza.php
    Codice PHP:
    <?
    INCLUDE('connessione.php');

    $sql="SELECT * from materiale order by Codice_Materiale";
    // seleziona tutti i record della tabella

    $risultato_query=mysql_query($sql,$connessione);
    // controlla il risultato della query attraverso la funzione mysql_query

    $num_righe=mysql_num_rows($risultato_query);
    // restituisce il numero di record ottenuto dalla selezione

    echo"<div id=\"Layer1\" style=\"position:absolute; width:383px; height:50px; z-index:1; left: 104px; top: 40px;\">";
    echo
    "<table width=\"383\" border=\"0\">";
    echo
    " <tr bgcolor=\"#0000FF\">"

      echo
    "<td width=\"100\">[b]CODICE MATERIALE[/b]</td>";
      echo
    " <td width=\"283\">[b]DESCRIZIONE[/b]</td>";
      echo
    "</tr>";
      echo
    "</table>";
      echo
    "</div>";        

    echo
    "<div id=\"Layer2\" style=\"position:absolute; width:383px; height:250px; z-index:2; left: 104px; top: 88px; overflow: scroll;\">  ";
    echo
    "<table width=\"383\"  border=\"0\">";
     
     

    $i=0
     while(
    $riga=mysql_fetch_array($risultato_query)){
         
                
                 
    $CodiceMateriale=$riga["Codice_Materiale"];
                 
    $Descrizione=$riga["Descrizione"];
                

                if(
    is_int($i/2)){ 
    $color "#f00"
    }else{ 
    $color"#0f0"




     echo
    " <tr> ";
      echo
    " <td td width=\"100\" style=\"background:$color\">$CodiceMateriale </td>";
        echo
    "<td width=\"283\" style=\"background:$color\">$Descrizione</td>"
      echo
    "</tr>";
      
    $i++;


      }      

      echo
    " </table>";
      echo
    "</div>";

    ?>

  2. #2
    Fai delle intestazioni della tabelle dei link che rimandano alla stessa pagina passando delle variabili via GET.

    Potresti fare in questa maniera:

    Codice PHP:
    <?
    INCLUDE('connessione.php');

    if (isset(
    $_GET['x'])) {
    $campo $_GET['x'] == "Descrizione" "Descrizione" "Codice_Materiale";
    } else {
    $campo "Codice_Materiale";
    }
    if (isset(
    $_GET['sort'])) {
    $verso $_GET['sort'] == "desc" "DESC" "ASC";
    } else {
    $verso "ASC";
    }
    $sql="SELECT * from materiale order by {$campo} {$verso} ";
    // seleziona tutti i record della tabella

    $risultato_query=mysql_query($sql,$connessione);
    // controlla il risultato della query attraverso la funzione mysql_query

    $num_righe=mysql_num_rows($risultato_query);
    // restituisce il numero di record ottenuto dalla selezione

    ?>

    <div id="Layer1" style="position:absolute; width:383px; height:50px; z-index:1; left: 104px; top: 40px;">
    <table width="383" border="0">
    <tr bgcolor="#0000FF">

    <td width="100">[url="tuapagina.php?x=Codice_Materiale&sort="]">[b]CODICE MATERIALE[/b][/url]</td>
    <td width="283">[url="tuapagina.php?x=Descrizione&sort="]">[b]DESCRIZIONE[/b][/url]</td>
    </tr>
    </table>
    </div>    

    <div id="Layer2" style="position:absolute; width:383px; height:250px; z-index:2; left: 104px; top: 88px; overflow: scroll;">
    <table width="383"  border="0">

    <?

    $i
    =0;
    while(
    $riga=mysql_fetch_array($risultato_query)){
        
                
                 
    $CodiceMateriale=$riga["Codice_Materiale"];
                 
    $Descrizione=$riga["Descrizione"];
                

                if(
    is_int($i/2)){
    $color "#f00";
    }else{
    $color"#0f0";
    }



    echo
    " <tr> ";
      echo
    " <td td width=\"100\" style=\"background:$color\">$CodiceMateriale </td>";
        echo
    "<td width=\"283\" style=\"background:$color\">$Descrizione</td>";
      echo
    "</tr>";
      
    $i++;


      }      

      echo
    " </table>";
      echo
    "</div>";

    ?>
    In questo modo all'inizio della pagina verifichi le due variabili che sono state passate ed in base a quelle modifichi nella query se oridnare in ordine crescente e decrescente e se ti servisse in base al campo che clicchi cambia la tabella in base alla quale si ordina.

    Nella seconda parte del codice verifichi le "direzioni" dell'ordinamento attuale e in base a quello inverti la variabile.

    Dovrebbe funzionare l'ho scritto adesso così senza provarlo.


  3. #3
    Ciao.
    Prima di tutto grazie per avere risposto.
    Ho incollato brutalmente il codice da te modificato. Purtroppo non funziona e scombina le tabelle poste nei layer.
    Qualche suggerimeto?

    Quello che sto cercando di ottenere è una tabella con

    1. intestazioni,
    2. scroller per il corpo,
    3. righe di colore alternato
    4. ordinamento.

    Con quello postato all'inizio sono riuscito, anche se in maniera poco elegante graficamente ad ottenere soltanto i primi 3 punti.

  4. #4
    Codice PHP:
    <td width="100">[url="tuapagina.php?x=Codice_Materiale&sort="]">[b]CODICE MATERIALE[/b][/url]</td>
    <td width="
    283">[url="tuapagina.php?x=Descrizione&sort="]">[b]DESCRIZIONE[/b][/url]</td
    Modifica queste due righe con queste

    Codice PHP:
    <td width="100">[url="tuapagina.php?x=Codice_Materiale&sort=<?=$campo == 'Codice_Materiale' $sort 'asc'?>"][b]CODICE MATERIALE[/b][/url]</td>
    <td width="283">[url="tuapagina.php?x=Descrizione&sort=<?=$campo == 'Descrizione' $sort 'asc'?>"][b]DESCRIZIONE[/b][/url]</td>
    Ovviamente comunque se la pagina ha un foglio di stile dovresti modificare gli stili dei link a meno che già lo sono perchè di default non hanno bei colori.

    Fammi sapere.

  5. #5
    Niente da fare.
    L'intestazione, contenuta nella prima tabella, sfora dietro la seconda tabella, la quale però viene ridotta di larghezza.
    Suggerimenti?

    I colori sono presi cosi, tanto per...

  6. #6
    Originariamente inviato da 19pantarei75
    Niente da fare.
    L'intestazione, contenuta nella prima tabella, sfora dietro la seconda tabella, la quale però viene ridotta di larghezza.
    Suggerimenti?

    I colori sono presi cosi, tanto per...
    COme prima cosa controlla che quelle due righe comunque le hai modificate bene che dopo le hgo rimodificate pure io (vedi l'aggiornamento).

    Comunque ma cosa vedi? Cioè, errori PHP, del MySQL, i contenuti esatti ma la grafica no?
    Prima l'alternanza dei colori c'era? O alcune cose neanche prima funzionavano? Anche perchè io ho solo aggiunto, e modificato poco e niente, il grosso è come prima...

  7. #7
    Allora non mi dà errore di php o mysql. Funziona tutto. Ovvero i primi 3 punti che ho elencato prima.
    E' solo graficamente, quando abbiamo tentato di fare l'ordinamento delle colonne che sballa tutto.
    Praticamente l'intestazione prima era più larga, dopo l'ultima tua modifica più stretta. Ma sempre si metteva dietro il secondo layer contenente la seconda tabella.

    Ho modificato un pò il mio codice in modo da renderlo un pò meglio graficamente e pò più pulito da leggere.

    Ma ancora non sono riusciuto a fare l'ordinameto delle colonne, ovviamente cliccando sull'intestazione.
    questo è il nuovo file che realizza i primi 3 punti di cui sopra:

    visualizza2.php
    Codice PHP:
    INCLUDE('connessione.php');
    $sql="SELECT * from materiale order by Codice_Materiale";
    // seleziona tutti i record della tabella

    $risultato_query=mysql_query($sql,$connessione);
    // controlla il risultato della query attraverso la funzione mysql_query

    $num_righe=mysql_num_rows($risultato_query);
    // restituisce il numero di record ottenuto dalla selezione


    echo"<table width=\"584\" border=\"0\"cellspacing=\"0\" cellpadding=\"0\">";
      echo
    "<tr> ";
        echo
    "<td width=\"220\" bgcolor=\"#f5f5f5\">[b]CODICE MATERIALE[/b]</td>";
       echo
    " <td  width=\"352\" bgcolor=\"#f5f5f5\">[b]DESCRIZIONE[/b]</td>";
     echo
    " </tr>";
     echo
    " <tr>"

      echo
    "  <td colspan=\"2\"><div id=\"Layer1\" style=\" height:7em;  overflow: auto;\">"
           echo
    " <table width=\"584\" id=\"table-1\">";

    $i=0;
             while(
    $riga=mysql_fetch_array($risultato_query)){
         
                
                 
    $CodiceMateriale=$riga["Codice_Materiale"];
                 
    $Descrizione=$riga["Descrizione"];

        if(
    is_int($i/2)){ 
    $color "#c0c0c0"
    }else{ 
    $color"#ffffff"



     echo
    " <tr> ";
      echo
    " <td width=\"230\" style=\"background:$color\">$CodiceMateriale </td>";
        echo
    "<td width=\"342\" style=\"background:$color\">$Descrizione</td>"
      echo
    "</tr>";
      
    $i++;

     }
      echo
    "</table>";
        
        echo
    "</div></td>";
      echo
    "</tr>";
    echo
    "</table>";

    ?> 
    Aiuto!!!!

  8. #8
    Codice PHP:
    <?php

    /**
     * @author Paolo
     * @copyright 2008
     */

    INCLUDE('connessione.php');

    if (isset(
    $_GET['x'])) {
    $campo $_GET['x'] == "Descrizione" "Descrizione" "Codice_Materiale";
    } else {
    $campo "Codice_Materiale";
    }
    if (isset(
    $_GET['sort'])) {
    $verso $_GET['sort'] == "desc" "DESC" "ASC";
    } else {
    $verso "ASC";
    }
    $sql="SELECT * from materiale order by {$campo} {$verso} "
    // seleziona tutti i record della tabella

    $risultato_query=mysql_query($sql,$connessione);
    // controlla il risultato della query attraverso la funzione mysql_query

    $num_righe=mysql_num_rows($risultato_query);
    // restituisce il numero di record ottenuto dalla selezione

    if ($campo == "Codice_Materiale") {
        
    $cm = ($sort == "asc") ? "desc" "asc";
        
    $d "asc";
    } else {
        
    $cm "asc";
        
    $d = ($sort == "asc") ? "desc" "asc";
    }

    echo
    "<table width=\"584\" border=\"0\"cellspacing=\"0\" cellpadding=\"0\">";
      echo
    "<tr> ";
        echo
    "<td width=\"220\" bgcolor=\"#f5f5f5\">[b][url='tuapagina.php?x=Codice_Materiale&sort={$cm}']CODICE MATERIALE[/url][/b]</td>";
       echo
    " <td  width=\"352\" bgcolor=\"#f5f5f5\">[b][url='tuapagina.php?x=Descrizione&sort={$d}']DESCRIZIONE[/url][/b]</td>";
    echo
    " </tr>";
    echo
    " <tr>";

      echo
    "  <td colspan=\"2\"><div id=\"Layer1\" style=\" height:7em;  overflow: auto;\">";
           echo
    " <table width=\"584\" id=\"table-1\">";

    $i=0;
             while(
    $riga=mysql_fetch_array($risultato_query)){
        
                
                 
    $CodiceMateriale=$riga["Codice_Materiale"];
                 
    $Descrizione=$riga["Descrizione"];

        if(
    is_int($i/2)){
    $color "#c0c0c0";
    }else{
    $color"#ffffff";
    }


    echo
    " <tr> ";
      echo
    " <td width=\"230\" style=\"background:$color\">$CodiceMateriale </td>";
        echo
    "<td width=\"342\" style=\"background:$color\">$Descrizione</td>";
      echo
    "</tr>";
      
    $i++;

    }
      echo
    "</table>";
        
        echo
    "</div></td>";
      echo
    "</tr>";
    echo
    "</table>";

    ?>

    ?>
    Prova così... :master:

  9. #9
    Niente.
    Graficamente ora rimane intatto.
    Però cliccando va a vuoto, indirizzando in una pagina dove dice impossibile trovare la pagina

    nella barra degli indirizzi c'è questo
    http://127.0.0.1/Autoricambi/tuapagi...zione&sort=asc
    come si può fare?

  10. #10
    Dove ho scritto tuapagina.php devi mettere la pagina attuale...

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.