- Home
- Categorie
- Coding e Sistemistica
- PHP
- ordinamento elenco da parte dell'utente
-
spiega meglio!
tu li prendi già tutti e 2, ma la precedenza viene data al primo elemento di ordine, nel tuo caso:
registro_attestati.id_registro_attestatie a elementi uguali in quella colonna, li ordina con il 2° criterio!
-
succede che l'ordinamento ASC e DESC funziona solo sulla prima colonna: registro_attestati.id_registro_attestati
<a href="<?=$PHP_SELF?>?ORDER1=DESC&SORT=id_registro_attestati"><img src="../images/freccia_giu.gif" width="10" height="17" border="0"></a>
<a href="<?=$PHP_SELF?>?ORDER1=ASC&SORT=id_registro_attestati"><img src="../images/freccia_su.gif" width="10" height="17" border="0"></a>invece sulla seconda colonna: registro_attestati.cognome_corsista se clicco su una delle due freccette:
<a href="<?=$PHP_SELF?>?ORDER2=DESC&SORT=cognome_corsista"><img src="../images/freccia_giu.gif" width="10" height="17" border="0"></a>
<a href="<?=$PHP_SELF?>?ORDER2=ASC&SORT=cognome_corsista"><img src="../images/freccia_su.gif" width="10" height="17" border="0"></a>non succede nulla
-
la query così com'è prenderà sempre prima 1 d'obbligo:
RDER BY registro_attestati.id_registro_attestati ".$_GET['ORDER1'].", registro_attestati.cognome_corsista ".$_GET['ORDER2'].""devi mettergli un if prima che prenda uno o l'altro, e che nn siano tutti e 2 sempre nella query!
-
avevo provato anche a usare gli if ma non succede niente:
[php]
<?
$sql = "SELECT registro_attestati., a_admin., DATE_FORMAT(registro_attestati.data_fine_corso, '%d-%m-%Y') AS data_fine_corso
FROM registro_attestati, a_admin
WHERE registro_attestati.id_admin=a_admin.id_admin";
$result = mysql_query($sql, $conn) or die ("errore ".mysql_error());
$row = mysql_fetch_array($result);
?><?
if (strtolower($_REQUEST["ORDER1"])=="ASC")
{
$sql .= " ORDER BY registro_attestati.id_registro_attestati ASC";
}
else
{
$sql.= " ORDER BY registro_attestati.id_registro_attestati DESC";
}
?>
<?
if (strtolower($_REQUEST["ORDER2"])=="ASC")
{
$sql .= " ORDER BY registro_attestati.cognome_corsistaASC";
}
else
{
$sql.= " ORDER BY registro_attestati.cognome_corsista DESC";
}
?>
[/php]up
-
gli if vanno prima del esecuzione della query
[PHP]<?
$sql = "SELECT registro_attestati., a_admin., DATE_FORMAT(registro_attestati.data_fine_corso, '%d-%m-%Y') AS data_fine_corso
FROM registro_attestati, a_admin
WHERE registro_attestati.id_admin=a_admin.id_admin";if (strtolower($_REQUEST["ORDER1"])=="desc")
{
$sql .= " ORDER BY registro_attestati.id_registro_attestati DESC";
}
else if(strtolower($_REQUEST["ORDER2"])=="desc")
{
$sql.= " ORDER BY registro_attestati.cognome_corsista DESC";
}
else
{
//metti ordinamento di default
//$sql.= " ORDER BY registro_attestati.cognome_corsista";
//o
//$sql .= " ORDER BY registro_attestati.id_registro_attestati";
}$result = mysql_query($sql, $conn) or die ("errore ".mysql_error());
$row = mysql_fetch_array($result);
?>[/PHP]
-
Ciao Digital Daigor, ho letto solo ora il tuo messaggio.
Ho fatto come hai detto tu:[PHP]
<?
$sql = "SELECT registro_attestati., a_admin., DATE_FORMAT(registro_attestati.data_fine_corso, '%d-%m-%Y') AS data_fine_corso
FROM registro_attestati, a_admin
WHERE registro_attestati.id_admin=a_admin.id_admin";if (strtolower($_REQUEST["ORDER1"])=="DESC")
{
$sql.= "ORDER BY registro_attestati.id_registro_attestati DESC";
}
else if(strtolower($_REQUEST["ORDER2"])=="DESC")
{
$sql.= "ORDER BY registro_attestati.cognome_corsista DESC";
}
else
{
$sql.= "ORDER BY registro_attestati.id_registro_attestati";
}$result = mysql_query($sql, $conn) or die ("errore ".mysql_error());
$row = mysql_fetch_array($result);
?>
[/PHP]solo che mi da questo errore:
errore You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BY registro_attestati.id_registro_attestati' at line 3
-
[PHP] <?
$sql = "SELECT registro_attestati., a_admin., DATE_FORMAT(registro_attestati.data_fine_corso, '%d-%m-%Y') AS data_fine_corso
FROM registro_attestati, a_admin
WHERE registro_attestati.id_admin=a_admin.id_admin";if (strtolower($_REQUEST["ORDER1"])=="DESC")
{
$sql.= " ORDER BY registro_attestati.id_registro_attestati DESC";
}
else if(strtolower($_REQUEST["ORDER2"])=="DESC")
{
$sql.= " ORDER BY registro_attestati.cognome_corsista DESC";
}
else
{
$sql.= " ORDER BY registro_attestati.id_registro_attestati";
}$result = mysql_query($sql, $conn) or die ("errore ".mysql_error());
$row = mysql_fetch_array($result);
?> [/PHP]forse c'era uno spazio in meno, prova questo!!!
-
ah, ci vuole lo spazio prima di ORDER! Ok, infatti ora non mi da più errore, però i pulsanti non funzionano, se clicco non succede niente:
<a href="<?=$PHP_SELF?>?ORDER1=DESC&SORT=id_registro_attestati"><img src="../images/freccia_giu.gif" width="10" height="17" border="0"></a>
<a href="<?=$PHP_SELF?>?ORDER1=ASC&SORT=id_registro_attestati"><img src="../images/freccia_su.gif" width="10" height="17" border="0"></a><a href="<?=$PHP_SELF?>?ORDER2=DESC&SORT=cognome_corsista"><img src="../images/freccia_giu.gif" width="10" height="17" border="0"></a>
<a href="<?=$PHP_SELF?>?ORDER2=ASC&SORT=cognome_corsista"><img src="../images/freccia_su.gif" width="10" height="17" border="0"></a>
-
nel esempio che ti avevo mandato prima, il "DESC" era minuscolo, dato che tu fai un strtolower
-
SSSIIIIII!!!! GRAZIEEEEE ora funziona!!!!!
Però quante cose che ancora non conosco del php...:(
Ciao vado a studiare
-
Buon lavoro, a ke te serve studiare se hai il forum GT a disposizione???
HEHEHEH
Studia che ti fa bene!!!!!!
Ciao!!!!