Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Id/zamiana miejsca
Forum PHP.pl > Forum > Przedszkole
dk1342
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
erix
  1. WHERE ID>nr LIMIT 1
dk1342
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
erix
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.
dk1342
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);
erix
Trochę mieszasz z tymi zmiennymi, ale do filtrowania masz użyć cały czas tego samego ID.
dk1342
"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
erix
ORDER BY musi być takie samo, jak w pierwszym zapytaniu.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.