Autor | Zpráva | ||
---|---|---|---|
Školník Profil |
#1 · Zasláno: 14. 3. 2007, 23:43:52
Po delší odmlce jdu zase žadonit o radu. Nenapadlo mě, pod jakou frází hledat, proto tu otázku položím.
Ukládám do databáze hodnoty ID a třeba NAZEV. ID je auto_increment. Představte si, že v databázi je už třeba 20 řádků s ID od 1 do 20. A rozhodnu se 10. řádek smazat. Chtěl bych, aby se desátý smazal a jednotlivé zápisy nad devítkou se posunuly o číslo níž. Tj. v databázi by bylo 19 řádků s ID od 1 do 19. Ne 1-9 a 11-20. Nu a jak na to.. Díky :-) |
||
Školník Profil |
#2 · Zasláno: 14. 3. 2007, 23:46:47
Ten název je trochu zavádějící, omlouvám se..
|
||
tiso Profil |
#3 · Zasláno: 14. 3. 2007, 23:52:08
...takéto veci sa s primárnym kľúčom nerobia, vytvor si stĺpec poradie a hraj sa s ním...
|
||
Školník Profil |
#4 · Zasláno: 14. 3. 2007, 23:54:46 · Upravil/a: Školník
Dobrá tak tam je ještě sloupec PORADI, ktery je stejny jako ID, jen neni primary key...:)
//stejný jako ID je do doby, než se s tím samozřejmě začne hejbat :-) |
||
tiso Profil |
#5 · Zasláno: 15. 3. 2007, 00:07:17
1. vyber si hodnotu poradia pre id ktore chces zmazat: SELECT poradi FROM tabulka WHERE id=10
2. uloz si ju do premennej (napriklad $poradi) 3. zmaz si riadok DELETE FROM tabulka WHERE id=10 4. zmensi poradie nasledujucim UPDATE tabulka SET poradi=poradi-1 WHERE poradi>$poradi |
||
Leo Profil |
#6 · Zasláno: 15. 3. 2007, 08:58:22
"1. vyber si hodnotu poradia pre id ktore chces zmazat: SELECT poradi FROM tabulka WHERE id=10
2. uloz si ju do premennej (napriklad $poradi) 3. zmaz si riadok DELETE FROM tabulka WHERE id=10 4. zmensi poradie nasledujucim UPDATE tabulka SET poradi=poradi-1 WHERE poradi>$poradi" Fajn, a co kdyz vam nekdo mezi body 2 a 3, nebo 4, zmeni obsah tabulky? Musite tabulku bud zamknout, nebo pouzit transakce, nebo ten UPDATE prepsat. Leo |
||
25k Profil * |
#7 · Zasláno: 15. 3. 2007, 09:55:42
Velice snadne reseni ....
smazni sloupec ID a znovu ho vytvor opet s autoincrementem ... jako kdyz si zakladal tabulku, cisla se precisluji sama. |
||
tiso Profil |
#8 · Zasláno: 15. 3. 2007, 10:06:32
Leo - viem, toto nie je konečné riešenie...
|
||
Školník Profil |
#9 · Zasláno: 15. 3. 2007, 10:11:14 · Upravil/a: Školník
25k :-D
edit: omlouvám se, měl jsem vtipnou náladu, asi jsem jedl hodně kaše..:-) |
||
roberta Profil |
#10 · Zasláno: 15. 3. 2007, 10:14:55 · Upravil/a: roberta
Školník
Dobrá tak tam je ještě sloupec PORADI, ktery je stejny jako ID, jen neni primary key...:) primary key nemá nič spoločné s poradím. poradie musí zadať ten, kto vyplňuje údaje do tej tabuľky. poradie potom môže zadávať ručne, alebo mu treba vytvoriť prostredie, aby to poradie nemusel písať ručne. napr. dosť často sa to robí tak, že sa vypíše zoznam záznamov na obrazovku, vedľa zoznamu sa dajú tlačítka (hore/dole) a po označení záznamu a stlačení príslušného tlačítka sa záznam presunie hore/dole a v databáze potom iba meníš stĺpec PORADIE |
||
25k Profil * |
#11 · Zasláno: 15. 3. 2007, 10:20:07
Skolnik nevim cemu se jako smejes ... vyzkousel si to?
|
||
koudi Profil |
#12 · Zasláno: 15. 3. 2007, 10:23:25
25k
Skolnik nevim cemu se jako smejes ... vyzkousel si to? Fungovat to samozřejmě bude, ale je to opravdu vhodné řešení? Vždycky, když vymažu řádek z databáze měnit strukturu tabulky je podle silně nevhodné. |
||
25k Profil * |
#13 · Zasláno: 15. 3. 2007, 10:37:06
|
||
tiso Profil |
#14 · Zasláno: 15. 3. 2007, 10:39:43
koudi - o vhodnosti toho čo chce by sa tiež dalo polemizovať...
Školník - ešte jedno riešenie - vôbec tam to poradie nedávaj, o id sa nesteraj a čísluj si riadky v PHP |
||
roberta Profil |
#15 · Zasláno: 15. 3. 2007, 10:42:30
tiso
ešte jedno riešenie - vôbec tam to poradie nedávaj, o id sa nesteraj a čísluj si riadky v PHP len akurát, ako zabezpečíš, aby sa vypisovali tie záznamy v správnom poradí |
||
tiso Profil |
#16 · Zasláno: 15. 3. 2007, 11:47:09
roberta ORDER BY ID
|
||
koudi Profil |
#17 · Zasláno: 15. 3. 2007, 11:53:11
tiso
- o vhodnosti toho čo chce by sa tiež dalo polemizovať... To ano, je to poměrně blbý nápad. Ale vždycky je lepší i blbý nápad implementovat dobře. Nejhorší je blbý nápad s příšernou impelentací :) |
||
roberta Profil |
#18 · Zasláno: 15. 3. 2007, 12:18:02 · Upravil/a: roberta
tiso
ORDER BY ID takže, keď insertnem 100 záznamov (id sú zatiaľ, čo sa týka poradia v poriadku). potom pridám ďalší záznam (ten bude mať id 101), ale chcem, aby sa zobrazoval na 53-ťom mieste, myslíš, že mi to vyrieši ORDER BY ID? EDIT-> tiso, prepáč, to tvoje 2 riešenie je dobré. zle som si prečítal pôvodnú otázku |
||
Školník Profil |
#19 · Zasláno: 15. 3. 2007, 15:03:48
Díky kluci, já potřebuji nejen, když vymažu jeden řádek srovnat číslování, ale jak tu někdo psal i posouvat jednotlivé příspěvky výše / níže. Už jsem to zhruba vyřešil, děkuju Ti tiso za nakopnutí a Leovi za další připomínky..:-)
|
||
one_k Profil |
#20 · Zasláno: 15. 3. 2007, 16:23:47
Školník
A k cemu muze byt dobre toto? id je neco jako rodne cislo. predstavte si ze by se rodna cisla menila pokazde kdyz nekdo umre.. vsak pokud zmenis id, tak je vse v pr.. Teda je pravda, ze nevim jak databazi vyuzivate.. |
||
Školník Profil |
#21 · Zasláno: 15. 3. 2007, 16:25:39
one_k Snad si rozumíme, požadavek jsem napsal na začátku špatně. ID se nemění, mění se PORADI
|
||
one_k Profil |
#22 · Zasláno: 15. 3. 2007, 16:57:07
Školník
aha - to jsem prehledl. |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0