- Home
- Categorie
- Coding e Sistemistica
- PHP
- ordinamento elenco da parte dell'utente
-
mettigli una var ad esempio 1 o 0, e if var = 1 -> var="" else var="DESC" e stampi la var!!!
era questo che chiedevi???
-
L'esempio lo puoi vedere nell'elenco di questo forum dove a destra ci sono i titoletti delle colonne dei vari campi:
Valutazione Autore Repliche Visite
se li clicchi li mette in ordine crescente o decrescente.
Come si fa a fare questo?
-
quello del forum fa così:
order=asc
oppure
order=desc
e credo stampi nella query direttamente il valore!
-
io nel link ho messo questo:
<a href="<?=$PHP_SELF?>?lavoro=SORTORDER=ASC&SORTORDER=data_chiamata">data</a>
ma non succede niente
-
c'è un po di casino nelle variabili che passi!
"<?=$PHP_SELF?>?lavoro=&SORTORDER=ASC&SORTORDE R=data_chiamata"
hai stampato nella query la var che gli passi?
-
la query iniziale è questa:
[PHP]
SELECT registro_chiamate., a_admin.,
DATE_FORMAT(registro_chiamate.data_chiamata, '%d-%m-%Y') AS data_chiamata
FROM registro_chiamate, a_admin
WHERE registro_chiamate.id_admin AND registro_chiamate.destinatario=a_admin.id_admin
ORDER BY registro_chiamate.data_chiamata DESC, registro_chiamate.ora_chiamata DESC
[/PHP]
-
ops, scusa mi sa che ho capito male.
Mi chiedi se ho stampato nella query la var che gli passo?
Come faccio a stampare nella query la var che gli passo?echo e poi?
-
se la var si chiama ord_data_chiamata e ord_ora_chiamata o se le usi come una semplicemente ord fai così:
$query = "SELECT registro_chiamate., a_admin.,
DATE_FORMAT(registro_chiamate.data_chiamata, '%d-%m-%Y') AS data_chiamata
FROM registro_chiamate, a_admin
WHERE registro_chiamate.id_admin AND registro_chiamate.destinatario=a_admin.id_admin
ORDER BY registro_chiamate.data_chiamata ".$_GET['ord'].", registro_chiamate.ora_chiamata " .$_GET['ord']
-
la query lo cambiata così:
[php]
SELECT registro_chiamate., a_admin.,
DATE_FORMAT(registro_chiamate.data_chiamata, '%d-%m-%Y') AS data_chiamata
FROM registro_chiamate, a_admin
WHERE registro_chiamate.id_admin AND registro_chiamate.destinatario=a_admin.id_admin
ORDER BY registro_chiamate.data_chiamata ".$_GET['ORDER']."
[/php]e nel link ho messo questo:<a href="<?=$PHP_SELF?>?pagina=ORDER=ASC&ORDER=data_chiamata">data</a>
però poi se clicco sul link 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 'data_chiamata' at line 4
-
manda tutto il pezzo di php, query e variabili, così nn si capisce la situazione!
-
ti allego la prova che ho fatto ora con la variabile cognome_corsista
[PHP]
<table width="650" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="1" colspan="6" valign="top" bgcolor="BE743F"></td>
</tr>
<tr>
<td width="80" height="41"><span class="testo_rosso_bold">n. attest.</span></td>
<td width="170"><span class="testo_rosso_bold">nome</span></td>
<td width="150">
<?
$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
ORDER BY registro_attestati.cognome_corsista ".$_GET['ORDER']."";
$result = mysql_query($sql, $conn) or die ("errore ".mysql_error());
$row = mysql_fetch_array($result);
?>
<span class="testo_rosso_bold"><a href="<?=$PHP_SELF?>?pagina=ORDER=ASC&ORDER=cognome_corsista">cognome su</a></span><span class="testo_rosso_bold"><a href="<?=$PHP_SELF?>?pagina=ORDER=DESC&ORDER=cognome_corsista">cognome giu</a></span> </td> <td width="100"><span class="testo_rosso_bold">luogo</span></td> <td width="80"><span class="testo_rosso_bold">corso</span></td> <td width="70"><span class="testo_rosso_bold">data corso</span></td> </tr> <tr> <td height="1" colspan="6" valign="top" bgcolor="BE743F"></td> </tr>
<?
while($row=mysql_fetch_array($result)){
?>
<tr>
<td height="41"><span class="testo_grigio_bold">
<a href="<?=$PHP_SELF?>?lavoro=<?=$row[id_registro_attestati]?>&pagina=2">
<img src="../images/menu_triangolo.gif" width="16" height="10" border="0">
<?=$row['id_registro_attestati']?></a>
</span>
</td>
<td><span class="testo_grigio_bold"><?=$row['nome_corsista']?></span></td>
<td><span class="testo_grigio_bold"><?=$row['cognome_corsista']?></span></td>
<td><span class="testo_grigio_bold"><?=$row['luogo_rilascio_attestato']?></span></td>
<td><span class="testo_grigio_bold"><?=$row['tipo_attestato']?></span></td>
<td>
<span class="testo_grigio_bold"><?=$row['data_fine_corso']?></span>
</td>
</tr>
<tr>
<td height="1" colspan="6" valign="top" bgcolor="BE743F"></td>
</tr><? }
?>
</table>
[/PHP]
-
se usi sto link nn funzionerà di certo, dato che tu cerchi la var ORDER e come valore ha data_c hiamata, mentre deve avere o ASC o DESC
-
sì, infatti l'errore era nei link, ora li ho cambiati in questo modo:
<span class="testo_rosso_bold"><a href="<?=$PHP_SELF?>?ORDER=ASC&SORT=cognome_corsista">cognome su</a></span>
<span class="testo_rosso_bold"><a href="<?=$PHP_SELF?>?ORDER=DESC&SORT=cognome_corsista">cognome giu</a></span>
e funzionaaaaaaaaaa!!!!!!!!
GRAZIE DIGITAL DAIGOR !!!!!!!!!
-
nada, se posso.....aiuto!!!
-
Ahh, peccato! Però se l'ordinamento lo faccio su due colonne funziona solo su una
[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
ORDER BY registro_attestati.id_registro_attestati ".$_GET['ORDER1'].", registro_attestati.cognome_corsista ".$_GET['ORDER2']."";
$result = mysql_query($sql, $conn) or die ("errore ".mysql_error());
$row = mysql_fetch_array($result);
?>
[/php]<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>UP
up
-
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]