yes, thats my code
$latest_tag_query = mysql_query("SELECT `id_tag` FROM `tagsforimg` WHERE `id_image`=current image id);
//tags for image
for ($preview_count = 1; $t = mysql_fetch_assoc($latest_tag_query); ++$preview_count){
$latest_tag_id[$preview_count]= $t['tag_id'];
}
$latest_num_rows = mysql_num_rows($latest_tag_query);
$preview_exist = 1;
while ($preview_exist <= $latest_num_rows){
$preview_tags[$exist] .= $latest_tag_id[$preview_exist];
if($latest_num_rows - $preview_exist > 0)
$preview_tags[$exist] .= ", ";
$preview_exist++;
} // we made a string like "tag, tag, tag"
$preview_query[$exist] = mysql_query("SELECT `id_image` FROM `tagsforimg` WHERE `id_tag` IN (".$preview_tags[$exist].") AND `id_image`!=current image id");
// we select all ids of images with that tags.
for ($pr_q_c = 1; $pr_mfa = mysql_fetch_array($preview_query[$exist]); ++$pr_q_c){
$pr_ph_id[$exist][$pr_q_c]= $pr_mfa[0];
}
$pr_rand_1[$exist] = rand(1, $pr_n_r);
do{
$pr_rand_2[$exist] = rand(1, $pr_n_r);}
while($pr_rand_1[$exist] == $pr_rand_2[$exist]);
do{
$pr_rand_3[$exist] = rand(1, $pr_n_r);}
while($pr_rand_1[$exist] == $pr_rand_3[$exist] OR $pr_rand_2[$exist] == $pr_rand_3[$exist]);
do{
$pr_rand_4[$exist] = rand(1, $pr_n_r);}
while($pr_rand_1[$exist] == $pr_rand_4[$exist] OR $pr_rand_2[$exist] == $pr_rand_4[$exist] OR $pr_rand_3[$exist] == $pr_rand_4[$exist]);
//4 random rows for next select
$pr_src_1[$exist] = mysql_query("SELECT `url` FROM `images` WHERE `id`=".$pr_ph_id[$exist][$pr_rand_1[$exist]]."");
$pr_src_2[$exist] = mysql_query("SELECT `url` FROM `images` WHERE `id`=".$pr_ph_id[$exist][$pr_rand_2[$exist]]."");
$pr_src_3[$exist] = mysql_query("SELECT `url` FROM `images` WHERE `id`=".$pr_ph_id[$exist][$pr_rand_3[$exist]]."");
$pr_src_4[$exist] = mysql_query("SELECT `url` FROM `images` WHERE `id`=".$pr_ph_id[$exist][$pr_rand_4[$exist]]."");
sorry if i made some mistake with "{" and "}" , i remove some parts from it.