Premetto che il codice js di
'cercaInTable2.js' l'ho recuperata in rete.
Questa la funzione che ricerca il valore:
HTML:
FUNZIONE PER RICERCA IN SINGOLA COLONNA DI TABELLA
function ricercaInCol(id_table,colonna){
ripristinaTable(id_table);
var valore = document.ricerca.campo.value;
var table = document.getElementById(id_table);
var n_colonne = table.getElementsByTagName('th').length;
var celle = table.getElementsByTagName('td');
var contatore = 0;
for(var j=(colonna-1); j<celle.length; j=(j+n_colonne)){
//document.write(celle[j].innerHTML + " - " + valore);
if(celle[j].innerHTML == valore){
celle[j].className='trovato';
contatore++;
}
}
document.getElementById('responso').innerHTML='Trovati: '+contatore;
}
Non riesco capire perché non gira in quanto
"celle[j].innerHTML" contiene il valore da controllare.
e lo si può verificare con //document.write(celle[j].innerHTML + " - " + valore);
Il codice genera una tabella di quattro colonne. Nelle prime tre colonne i dati sono prelevati da un data base, la quarta è di prova (i dati non provengono dal data base). Il programma funziona soltanto con la prima riga per quanto riguarda i valori del data base, mentre funziona per tutta la quarta colonna (colonna di prova).
PHP:
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript' src='cercaInTable2.js'></script>
<link rel="stylesheet" type="text/css" href="stili/stile.css" />
</head>
<body>
<?php
$conn=mysql_connect("localhost","root","");
if (!$conn)
{
echo "(connessione fallita, riprova)";
}
else
{
if (!mysql_selectdb ("grico"))
{echo"connessione non riuscita, riprova!";}
else
{
$sql="select * from verbi";
$result= mysql_query($sql);
if (mysql_num_rows($result)>0)
{$dati=mysql_fetch_assoc($result);
$Grico=$dati["grico"];
$Tipo=$dati["tipo"];
$Italiano=$dati["italiano"];
$Note=$dati["note"];
$italiano = explode ( "\r", $Italiano);
$grico=explode ( "\r", $Grico);
$tipo=explode ( "\r", $Tipo);
$note=explode ( "\r", $Note);
}
}
}
echo '<div style="height: 400px; overflow: scroll;">';
echo '<h1>Ricerca in tabella html</h1>';
echo "<table id='tabella'>";
echo'</br>';
echo '<thead>';
echo "<tr><th class='intestazione'>da data base</th><th class='intestazione'>da data base</th><th class='intestazione'> data base</th><th class='intestazione'>programma</th></tr>";
echo '</thead>';
echo '<tbody>';
$conta=0;
foreach($grico as $col_rigo){
echo "<tr><td>$col_rigo</td><td>$tipo[$conta]</td><td>$italiano[$conta]</td><td>perché $conta</td></tr>";
$conta++;
}
echo '</tbody>';
echo '</table>';
echo '</div>';
?>
<script type='text/javascript'>
ripristinaTable('tabella');
</script>
<br/><br/>
<form name='ricerca'>
Valore da cercare in tutta la tabella: <input type='text' size='10' name='campo'/>
<input type='button' value='Cerca in tabella' onClick="ricercaInTable('tabella')"/>
<input type='button' value='Cerca nella colonna italiano' onClick="ricercaInCol('tabella',3)"/>
<span id='responso'></span>
</form>
</body>
</html>
questi i valori che si ottengono con
document.write in
(
celle[j].innerHTML + " - " +
valore);
inserendo il valore della prima riga (valore badare):
badare - badare abitare - badare distendere - badare distendersi - badare bruciare - badare ......
questo inserendo la seconda riga (abitare):
badare - abitare
abitare - abitare distendere - abitare distendersi - abitare bruciare ......
Come si vede nell'apparenza non ci sono differenze, nella realtà funziona soltanto con il primo valore.
Non ci sono problemi, come detto, con la quarta colonna (valori che
non provengono dal data base)
Spero di essere stato chiaro
Ti ringrazio dell'attenzione e della disponibilità
Giuseppe