Autor Zpráva
Onda
Profil *
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
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 *
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
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"]){

$uid = $_GET["uid"];
While($data = MySQL_Fetch_Array(MySQL_Query("SELECT * FROM fotografie WHERE USERID='$uid' ORDER BY RANK")){
echo $data["FOTO"]."<br>";
}
}


je to jen na ukázku, takhle bys to měl naplácaný jak se zachce, uprav si to....
djlj
Profil
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 *
$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 *
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 *
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 *
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 *
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 *
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 *
a když ješte opravíte...
WHERE f2.poradie-1
?
Kajman_
Profil *
Pardon, to není chyba :-)
Onda
Profil *
Tak potom kde je chyba?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0