Mayger
7.04.2006, 17:42:18
Mam taki pomysł a zarazem prośbe jak można zrobić zmienianie pozycji:
Mam taką tabele
Kod
id | nazwa | miejsce
-----------------------
1 | tytul1 | 2
2 | tytul2 | 4
3 | tytul3 | 3
I wyświetla się to nam jako
1. tytul1 + -
3. tytul2 + -
2. tytul3 + -
Czy ktoś umie to zrobić żeby zmieniało miejsce np tytul2 na miejsce tytul1 tylko chodzi o to że nie może być to zmieniane +1 a tu -1 bo jak widac jest tu przerwa co dwa.
Jak ktoś to umie zrobić w php i mysql to prosze o pomoc.
Pigula
7.04.2006, 17:48:07
tak nie zbyt rozumiem o co ci chodzi zeby wyswitlalo wedlug miejsc jakie masz w tabeli czy co? jezeli wedlug miejsc to ustalasz kolejnosc i dajesz do zapytania ORDER BY. jak jest jakas zmiana to muszi uaktualnic tabele. po kliknieciu na ten +/- poptostu dodajesz czy odejmuszje jeden tylko ze wtedy w tabeli trzymac jakies punkty a nie miejsce bo tak ustalac kolejnosc to bedzie ciezko. zliczasz punkty po nich sortujesz wyswietlasz.
Mayger
7.04.2006, 18:03:00
Jak klikniesz na plus to to co jest wyżej od tego w co klikasz ma być na miejscu tego teraz i na odwrót troche to skomplikowane wiem no ale chce tak zrobić:P Tak jak to jest rozwiązane w jportal z blokami menu albo w phpbb z zmienianiem pozycjoi kategori;d
Pigula
7.04.2006, 19:08:12
no to pobierza to na co kliknales i to co jest wyzej i to co jest wyzej dajesz -1 a to co wybrales dajesz +1 jeden select warunkiem where a potemmodyfikujesz te rekordy +1/-1 i dwa update rowniez z warunkiem where.
Mayger
7.04.2006, 19:22:55
Nie dokońca mnie rozumiesz bo ja napisałem w pierwszym poście że nie moze być +1/-1. Np jeżeli mam coś co ma miejsce 2 i co ma 4 czyli to co ma 3 jest usunięte to jak zrobie +1/-1 to wtedy oba będą miały miejsce 3 i nic z tego
phobos
7.04.2006, 23:29:38
chodzi ci o to zeby to co bylo na miejscu 2 jak sie nacisnie + to wskakiwalo na miejsce 1 a to co bylo na miejscu 1 wskakiwalo na miejsce 2 itd
Pigula
8.04.2006, 07:57:56
no to wyciagasz dwie wartosci zamieniasz je miejscami i zapisujesz spowrotem
Mayger
8.04.2006, 12:29:00
No niby tak ale czy ktoś umie to napisać bo w prostych rzeczach w php i mysql to się znam ale nie jestem jakis mastah i nie wiem za bardzo jak to zrobić :]
phobos
8.04.2006, 13:23:52
id | nazwa | miejsce
-----------------------
1 | tytul1 | 2
2 | tytul2 | 4
3 | tytul3 | 3
<?php
$query=mysql_query("select miejsce, id from tabela where nazwa='tytul1' ");
$query2=mysql_query("select miejsce, id from tabela where nazwa='tytul2' ");
mysql_query("update tabela set miejsce='$result2[miejsce]' where id='$result[id]' "); mysql_qyery("update tabela set miejsce='$result[miejsce] where id='$result2[id]' ");
?>
powinno dzialac
Mayger
9.04.2006, 18:45:25
Noby wszystko łądnie i pięknie tylko jak zrobić żeby pobierało te dwa koło siebie, nie ważne które klikne ma być koło siebie albo od góry albo od dołu bo to jest tylko taki przykład, a ja chce żeby to dla wszystkiego zmieniać.
phobos
9.04.2006, 22:22:27
no to zalorzmy takie cos ze:
plus i minus bedzie przy kazdym tytule a jak wiemy kazdy tytul ma swoj id wiec:
plus- <a href="strona.php?id=TuIdTytulu&action=plus" >
minus- <a href="strona.php?id=TuIdTytulu&action=minus" >
i teraz
<?php
if($_GET['action']=="plus")
{
$query=mysql_query("select miejsce from tabela where id='$_GET[id]' "); $newid=$_GET['id']+1;
$query2=mysql_query("select miejsce from tabela where id='$newid' "); }
else
{
$query=mysql_query("select miejsce from tabela where id='$_GET[id]' "); $newid=$_GET['id']-1;
$query2=mysql_query("select miejsce from tabela where id='$newid' "); }
mysql_query("update tabela set miejsce='$result2[miejsce]' where id='$_GET[id]' "); mysql_qyery("update tabela set miejsce='$result[miejsce] where id='$newid' ");
?>
Mayger
10.04.2006, 13:13:23
<?php
$newid=$_GET['id']+1;
$query2=mysql_query("select miejsce from tabela where id='$newid' "); ?>
Mówiłem że chodzi mi tu też o to że jak np coś usune to nie bedzie +1 tylko np +2 i wtedy wywali mi errora że nie ma tego id bo bedzie wcześniej usunięte
phobos
10.04.2006, 13:20:37
no to jak cos wywalasz o okrelsonym id to to wszystko co jest wieksze od tego id daj -1
czyli jak masz 1,2,3,4,5 i jak wywalisz 3 to 4,5 daj -1
Mayger
10.04.2006, 13:31:41
Tylko jak to zrobić :]
phobos
10.04.2006, 13:52:42
1) nie mozesz miec auto_increment w tej kolumnie gdzie masz id bo mysql w wersji 4+ ma takie zabezpieczenie ze jezeli np. masz takie klucze 1,2,3 i teraz usuniesz klucz 3 a potem bedziesz chcial dodac kolejny wpis do bazy do mysql mu przypisze automatycznie klucz 4, i nie jest mozliwe wogole juz uzycie id=3
i teraz taki kod
<?php
$nextid=$id+1;
for($i=$nextid;$i<=$result[0];$i++)
{
$newid=$i-1;
mysql_query("update tabela set id='$newid' where id='$i' "); }
?>
chyba wszystko ok
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.