[RISOLTO]recuperare dati da tabella

paskuale

Nuovo Utente
23 Nov 2013
7
0
0
salve a tutti, ho una tabella che contiene una lista di utenti, una colonna della tabella contiene una immagine (verde,rossa) se l'utente è attivo o meno, ciò che vorrei fare tramite jquery è recuperare l'id dell'utente e il suo attuale stato, il codice che ho scritto però non va bene.
questo ciclo prende i dati dal database e genera la tabella html:
Codice:
while ($row = pg_fetch_assoc($lista))
{
echo '<tr align="center">';
echo '<td id="userid">'.$row['id_user'].'</td>';
echo '<td>';
if ($row['attivo'] == 't')
{
		echo '<input class="stato" type="image" src="images/attivo.png" alt="attivo"></input></td>';
}else{
		echo '<input class="stato" type="image" src="images/disattivo.png" alt="attivo"></input></td>';
		}
echo '</tr>';
}
nella pagina che contiene l'html, c'è il codice jquery:

Codice:
<script type="text/javascript">
$(document).ready(function()
{
    $(".stato").click(function()
	{
		var user = $("#userid").text();
		var stato = $(".stato").attr("alt")

                alert("User: " + user + "   stato: " + stato);
	});
});
</script>
il problema è che per qualunque utente della tabella premo il tasto, nell'alert mi ritorna sempre i dati dell'utente del primo rigo. come posso risolvere?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, non si può assegnare lo stesso id a più di un elemento
potresti assegnare come id l'id utente alla td che contiene l'input
PHP:
echo '<input id="' . $row['id_user'] . '" class="stato" ... etc
e recuperarlo con il metodo .parent(), prova questo esempio
HTML:
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function()
    {
        $(".stato").click(function()
        {
            var id = $(this).parent("td").attr('id');
            alert(id);
        });
    });
</script>
<table>
    <tr>
        <td>1</td>
        <td id="1"><input class="stato" type="button" value="click" alt="attivo"></input></td>
    </tr>
    <tr>
        <td>2</td>
        <td id="2"><input class="stato" type="button" value="click" alt="attivo"></input></td>
    </tr>
</table>
 

paskuale

Nuovo Utente
23 Nov 2013
7
0
0
ciao e grazie mille con la tua modifica riesco a recuperare correttamente l'userid dell'utente però mi resta il problema nel recuperare lo stato.
Quando clicco sulla image mi dice la id corretta ma mi ritorna sempre lo stato del primo rigo.
Codice:
		echo '<td align="center" id="'.$row['id_user'].'">';
		if ($row['attivo'] == 't')
		{
			echo '<input class="stato" type="image" src="images/attivo.png" alt="attivo"></input></td>';
		}else{
			echo '<input class="stato" type="image" src="images/disattivo.png" alt="attivo"></input></td>';
		}
come faccio a recuperare da jquery lo stato dell'utente?

Codice:
<script type="text/javascript">
$(document).ready(function()
{
    $(".stato").click(function()
	{
		var user = $(this).parent("td").attr('id');
		var stato = $(".stato").attr("alt");

        alert("User: " + user + "   stato: " + stato);
	});
});
</script>
con var stato = $(".stato").attr("alt"); mi ritorna sempre lo stato del primo utente della tabella, c'è un modo per usare this?

grazie mille ancora.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
devi usare "this" per indicare che ti stai riferendo all'elemento cliccato
Codice:
var stato = $(this).attr("alt");