Autor | Zpráva | ||
---|---|---|---|
n5871 Profil * |
#1 · Zasláno: 16. 11. 2010, 11:16:36
Ahoj, narazil jsem na jeden problem.
Ve fotogalerii bych rad zmenil poradi fotografii, napriklad prvni fotku bych chtel premistit na 10 pozici, nedokazu ale vymyslet lepsi zpusob nez prohodit dve poradi mezi sebou. Chtel bych se zeptat nekoho zkuseneho, jak docilit toho aby se poradi jakoby prepsala. Tzn, pri presunu fotky z poradi 1 na 10 se z fotky s poradi 2, stane cislo 1, z 3 se stane 2 atd. Napadlo mne take najit pozici na kterou chci presunout a zvetsovat cisla az od ni..ale nevim co by bylo lepsi, pokud mozno v cistem MySQL diky za jakoukoliv radu, snad to pomuze i nekomu dalsimu. |
||
__construct Profil |
#2 · Zasláno: 16. 11. 2010, 11:19:00
UPDATE tabulka SET poradie = 10 WHERE poradie = 1 … |
||
n5871 Profil * |
#3 · Zasláno: 16. 11. 2010, 11:48:42
Zkousel jsem neco takoveho:
UPDATE photos SET pht_order = +1 WHERE pht_order > 1 AND gal_id=2 Ale nefunguje to asi presne, ten predchozi priklad provede jenom zamenu. |
||
panther Profil |
#4 · Zasláno: 16. 11. 2010, 11:52:39
n5871:
…SET pht_order = (pht_order +1)… |
||
n5871 Profil * |
#5 · Zasláno: 16. 11. 2010, 17:34:55
Aha, pardon..ale ted jsem si uvedomil, ze timhle zpusobem budu dosatvat duplicitni udaje o poradi, da se to nejak osetrit aby probehl treba nejaky reorder a precislovani?
|
||
panther Profil |
#6 · Zasláno: 16. 11. 2010, 17:37:24
n5871:
prohození záznamů PHP->mySQL |
||
n5871 Profil * |
#7 · Zasláno: 16. 11. 2010, 17:57:32
Diky ale nejsem si jist, zda to presne mohu pouzit, pokud rozlisuji dva smery razeni? Tj. nahoru a dolu, co bych tedy pak dosazoval za ten druhy parametr?
UPDATE web SET poradi=IF(poradi==$nahoru, $predchozi, $nahoru) WHERE poradi IN ($predchozi, $nahoru) Ted to delam takto a nevim , jak bych to do do prvniho query mel napasovat? if( trim($_GET['direction'])=="top") { //Prohozeni poradi fotografii $sql = 'UPDATE photos SET '; $sql .= 'pht_order = pht_order+1'; $sql .= ' WHERE pht_id='.$_GET['pht_id']; $sql .= ' AND gal_id='.$_GET['gal_id']; @$v = $db->q($sql); // die($_GET['gal_id']); if($v) { if (headers_sent()) { echo 'nejde odeslat hlavičku'; } else { header('Location:galerie.php?gal_id='.$_GET['gal_id']); exit; } } } if( trim($_GET['direction'])=="under") { //Prohozeni poradi fotografii $sql = 'UPDATE photos SET '; $sql .= 'pht_order = pht_order-1'; $sql .= ' WHERE pht_id='.$_GET['pht_id']; $sql .= ' AND gal_id='.$_GET['gal_id']; @$v = $db->q($sql); // die($_GET['gal_id']); if (headers_sent()) { echo 'nejde odeslat hlavičku'; } else { header('Location:galerie.php?gal_id='.$_GET['gal_id']); exit; } |
||
Časová prodleva: 18 dní
|
|||
dakota Profil |
#8 · Zasláno: 4. 12. 2010, 12:55:25
pri zmene poradia fotky napr. z 5 na 8 a naopak z 8 na 5 potrebuješ zmeniť len poradie fotiek medzi 5 až 8
nastavenie noveho poradia presuvanej fotky UPDATE photos SET photo_order = $new_order WHERE photo_id = $photo_id nastavenie poradia ovplyvnených fotiek $new_order < $old_order - ak je nové poradie menšie ako pôvodne poradie - napr. pri zmene z 8 na 5 - treba zväčšiť o 1 poradie fotiek 5 až 8 okrem presuvanej fotky (poradie už má nastavené) UPDATE photos SET photo_order = photo_order + 1 WHERE (photo_order BETWEEN $new_order AND $old_order) AND photo_id != $photo_id AND gallery_id = $gallery_id $new_order > $old_order - ak je nové poradie väčšie ako pôvodne poradie - napr. pri zmene z 5 na 8 - treba zmenšiť o 1 poradie fotiek 5 až 8 okrem presuvanej fotky (poradie už má nastavené) UPDATE photos SET photo_order = photo_order - 1 WHERE (photo_order BETWEEN $old_order AND $new_order) AND photo_id != $photo_id AND gallery_id = $gallery_id |
||
Časová prodleva: 13 let
|
0