Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Id/zamiana miejsca
dk1342
post
Post #1





Grupa: Zarejestrowani
Postów: 275
Pomógł: 9
Dołączył: 24.07.2008
Skąd: Racibórz

Ostrzeżenie: (10%)
X----


Witam, próbuje zrobić sobie własne menu oparte o mysql, i już wszystko zrobiłem dodawanie, edycje, usuwanie, wyświetlanie ale mam problem chce zrobić przesuwanie linka w góre/dół i zrobiłem to tak:

  1. <?php
  2. $link = mysql_query("SELECT * FROM linki WHERE id='$id'");
  3. $wiersz = mysql_fetch_array($link);
  4. $link2 = mysql_query("SELECT * FROM linki WHERE id='$id2'");
  5. $wiersz2 = mysql_fetch_array($link2);
  6. $adres = $wiersz['link'];
  7. $opis = $wiersz['opis'];
  8. $adres2 = $wiersz2['link'];
  9. $opis2 = $wiersz2['opis'];
  10. mysql_query("UPDATE linki SET link = '$adres' WHERE id = $id2");
  11. mysql_query("UPDATE linki SET opis = '$opis' WHERE id = $id2");
  12. mysql_query("UPDATE linki SET link = '$adres2' WHERE id = $id");
  13. mysql_query("UPDATE linki SET opis = '$opis2' WHERE id = $id");
  14. echo "zmieniono";
  15. ?>


$id i $id2 pobieram w gecie...:
cos.php?id=id 1 linka&id 2 linka

Ok i wszystko ładnie działa zamienia w miejsce 1 idą dane z 2 linka a w miejsce 2 idą dane z 1 linka..
Tylko teraz jak to wyświetlić ? hm próbowałem tak:

  1. <?php
  2. $link=mysql_query('SELECT * FROM linki ORDER BY id asc');
  3. while($wiersz=mysql_fetch_array($link))
  4. {
  5. echo 'Link: '.$wiersz['link'].' <a href="sql.php?cos=dol&id='.$wiersz['id'].'&id2= ">/| </a> |/<br />';
  6. echo "Opis: ".$wiersz['opis']."<br />";
  7. }
  8. ?>


Czyli pobieram id tego linka który chce przesunąć, a teraz sedno sprawy jak pobrać id które jest w linku wyżej lub niżej ?

//@ nie wiem czy dobrze wytłumaczyłem, chodzi o wyświetlanie wszystkich linków a obok są strzałki w góre i dół, i otóż mam problem bo stworzyłem tą zamiane ale potrzebuje id oby dwóch linków które chce zamienić ... a nie wiem jak pobrać te drugie id które jest w linku wyżej/niżej

Ten post edytował dk1342 15.03.2009, 14:00:06


--------------------
Firefox - The Best,
Internet Exokier - shit

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. WHERE ID>nr LIMIT 1


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
dk1342
post
Post #3





Grupa: Zarejestrowani
Postów: 275
Pomógł: 9
Dołączył: 24.07.2008
Skąd: Racibórz

Ostrzeżenie: (10%)
X----


Nie rozumiem, ja w sql siedze krótko (hm 2 dni) i gdzie mam to wsadzić ? i rozumiem że jako "nr" mam coś podać ale co ?

nie wiem czy dobrze wytłumaczyłem, chodzi o wyświetlanie wszystkich linków a obok są strzałki w góre i dół, i otóż mam problem bo stworzyłem tą zamiane ale potrzebuje id oby dwóch linków które chce zamienić ... a nie wiem jak pobrać te drugie id które jest link wyżej/niżej


--------------------
Firefox - The Best,
Internet Exokier - shit

Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
i rozumiem że jako "nr" mam coś podać ale co ?

Za nr podajesz bieżący ID. Złącz sobie zapytania przez UNION.

Generalnie: pobierasz "właściwy" rekord, ten, który ID ma mniejsze od bieżącego i dorzuć jeszcze jedno zapytanie, które pobierze większy ID od bieżącego.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
dk1342
post
Post #5





Grupa: Zarejestrowani
Postów: 275
Pomógł: 9
Dołączył: 24.07.2008
Skąd: Racibórz

Ostrzeżenie: (10%)
X----


hm miej więcej zrozumiałęm ale trudniej wykonać zrobiłem tak:

  1. <?php
  2. $link=mysql_query('SELECT * FROM linki ORDER BY id asc');
  3. while($wiersz=mysql_fetch_array($link))
  4. {
  5. $idd = $wiersz['id'];
  6. $link = mysql_query("SELECT * FROM linki WHERE id='$idd'");
  7. $cos = mysql_fetch_array($link);
  8. $iddd = $cos['id'];
  9. $link2 = mysql_query("SELECT * FROM linki WHERE id='$iddd'");
  10. $cos2 = mysql_fetch_array($link2);
  11. echo 'Link: '.$wiersz['link'].' <a href="sql.php?cos=dol&id='.$wiersz['id'].'&id2='.$cos2['id'].'">/| </a> |/<br />';
  12. echo "Opis: ".$wiersz['opis']."<br />";
  13. }
  14. ?>


i w ogóle nie wyświetla a hrefa... w źródle też ale link i opis wyświetla jak by co...

sorry pomyliłem linki, to moje wyświetla a href, wyświetla tylko jeden wynik i id2 = id1 czyli są takie same :/


aa zapomniałem o tym "WHERE ID>nr LIMIT 1 " zmieniłem nie co mój kod i działa smile.gif (chyba bo jeszcze dokladnie nie testowalem) dzięki


____________________________________________________

sry że troche odkopuje ale jednak mam mały błąd to pobiera tylko id które jest niżej, a jak chce przesunąć wyżej to musze pobrać id które jest wyżej, próbowałem zmienić znak > na < ale cały czas jest 0 ..

$idd = $wiersz['id'];
$link3 = mysql_query("SELECT * FROM linki WHERE id<$idd LIMIT 1");
$cos3 = mysql_fetch_array($link3);

Ten post edytował dk1342 15.03.2009, 14:52:24


--------------------
Firefox - The Best,
Internet Exokier - shit

Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Trochę mieszasz z tymi zmiennymi, ale do filtrowania masz użyć cały czas tego samego ID.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
dk1342
post
Post #7





Grupa: Zarejestrowani
Postów: 275
Pomógł: 9
Dołączył: 24.07.2008
Skąd: Racibórz

Ostrzeżenie: (10%)
X----


"dorzuć jeszcze jedno zapytanie, które pobierze większy ID od bieżącego."

Robie tak:

$link3 = mysql_query("SELECT * FROM linki WHERE id<$test LIMIT 1");
$cos3 = mysql_fetch_array($link3);

gdzie $test to bieżący id i nie działa cały czas zwraca "0" dziwne bo to praktycznie to samo zapytanie które pobiera id niżej tylko zmieniłem znak > na < żeby pobrało górne a nie dolne id

Ten post edytował dk1342 15.03.2009, 15:50:56


--------------------
Firefox - The Best,
Internet Exokier - shit

Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




ORDER BY musi być takie samo, jak w pierwszym zapytaniu.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 18:27