Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przenumerowanie pola
Forum PHP.pl > Forum > Bazy danych > MySQL
stach
Dzindybry, pisze wlasnie koszyk produktow w ktorym jedna z waznych rzeczy jest Liczba porzadkowa, innymi slowy pozycja. Moj problem jest w tym w jaki sposob przenumerowac pozycje wpisow gdy jeden z nich zostal skasowany (oczywiscie z poziomu sql, z poziomu php nie ma z tym wiekszego problemu). Innymi slowy funkcja przenumerowywujaca wszytskie wpisy kolumny w momencie skasowania jednego rekordu.

Jesli podalem zamalo informacji, napiszcie a opisze dokladniej strukture, jak i problem. Narazie nie bede sie rozpisywal bo wydaje mi sie ze jesli ktos mial z tym problem zalapie o co mi chodzi.
kszychu
Jak rozumiem, jednym z pól tej tabeli jest jakieś id, które to właśnie chcesz przenumerować? A że tak spytam: po co Ci to pole? Pomiń je i nie będziesz musiał nic przenumerowywać.
stach
Nie, id nie jest ruszane (zreszta jest autoincrement), przenumerowac chce tylko wpis pola pozycja, jako ze produkty maja byc przesuwane w koszyku gora dol (dlaczego tak ? Bo pracodawca tak chce smile.gif ). Jesli mam przesunac w gore badz w dol, problemu nie ma, ale skasowanie produkty zalozmy z pozycja 4 z 10, powoduje dziure 1,2,3,5,6,7,8,9,10. Wiec szukam sposobu na to by wzial wszystkie wpisy z tabeli z koszyka numer jakistam i przeliczyl jeszcze raz by uwzglednic skasowany wpis (1,2,3,4,5,6,7,8,9).

Jesli nadal niezobrazowalem tego dobrze, jak tylko wroce do domu opisze to jeszcze dokladniej.
jol.us_
Po co wyswietlac id? Nie prosciej tak:
1. przed petla while wyswietlania rekordow tworzysz zmienna $poz=0;
2. w petli while robisz $poz=$poz+1;
i wyswietlasz przy kazdej pozycji
stach
Jak pisalem ja wiem jak to zrobic w php, mnie jest potrzebny sposob czysto mysql-owy...
jol.us_
Sory, nie doczytalem.

Sproboj moze tak, pisane "na kolanie" ale powinno dzialac.

  1. <?php
  2.  
  3. $query= &#092;"DELETE FROM tabela WHERE id='$id'\";
  4. $wynik= mysql_query($query);
  5.  
  6. $query2 = &#092;"SELECT id FROM tabela WHERE id>'$id'\";
  7. $wynik2 = mysql_query($query2);
  8. while ($rekord=mysql_fetch_array($wynik2)) {
  9. $id=$rekord[0];
  10. $nowe_id=$id-1, 
  11. $query3= &#092;"UPDATE tabela SET id='$nowe_id' WHERE id='$id'\";
  12. $wynik3 = mysql_query($query3);
  13. }
  14.  
  15. ?>
misterLu
sposób czysto SQLowy jest taki: niech ta kolumna będzie też typu auto_increment, a po każdym usunięciu rekordu usuwaj te kolumne i dodawaj ponownie, numery w odpowiedniej kolejności utworzą się automatycznie. (Tylko niech ta kolumna nie będzie żadnym kluczem obcym dla inenj tabeli).
stach
Cytat(jol.us_ @ 2004-10-08 13:35:40)
Sory, nie doczytalem.

Sproboj moze tak, pisane "na kolanie" ale powinno dzialac.

smile.gif Dzieki za pomoc jol.us_, ale jak mowilem zero php smile.gif. misterLu zaraz sprawdze, ale wyglada na to ze dokladnie tego szukalem. Dzieki .
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-2024 Invision Power Services, Inc.