Hej. Może by tak kolejny przykładzik kogoś zainteresował ?

Bardzo często przy moich projektach spotykam się z proźbą klienta o możliwość 'kolorowania' poszczególnych wierszy w tabeli (rekordów). Fajna sprawa - klient np. zaznacza jakieś ważna dla drugiej strony rekordy na czerwono i już jest wiadomo o co chodzi. Jednak jest (był) mały problem - po każdorazowym pokolorowaniu wiersza trzeba było odświeżyć stronę. Naszczęście z pomocą mi przyszedł mi AJAX

Oto co wykombinowałem:
Potrzebujemy oczywiście
advAJAX.
Struktura bazy danych:
CREATE TABLE `kolory` (
`ID` int(10) NOT NULL AUTO_INCREMENT,
`Kolor` varchar(7) DEFAULT NULL,
`ID_rekord` int(10) DEFAULT NULL,
UNIQUE KEY `ID` (`ID`)
);
Teraz, gdy mamy odpowiednią tabelę dla naszych rekordów i w niej pole `Kolor` możemy zabrać się za wyświetlenie tychże rekordów. Plik
proba.php :
<html>
<head>
</head>
<script>
function $(id){
return document.getElementById(id);
}
function okienko(strona){
window.open(strona, '', 'menubar=yes,toolbar=yes,location=yes,directories=yes,status=yes,scrollbars=yes,r
esizable=yes,fullscreen=no,channelmode=no,width=200,height=300,left=150,top=100');
}
</script>
<body>
<table border="1">
<?
$dbhost = 'localhost';
$dblogin = root;
$dbhaslo = '';
$db = test;
for($i=1;$i<10;$i++){
$query = "SELECT Kolor FROM kolory WHERE ID_rekord=$i LIMIT 1";
$kolor = $row['Kolor']?$row['Kolor']:'#723F42';
echo "<tr id=\"tr$i\" style='background: $kolor'>"; echo '<td>'.($i*2).'</td>'; echo '<td>'.($i*3).'</td>'; echo "<td><button onclick=\"okienko('paleta.php?id=".$i."');\"></button></td>"; }
?>
</table>
</body>
</html>
Chyba nic nazwyczajnego, proste wyswietlanie rekordow - idziemy dalej....
plik
paleta.php , który odpowiedzialny jest za pobranie koloru z palety:
<table width="50px;">
<tr><td bgcolor='#5478A4' onclick="wybierz_kolor('#5478A4');" style="curosr: hand;"> </td><td bgcolor='#A534EF' onclick="wybierz_kolor('#A534EF');" style="curosr: hand;"> </td></tr> <tr><td bgcolor='#84D6E2' onclick="wybierz_kolor('#84D6E2');" style="curosr: hand;"> </td><td bgcolor='#19D2A5' onclick="wybierz_kolor('#19D2A5');" style="curosr: hand;"> </td></tr>
za 'dynamiczne' pokolowanie tabelki:
opener.$('tr<?echo $_GET['id'];>').style.background=kolor;
oraz zapisanie do bazy danych:
advAJAX.post({
url : "zapisz_kolor.php",
parameters:{
kolor: kolor,
id: '<?echo $_GET['id'];?>'
},
onSuccess : function(obj) {
}
});
Cały plik wygląda następująco:
<script type="text/javascript" src="advajax.js"></script> function wybierz_kolor(kolor){
opener.$('tr<?echo $_GET['id'];?>').style.background=kolor;
advAJAX.post({
url : "zapisz_kolor.php",
parameters:{
kolor: kolor,
id: '<?echo $_GET['id'];?>'
},
onSuccess : function(obj) {
}
});
}
<table width="50px;">
<tr><td bgcolor='#5478A4' onclick="wybierz_kolor('#5478A4');" style="curosr: hand;"> </td><td bgcolor='#A534EF' onclick="wybierz_kolor('#A534EF');" style="curosr: hand;"> </td></tr> <tr><td bgcolor='#84D6E2' onclick="wybierz_kolor('#84D6E2');" style="curosr: hand;"> </td><td bgcolor='#19D2A5' onclick="wybierz_kolor('#19D2A5');" style="curosr: hand;"> </td></tr>
Pozostaje już tylko plik zapisujacy dane do bazy.
zapisz_kolor.php:
<?
$dbhost = 'localhost';
$dblogin = root;
$dbhaslo = '';
$db = test;
$rekord = (int)$_POST['id'];
$query = "SELECT * FROM kolory WHERE ID_rekord=$rekord LIMIT 1;";
$query = "UPDATE kolory SET Kolor='$kolor' WHERE ID_rekord=$rekord;";
}
else{
$query = "INSERT INTO kolory (Kolor, ID_rekord) VALUES ('$kolor',$rekord);";
}
?>
Jestem pewnien, że dla Was to pestka

Gotowy i działający przykład można zobaczyć
tutaj.
Powodzenia