Witam
Stworzyłem prosty skrypt galerii z zarządzaniem kategoriami, wrzucaniem plików i przestawianiem ich kolejności o 1 w górę i w dół. Działało to dwa miesiące, klient wrzucił ponad 100 zdjęć i chciał przeklikać te ostatnie na pierwsze miejsce. Dorzuciłem mu więc mały formularz z polem select, który po zmianie przestawia dane zdjęcie na wybrane w select pole.
U mnie działa to tak:
I. Formularz:
<form style="display: inline" method="get" action="?">
<input type="hidden" name="mode" value="gallery" />
<input type="hidden" name="gallery" value="
<?php echo $_GET['gallery'] ?>" />
<input type="hidden" name="photo" value="
<?php echo $photo['id'] ?>" />
<input type="hidden" name="from_place" value="
<?php echo $count ?>" />
Na miejsce:
<select onchange="java script:this.form.submit()" style="font-size: 10px" name="to_place">
<option value="">-----</option>
<?php
$y = 0;
while($y < $sql->getSelectedRows())
{
++$y;
echo '<option value="'.$y.'">'.$y.'</option>'; }
?>
</select>
</form>
II. Fragment kodu odpowiedzialny za przesuwanie:
<?php
if($_GET['from_place'] && $_GET['to_place'] && $_GET['photo'])
{
//kierunek zmiany:
if($_GET['from_place'] > $_GET['to_place']) //do góry
{
$fromlimit = $_GET['to_place'] - 1;
$q = mysql_query('SELECT * FROM gr_galphotos WHERE no > '.$fromlimit.' AND no < '.$_GET['from_place'].' AND galery = '.$_GET['gallery'].' ORDER BY no'); {
$update['no'] = $r['no'] + 1;
$sql->updateQuery('gr_galphotos', $update, 'id='.$r['id']);
}
$update['no'] = $_GET['to_place'];
$sql->updateQuery('gr_galphotos', $update, 'id='.$_GET['photo']);
}
if($_GET['from_place'] < $_GET['to_place']) //na dół
{
$tolimit = $_GET['to_place'] + 1;
$q = mysql_query('SELECT * FROM gr_galphotos WHERE no > '.$_GET['from_place'].' AND no < '.$tolimit.' AND galery = '.$_GET['gallery'].' ORDER BY no'); {
$update['no'] = $r['no'] - 1;
$sql->updateQuery('gr_galphotos', $update, 'id='.$r['id']);
}
$update['no'] = $_GET['to_place'];
$sql->updateQuery('gr_galphotos', $update, 'id='.$_GET['photo']);
}
}
?>
Czyli: najpierw przesuwam wszystkie zdjęcia z zakresu od 'from_place' do 'to_place', potem aktualizuję dzięki $_GET['photo'] odpowiednie zdjęcie i mam wszystko pokolei.
Moje pytanei: czy da się skonstruować w MySQL takie zapytanie, które by automatycznie przesunęło mi zdjęcia z przedziału $_GET['from_place'] - $_GET['to_place'] o 1? Czy jednak tak jak robię jest najszybciej i tak to zostawić?
Pozdrawiam