Autor | Zpráva | ||
---|---|---|---|
Onda Profil * |
#1 · Zasláno: 7. 11. 2007, 16:48:58
Zdravim ako mam dosiagnuit nieco taketo:
Mam v tabulke fotogarfie ID IDUSER FOTOGARFIA teda napr userovi 5 sa zobrati 5 svojioch fotografii ale ja teraz chcem aby u kazdej fotogarfii bolo +- H D + o jedno policko vyssie - o jedno nizsie H - uplne hore D - uplne dole Viete mi serione poradit? Dakujem velmi pekne. |
||
djlj Profil |
#2 · Zasláno: 7. 11. 2007, 17:05:49
Každá fotka bude mít u sebe hodnotu, na kterém je pořadí (1, 2,...). A při posunu nahoru se zvýší číslo u fotky, které je momentálně výše a sníží číslo u fotky, kterou posouváš. A naopak. To samé při posouvání úplně nahoru. Posouvaná fotka dostaneš číslo 1 a čísla ostatních fotek se navýší o jedno.
|
||
Onda Profil * |
#3 · Zasláno: 7. 11. 2007, 17:15:16
Hej toto mi je jasne, ale ako spravim tie sql dotazy?
Ono mame napriklad ID_FOTO:1 ORDER_BY: 1 +-HD ID_FOTO:2 ORDER_BY: 2 +-HD ID_FOTO:3 ORDER_BY: 3 +-HD ID_FOTO:4 ORDER_BY: 4 +-HD ID_FOTO:5 ORDER_BY: 5 +-HD a ako by mali vyzerat tie 4 dotazy? prosim, som zufaly :(( |
||
powerpetan Profil |
#4 · Zasláno: 7. 11. 2007, 17:20:13
Pokud bys to chtěl bez úpravy tabulky, šlo by to složitě, protože bys musel měnit ID obrázku a nejdřív zjistit jaký jsou prázdný...změň tabulku na: ID(PRIMARY_KEY), USERID(KEY), RANK, FOTO
a sql asi takhle (přibližně, uprav si to): If($_GET["uid"]){ je to jen na ukázku, takhle bys to měl naplácaný jak se zachce, uprav si to.... |
||
djlj Profil |
#5 · Zasláno: 7. 11. 2007, 17:21:47 · Upravil/a: djlj
prosim, som zufaly :((
Na citové vydírání tady nikoho nedostaneš. Jednoduše UPDATE tabulka SET poradi=poradi+1 WHERE id=$posouvane Pak vyber aktuální hodnotu poradi u id=$posouvane A pak UPDATE tabulka SET poradi=poradi-1 WHERE id=$poradi LIMIT 1 Můžeš i naopak, je to fuk. Dál si s tím snad už nějak poradíš sám. Tohle je jen takovej nástřel. |
||
Onda Profil * |
#6 · Zasláno: 7. 11. 2007, 19:51:25
$result = $conn -> query("UPDATE users_fotky f, users_fotky f2 SET
f.poradie = poradie-1, f2.poradie = poradie+1 WHERE f2.poradie+1=f.poradie and f.id='".$_GET['idfoto']."' "); $conn-> close(); if ($result) echo "ok"; else echo "nic"; ono ale nejde vykonat ten UPDATE vypise NIC, kde je chyba? |
||
Onda Profil * |
#7 · Zasláno: 7. 11. 2007, 21:37:30
Dlho ziadna odpoved,
tak ja to este objasnim: Mam dotaz $result = $conn -> query("UPDATE users_fotky f, users_fotky f2 SET f.poradie = poradie-1, f2.poradie = poradie+1 WHERE f2.poradie+1=f.poradie and f.id='".$_GET['idfoto']."' "); $conn-> close(); if ($result) echo "ok"; else echo "nic"; Mam tabulku users_fotky (id, poradie, name) chapete? Ked pridam novu fotku, tak automaticky sa poradie napise od posledneho + 1 chapete? No a teraz mam vypisane fotky ORDER BY PORADIE, kde mam +, to + smeruje na ten dotaz, ze chcem aby doticna fotka bola o jedno vyssie, len ten doatz spravne nefumguje, reps. vobec nejde. preco`? |
||
Kajman_ Profil * |
#8 · Zasláno: 7. 11. 2007, 23:48:11
Můžete jednoduše dělat vždy dva updaty.
Prvním klinutý řádek dáte na pozici, kam patří. Druhým posunete všechny, co se posunout mají (jeden sousední, nebo všechny před/za ním při posunu na začátek/konec) |
||
Onda Profil * |
#9 · Zasláno: 8. 11. 2007, 09:18:24
Mam databazu users_fotky(id, poradie, name) a potom mam vypisane dotky podla poradia, a u kazdej fotky mam tklacitko ze vyssie, ked kliknem napr. na 5.fotku, tak bude 4. a ta co bola predtym 4 bude piata.
Na to je dotaz: $result = $conn -> query("UPDATE users_fotky f, users_fotky f2 SET f.poradie = f.poradie-1, f2.poradie = f.poradie+1 WHERE f2.poradie+1 = f.poradie and f.id='".$get_id_foto."' ") or die(mysqli_error()); Lenze to dobre nefunguje a neviem prist preco, priklad: Mam: ID PORADIE 58 1 57 2 54 3 55 4 56 5 a teraz kliknem na fotku s ID= 56 a nastane: 58 1 57 2 54 3 55 5 56 4 JE TO OK! --------- --------- pokracujeme a vyzera ze to ide vsetko ok, lenze som narazil napriklad: 58 1 57 3 54 5 55 4 56 2 a klikli sme na fotku s ID= 55 (momentaklne 4) a co sa nestane stane sa toto: 58 1 57 4 54 5 55 3 56 4 Videte tie 2 stvorky? preco to robi? Ako by sa to malo osetrit? |
||
Kajman_ Profil * |
#10 · Zasláno: 8. 11. 2007, 09:59:35
A nemá tam být v set
f2.poradie = f2.poradie+1 ? btw: Tady byl ještě jiný způsob update pro přehození sousedních řádků. Méně čtivý, ale možná o chlup rychlejší. http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=28&topic=6 0167 |
||
Onda Profil * |
#11 · Zasláno: 8. 11. 2007, 10:07:35
Opravil som tona to:
$result = $conn -> query("UPDATE users_fotky f, users_fotky f2 SET f.poradie = f.poradie-1, f2.poradie = f2.poradie+1 WHERE f2.poradie+1 = f.poradie and f.id='".$get_id_foto."' ") or die(mysqli_error()); ale stale to nejde spravne:(( ale ked to dam takto: $akt_poradie = $conn -> query("SELECT poradie FROM users_fotky WHERE id='".$get_id_foto."' ") or die(mysqli_error()); $p = $akt_poradie -> fetch_assoc(); //$conn -> query("UPDATE users_fotky SET poradie = poradie-1 WHERE id = '".$get_id_foto."' and poradie != 1 ") or die(mysqli_error()); //$conn -> query("UPDATE users_fotky SET poradie = poradie+1 WHERE poradie = ".($p['poradie'] - 1)." and id != '".$get_id_foto."' ") or die(mysqli_error()); tak to ide, ale ja by som to chcel jednym dotazom, da sa to? |
||
Kajman_ Profil * |
#12 · Zasláno: 8. 11. 2007, 10:16:24
a když ješte opravíte...
WHERE f2.poradie-1 ? |
||
Kajman_ Profil * |
#13 · Zasláno: 8. 11. 2007, 10:22:27
Pardon, to není chyba :-)
|
||
Onda Profil * |
#14 · Zasláno: 8. 11. 2007, 10:39:14
Tak potom kde je chyba?
|
||
Časová prodleva: 16 let
|
0