Prendo spunto per iniziare questa nuova discussione da una precedente dove TheMastion aveva aiutato un'altro utente a realizzare una cosa così
http://javascript.html.it/tutorial/e...25/esempio.htm
Ossia i titoli delle colonne che permettono l'ordinamento ascendende o discendente.
Prima di inserire il codice di TheMastion dentro il mio (super incasinatissimo codice) volevo un vostro aiuto e supporto.
Per iniziare vi posto il codice di TheMastion
Codice PHP:
<?php
INCLUDE('connessione.php');
if (isset($_GET['field']))
{
$campo = $_GET['field'] == "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
$verso = ($verso == "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?field=Codice_Materiale&sort={$verso}']CODICE MATERIALE[/url][/b]</td>";
echo" <td width=\"352\" bgcolor=\"#f5f5f5\">[b][url='tuapagina.php?field=Descrizione&sort={$verso}']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>";
?>
Il codice mi è sostanzialmente chiaro (forse è un parolone), ossia io mi passo tramite get le variabile per l'order by nella query, e in pratica (e qui viene il problema) io mi ricarico la mia pagina di ricerca, ossia se ho capito bene la pagina di ricerca è unica (nel caso tuapagina.php)
Ora dove è il mio problema, la query che faccio io è un poco più
complicata e riceve le informazioni su cui ricercare da POST attraverso un form. Per essere più chiaro io ho la pagina di ricerca ricerca.php dove ho solamente il form, che (tramite campi e checkbox) passa tramite POST i valori delle variabili. Nella pagina ricerca1.php il codice preleva le variabili (si fà i suoi controlli) e poi va a fare una query simile a questa
Codice PHP:
if (isset($array_prog1))
{
if ($lav == '0')
{
$query = "SELECT lavori.NOME, requisiti.IMPORTO_GLOBALE, requisiti.IA, requisiti.IB, requisiti.IC, requisiti.ID, requisiti.IE, requisiti.IF, requisiti.IG, requisiti.IIIA, requisiti.IIIB, requisiti.IIIC, requisiti.VIA, requisiti.VIB, requisiti.VIII FROM lavori INNER JOIN requisiti ON lavori.ID = requisiti.ID_REQUISITI LEFT JOIN date ON lavori.ID = date.ID_DATE WHERE lavori.PRESTAZIONI_NORMATIVA LIKE '$cprog1' OR '$cprog2' OR '$cprog3' OR '$cprog4' OR '$cprog5' OR '$cprog6'";
$risultato = mysqli_query($connessione,$query) or die("Query fallita");
while ($linea = mysqli_fetch_array($risultato, MYSQLI_ASSOC))
{
// adesso controllo le date lavoro per lavoro che mi viene passato dal ciclo while
foreach ($array_unico as $array)
{
// controllo che non debba fare solo la sicurezza
if (isset ($array))
{
foreach ($array as $faselavoro)
{
if (isset ($faselavoro))
{
$nomignolo = $linea['NOME'];
$fase = 'date.FINE_';
$fase .= $faselavoro;
$dom= "SELECT $fase FROM date LEFT JOIN lavori ON date.ID_DATE = lavori.ID WHERE lavori.NOME = '$nomignolo'";
$ris = mysqli_query($connessione,$dom) or die("Query fallita2");
$dataverifica = mysqli_fetch_row($ris);
// verifico che la data del progetto sia posteriore a quella del bando
if ($dataverifica [0] < $DATA)
{
$errore = '1';
// se la condizione non è soddisfatta interrompo il ciclo e passo al successivo gruppo di fasi lavoro
break;
}
else
{
$errore = '0';
// se la condizione è soddisfatta continuo il ciclo
}
}
}
// se invece la condizione è soddisfatta mi stampo il risultato e esco dal ciclo perchè almeno una delle richieste è stata soddisfatta
if ($errore == '0')
{
extract ($linea);
echo "<td>$NOME</td>";
echo "<td>$IMPORTO_GLOBALE</td>";
echo "<td>$IA</td>";
echo "<td>$IB</td>";
echo "<td>$IC</td>";
echo "<td>$ID</td>";
echo "<td>$IE</td>";
echo "<td>$IF</td>";
echo "<td>$IG</td>";
echo "<td>$IIIA</td>";
echo "<td>$IIIB</td>";
echo "<td>$IIIC</td>";
echo "<td>$VIA</td>";
echo "<td>$VIB</td>";
echo "<td>$VIII</td>";
echo "<td><center><input name=\"nome[]\" type=\"checkbox\" value=\"$NOME\" /></td></center</tr>";
break;
}
}
// ovviamente se non stampo niente procedo con la ricerca nell'altro gruppo di richieste
}
}
}
Ora se io chiedo di ricaricarmi la stessa pagina in ordine ascendente su una colonna lui (PHP per gli amici) non troverà più i valori delle variabili del post vero? Se è come penso io (e non sono sicuro) come potrei fare a fargli passare le variabili per la ricerca. Io ci ho pensato e l'unica soluzione che mi viene in mente è di non far ricaricare la pagina ricerca1.php ma di indirizzare il tutto a una nuova pagina ricerca2.php dove io le variabili per la ricerca le recupero attraverso delle sessioni tipo
Codice PHP:
if (isset ($prog))
{$_SESSION['prog']= $array_passaggio;}
if (isset ($array_unico))
{$_SESSION['unico']= $array_unico;}
if (isset ($lav))
{$_SESSION['lav']= $lav;}
if (isset ($data))
{$_SESSION['data']= $data;}
Come vi sembra come metodo, e le variabili via GET come si passano dalla pagina di invio?