Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Usuniecie luki, w id
Domin
post 6.06.2006, 17:54:05
Post #1





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 17.11.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cześć...

Mam malutki problem, oróż chodzi o zmianę wartości jednej komórki we wszystkich rekordach. Tzn...
Mam kilka rekordów z od. wartosciami wg których jest sortowanie np.

- cos 1
- cos1 2
- cos3 3
- cos4 4
- cos5 5

i teraz usuwam rekord "cos3" wiec w wartosciach mam lukę bo zostaja mi wartosci 1,2, ,4,5...
Jak teraz zrobić aby wartosci zostały zmniejszone o 1, czyli żeby została zlikwidowana dziura... Chcę aby wartości wygladały tak 1,2,3,4

Jak to zrobić...

Czytałem coś o wyciągnięciu do tablicy, ale nie wiem jak się do tego przybrać:/

Ten post edytował Domin 6.06.2006, 18:22:29


--------------------
Głupi wie wszystko, mądry uczy się całe życie.
Go to the top of the page
+Quote Post
MatheW
post 6.06.2006, 19:48:21
Post #2





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 29.05.2006
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Aż tak konieczne jest, ażeby id były po kolei? Przecież i tak możesz sobie za pomocą skryptu, zapytania obliczyć który to jest rekord z kolei.


--------------------
[gg:8166107][jid:mmatheww@jabberpl.org][mail:mat.wojcik[at]gmail.com][www: http://mwojcik.pl]
Go to the top of the page
+Quote Post
Domin
post 6.06.2006, 19:52:28
Post #3





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 17.11.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Gdyby nie było konieczne to bym tego nie robił... a sortowanie jest wg wartości, a wszystko jest zrobione tak że mogę zmienić kolejność, jedna wartosć jest dodawana druga odejmowana, a kiedy ejst dziura poprostu wychodzą dwie wartości z tymi samymi id :/


--------------------
Głupi wie wszystko, mądry uczy się całe życie.
Go to the top of the page
+Quote Post
NuLL
post 6.06.2006, 19:56:54
Post #4





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

Ostrzeżenie: (0%)
-----


OFFTOPIC ( na przyszlosc ) - klucza podstawowego dla rekordu sie nie zmienia.

Ten post edytował NuLL 6.06.2006, 19:57:06


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Jarod
post 6.06.2006, 20:30:50
Post #5





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Cytat(Domin @ 6.06.2006, 18:52 ) *
Gdyby nie było konieczne to bym tego nie robił... a sortowanie jest wg wartości, a wszystko jest zrobione tak że mogę zmienić kolejność, jedna wartosć jest dodawana druga odejmowana, a kiedy ejst dziura poprostu wychodzą dwie wartości z tymi samymi id :/


Poprawić skrypt/bazę?

Null ma racje.


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
Domin
post 6.06.2006, 20:41:43
Post #6





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 17.11.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


nie chodzi mi o id rekordów, tylko o wartosci w kolejnej wierszu tabeli...
Podam przykład...

id nazwa pozycja
1 cos 1
2 cos2 3
3 cos 3 2

sortowanie odbywa się wg komórki "pozycja" , a więc jak usunięmy rekord o id 3 to w liczbach sortowanych będzie 1 i 3 a teraz trzeba zrobić tak żeby 3 zmienić na 2 i kolejne rekordy też...


--------------------
Głupi wie wszystko, mądry uczy się całe życie.
Go to the top of the page
+Quote Post
Jarod
post 6.06.2006, 20:56:55
Post #7





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Cytat(Domin @ 6.06.2006, 19:41 ) *
nie chodzi mi o id rekordów, tylko o wartosci w kolejnej wierszu tabeli...
Podam przykład...

id nazwa pozycja
1 cos 1
2 cos2 3
3 cos 3 2

sortowanie odbywa się wg komórki "pozycja" , a więc jak usunięmy rekord o id 3 to w liczbach sortowanych będzie 1 i 3 a teraz trzeba zrobić tak żeby 3 zmienić na 2 i kolejne rekordy też...



Tylko podaj sensowny powód tej zamiany? Bo ja nie rozumiem dlaczego chcesz to zroić.


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
babejsza
post 6.06.2006, 21:03:01
Post #8





Grupa: Zarejestrowani
Postów: 407
Pomógł: 1
Dołączył: 4.03.2003
Skąd: warszawa

Ostrzeżenie: (0%)
-----


Najprościej (chodź na pewno nie najoptymalniej), będzie:

  1. <?
  2.  
  3. $query = mysql_query("SELECT * FROM tabela");
  4. $i=0;
  5. while($rekord = mysql_fetch_array($query)){
  6.  mysql_query("UPDATE tabela SET twoja_kolumna = '".$i++." WHERE id='$rekord[0]'");
  7. }
  8.  
  9. ?>


Ten post edytował babejsza 6.06.2006, 21:04:00
Go to the top of the page
+Quote Post
Domin
post 6.06.2006, 21:18:59
Post #9





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 17.11.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(J4r0d @ 6.06.2006, 21:56 ) *
Tylko podaj sensowny powód tej zamiany? Bo ja nie rozumiem dlaczego chcesz to zroić.


Przeczytaj wyżej..., bo jest mi to potrzebne przy sortowaniu i przy zmianie kolejności!!!

Ale to nie może być wg dowolnej kolejności, tylkowg takiej jaka była ustalona, poprostu trzeba tylko zmienić niektóe liczby o 1 w dół!

Ten post edytował Domin 6.06.2006, 22:15:58


--------------------
Głupi wie wszystko, mądry uczy się całe życie.
Go to the top of the page
+Quote Post
SongoQ
post 6.06.2006, 23:32:54
Post #10





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

Ostrzeżenie: (0%)
-----


Dziwie sie ze meczycie dalej ten temat. Autor postu wyraznie napisal ze nie chodzi o id.
Jesli masz mozliwosc stosowania triggerow to bardzo latwo takie cos osiagnac. Jesli nie ma to juz musisz kombinowac.

Najblizsze luki da sie samym zapytaniem wylanic. Ale nie zalatwi Ci wszystkiego.

  1. SELECT * FROM tabela t1, tabela t2 LEFT JOIN t1.pole = t2.pole + 1 WHERE t2.pole IS NULL


To wyciagnie pojedyncze luki odnnosnie przesowania bedzie trudno. Jesli zalezy Ci na zapytaniu tylko to musisz troche pokombinowac. Kiedys mialem podobny problem z przyznawaniem adresow ip.


--------------------
Go to the top of the page
+Quote Post
Domin
post 8.06.2006, 16:44:53
Post #11





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 17.11.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Zrobiłem to w bardzo prosty sposób, zamieszczam jak by ktos potzrebował...

  1. <?php
  2. if (isset($_GET['del']) and is_numeric($_GET['kat']) and is_numeric($_GET['poz']) ){
  3.  
  4.  $query = "SELECT * FROM tabelka WHERE kat_id = {$_GET['kat']} and kat_order > {$_GET['poz']}";
  5.  $result = mysql_query($query);
  6.  $row = mysql_num_rows($result);
  7.  if ($row > 0) {
  8.  $query = "UPDATE tabelka SET kat_order = kat_order-1 WHERE kat_id = {$_GET['kat']} and kat_order > {$_GET['poz']}";
  9.  $result = mysql_query($query);
  10.  }
  11. ?>


--------------------
Głupi wie wszystko, mądry uczy się całe życie.
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 Wersja Lo-Fi Aktualny czas: 26.06.2025 - 18:03