Ho una tabella che mi estrapola dati personali. La lista è ordinata in base al cognome. Vorrei linkare il campo della tabella per ordinarli, ad esempio per data di nascita come faccio?
Ho una tabella che mi estrapola dati personali. La lista è ordinata in base al cognome. Vorrei linkare il campo della tabella per ordinarli, ad esempio per data di nascita come faccio?
Non ho capito bene: in pratica hai uno script che disegna una tabella inserendovi dei dati (presi da un db mysql, presumo), e tu vuoi creare un link per riscrivere la tabella ordinando i dati in un certo modo, giusto?
Be' così su due piedi non posso aiutarti, posta il codice che disegna la tabella, così potrò dirti come modificarlo.
<?php
echo "<table width='100%' border='1'>
<tr>
<td width='5%'>
ID
</td>
<td width='12%'>
Cognome
</td>
<td width='12%'>
Nome
</td>
<td width='10%'>
Data di Nascita
</td>
<td width='10%'>
Nazionalità
</td>
<td width='3%'>
Cat.
</td>
<td width='8%'>
Posizione
</td>
<td width='8%'>
Data
</td>
<td width='2%'>
A.P.
</td>
<td width='25%'>
Note
</td>
</tr>
";
Questa è la tabella. Io vorrei cliccare ad esempio su nome e tutto il database mi ordinasse i dati in base al nome in ordine alfabetico.
Ora quando scrivo l'sql per ordinare la prima volta la tabella lo faccio in base al cognome ed è tutto ok, ma non riesco a creare questi altri link.
Ti faccio presente che al file php io ci arrivo tramite un $_GET['posizione'] che si riferisce al dato della posizione della persona.
Se ho capito bene allora ti basta che il link reindirizzi alla pagina che estrae i dati dal db, passandogli anche una variabile get "mode" e poi mettervi uno script del genere per estrarre i dati:
Isomma, alla query agggiungi alla fine "order by" e l'elemento in base al quale vuoi che vengano ordinati i dati.Codice PHP:
if($_GET['mode']=='cognome')
$query=mysql_query("SELECT * form tuatabella order by cognome");
if($_GET['mode']=='nome')
$query=mysql_query("SELECT * form tuatabella order by nome");
if($_GET['mode']=='nazionalità')
$query=mysql_query("SELECT * form tuatabella order by nazionalità");
if($_GET['mode']=='ID')
$query=mysql_query("SELECT * form tuatabella order by id");
Verranno estratti in questo modo in ordine alfanumerico dal primo all'ultimo.
Spero di esserti stato d'aiuto!
Per $_GET['mode'] intendi $_GET['posizione'] che sarebbe il mio Get o cosa?
No, io intendo che il link per ordinare gli elementi deve passare allapagina php che li estrae dal databse una variabile, "mode per esempio, che contenga l'elemento in base al quale gli elementi devono essere estratti.
<?php
echo "<table width='100%' border='1'>
<tr>
<td width='5%'>
ID
</td>
<td width='12%'>
Cognome
</td>
<td width='12%'>
Nome
</td>
<td width='10%'>
Data di Nascita
</td>
<td width='10%'>
Nazionalità
</td>
<td width='3%'>
Cat.
</td>
<td width='8%'>
Posizione
</td>
<td width='8%'>
Data
</td>
<td width='2%'>
A.P.
</td>
<td width='25%'>
Note
</td>
</tr>
";
$pos=$_GET['posizione'];
$id=addslashes($_POST['id_per']);
$sql="SELECT * FROM persone_a12 WHERE posizione = '".$pos."' ORDER BY cognome";
$ri = mysql_db_query( $db_name, $sql );
if (!$ri) {
echo "<h1>Errore durante l'accesso dai dati! Contattare il Referente informatico provinciale</h1>";
exit;
}
$nr = mysql_num_rows($ri);
if ($nr == 0) {
echo "<tr>
<td colspan='2'>
<h3>La ricerca non ha prodotto risultati!</h3>
</td>
</tr>";
}else{
while ( $dati = mysql_fetch_array($ri) ) {
echo "<tr><td>".$dati['id_per']."</td></a><td>".$dati['cognome']."</td><td>".$dati['nome']."</td><td>".$dati['data_n
ascita']."</td><td>".$dati['nazione']."</td><td>".$dati['cat_per_a12']."</td><td>".$dati['posizione']."</td><td>".$dati['data_decr']."</td><td><font
color=yellow>".$dati['quarta']."</font></td><td>".$dati['note']."</td></tr>";
}
}
echo $id;
mysql_close($db);
?>
Questo è tutto il codice. Da qui come puoi vedere posso andare in una scheda personale. ma all'inizio se voglio creare un href per ordinare i dati in base ai nomi dei campi della tabella non ci riesco. Perdona l'ottusaggine, ma ti prego aiutami
Ecco! Questo era quello che serviva!Codice PHP:
<?php
echo "
<a href=\"$_SERVER['PHP_SELF']&ordine=cognome\">ordina per cognome</a>
<a href=\"$_SERVER['PHP_SELF']&ordine=nome\">ordina per nome</a>
<a href=\"$_SERVER['PHP_SELF']&ordine=ID\">ordina per ID</a>
<table width='100%' border='1'>
<tr>
<td width='5%'>
[b]ID[/b]
</td>
<td width='12%'>
[b]Cognome[/b]
</td>
<td width='12%'>
[b]Nome[/b]
</td>
<td width='10%'>
[b]Data di Nascita[/b]
</td>
<td width='10%'>
[b]Nazionalità[/b]
</td>
<td width='3%'>
[b]Cat.[/b]
</td>
<td width='8%'>
[b]Posizione[/b]
</td>
<td width='8%'>
[b]Data[/b]
</td>
<td width='2%'>
[b]A.P.[/b]
</td>
<td width='25%'>
[b]Note[/b]
</td>
</tr>
";
$pos=$_GET['posizione'];
$id=addslashes($_POST['id_per']);
$ordine="cognome";
if (isset($_GET['ordine']))
$ordine=$_GET['ordine'];
$sql="SELECT * FROM persone_a12 WHERE posizione = '".$pos."' ORDER BY ".$ordine;
$ri = mysql_db_query( $db_name, $sql );
if (!$ri) {
echo "<h1>Errore durante l'accesso dai dati! Contattare il Referente informatico provinciale</h1>";
exit;
}
$nr = mysql_num_rows($ri);
if ($nr == 0) {
echo "<tr>
<td colspan='2'>
<h3>La ricerca non ha prodotto risultati!</h3>
</td>
</tr>";
}else{
while ( $dati = mysql_fetch_array($ri) ) {
echo "<tr><td>".$dati['id_per']."</td></a>[url='scheda_pers.php?id_per=".$dati[']<td>".$dati['cognome']."</td>[/url]<td>".$dati['nome']."</td><td>".$dati['data_n
ascita']."</td><td>".$dati['nazione']."</td><td>".$dati['cat_per_a12']."</td><td>".$dati['posizione']."</td><td>".$dati['data_decr']."</td><td><font
color=yellow>".$dati['quarta']."</font></td><td>".$dati['note']."</td></tr>";
}
}
echo $id;
mysql_close($db);
?>
L'ho modificato un po', così dovrebbe andare (ho aggiunto dei link in alto per ordinare, puoi aggiungerne quanti ne voui, basta che inserisci l'elemento per cui vuoi vengano ordinati dopo
"&ordine=")
Fami sapere se ci sono problemi!
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
Questo è l'errore che mi da alla riga:
<a href=\"$_SERVER['PHP_SELF']&ordine=cognome\">ordina per cognome</a>
Devo modificare qualcosa
perchè per accedere al database io faccio in questo modo
($_SERVER["DOCUMENT_ROOT"]."dbconf.php");
Purtroppo devo andare. Stasera ho un concerto alla notte bianca ad Agrigento. Se hai voglia e possibilità rispondimi comunque, perchè ho bisogno di fare questa cosa. Grazie anticipate