| | |
| Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
Autor | Správa |
---|
Registrovaný: 11.12.07 Prihlásený: 12.02.24 Príspevky: 487 Témy: 138 Bydlisko: Bytča | Napísal baumax: 10.09.2009 8:34 | |
|
mam tabulku XY a v nej kazdy riadok ma stlpec s nazvom ID, ktory sa inkrementuje automaticky ...
ak som vlozil do tabulky napriklad 200 zaznamov, tak posledny zaznam ma ID=200
nasledne ked vymazem 50 zaznamov, tak posledny zaznam ma ID=150
OK
problem je ten, ze ked vlozim v tomto momente dalsi zaznam, tak mi neda ID = 151, ale on si to pamata, alebo co a da ID = 201
co s tym? nemoze to tak byt
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
Takto to musí byť. V prípade, že by to tak nebolo, by ti mohli nastávať rôzne konflikty. Napríklad máš druhú tabulku YZ, ktorá má id_YZ a viaže sa na XY cez id_XY. V prípade, že by si druhýkrát použil to isté id_XY, môže ti nastať problém. Id je o tom, že to je identifikátor. Ak by si použil druhýkrát to isté id, je to ako keby si rodné čísla mŕtvych ľudí prideľoval tým novonarodeným.
Ale ak by ťa to veľmi mátalo, je tu Kód: ALTER TABLE tbl AUTO_INCREMENT = 100;
|
|
Registrovaný: 11.12.07 Prihlásený: 12.02.24 Príspevky: 487 Témy: 138 Bydlisko: Bytča | Napísal autor témy baumax: 10.09.2009 8:50 | |
|
rooobertek píše: Takto to musí byť. V prípade, že by to tak nebolo, by ti mohli nastávať rôzne konflikty. Napríklad máš druhú tabulku YZ, ktorá má id_YZ a viaže sa na XY cez id_XY. V prípade, že by si druhýkrát použil to isté id_XY, môže ti nastať problém. Id je o tom, že to je identifikátor. Ak by si použil druhýkrát to isté id, je to ako keby si rodné čísla mŕtvych ľudí prideľoval tým novonarodeným. Ale ak by ťa to veľmi mátalo, je tu Kód: ALTER TABLE tbl AUTO_INCREMENT = 100;
takze ked ten prikaz pouzijem, tak dalsi pridany riadok bude mat ID=100 ?
|
|
Registrovaný: 11.12.07 Prihlásený: 12.02.24 Príspevky: 487 Témy: 138 Bydlisko: Bytča | Napísal autor témy baumax: 10.09.2009 8:55 | |
|
spravil som to a nic sa nestalo, stlpec, kde sa inkrementuje sa vola cislo
vymazal som zaznamy, pouzil ten prikaz a vlozil dalsi zaznam a spravilo to co som napisal hore
tabulka nie je viazana s inou ...
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
a aké bolo najvyššie id v tom čase? Nebolo vyššie ako si sa mu snažil dať?
stále trvám na tom, že je vhodnejšie nechať ho incrementovať samého.
Ďalším riešením by mohlo byť odstrániť zo stĺpca auto_increment a nastavovať to manuálne cez MAX(cislo)+1
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 11.12.07 Prihlásený: 12.02.24 Príspevky: 487 Témy: 138 Bydlisko: Bytča | Napísal autor témy baumax: 10.09.2009 9:46 | |
|
teraz mam 115 zaznamov .... dalsie som vymazal ... ak teraz vlozim zaznam, da mu cislo 155, dalsiemu 156 ...
ale ja potrebujem, aby vlozilo 116 ...
ak zaznamy 155 a 156 vymazem v DB a vlozim dalsi riadok, tak mu da cislo 157 ...
takze posledny prispevok, ktory je OK ma v stlpci cislo hodnotu 115, je to stlpec autoincrement
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
Proste to nerieš. Ja mám v niektorých tabuľkách ID s postupnosťou 1,50,96,98,200... Ak to je niečo, čo musí mať pekné číslovanie za radom, pridaj stĺpec s názvom poradie alebo tak niečo a s tým pracuj
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 11.12.07 Prihlásený: 12.02.24 Príspevky: 487 Témy: 138 Bydlisko: Bytča | Napísal autor témy baumax: 10.09.2009 10:23 | |
|
musim to riesit, lebo ked mam na stranu povedzme 30 zaznamov vypis a je tam ta medzera v ID, tak ked teraz vlozim novy zaznam, zobrazi mi len ten zaznam, ostatne nie, lebo su o viac ako 30 cisiel pozadu a musim dat predch. stranu aby som ich zobrazil.
ale myslim, ze to s tym, ze zrusim auto increment a dam MAX(cislo) + 1 vyriesim
|
|
Registrovaný: 11.12.07 Prihlásený: 12.02.24 Príspevky: 487 Témy: 138 Bydlisko: Bytča | Napísal autor témy baumax: 10.09.2009 10:46 | |
|
este mala podotazka ...
je mozne v jednom prikaze vlozit do DB tu hodnotu ?
Kód: mysql_query("INSERT INTO table (cislo,meno,datum,text) VALUES ('MAX(cislo)+1','".$meno."','".date("d.m.Y, H:i")."','".$_REQUEST[text]."')") or die("!!! Chyba: ".mysql_error());
asi to nejde, vsak? musim to MAX si najskor vydolovat z DB, vlozit do nejakej premennej a tu premennu vlozit akom hodnotu stlpca cislo
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
baumax píše: musim to riesit, lebo ked mam na stranu povedzme 30 zaznamov vypis a je tam ta medzera v ID, tak ked teraz vlozim novy zaznam, zobrazi mi len ten zaznam, ostatne nie, lebo su o viac ako 30 cisiel pozadu a musim dat predch. stranu aby som ich zobrazil.
aha, tak v tom pripade mas blbo spravene strankovanie, lebo to by malo byt nezavisle na hodnote id...
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 11.12.07 Prihlásený: 12.02.24 Príspevky: 487 Témy: 138 Bydlisko: Bytča | Napísal autor témy baumax: 10.09.2009 10:58 | |
|
a na com ma byt zavisle ?
tabulka obsahuje 4 stlpce, cislo prispevku, meno, datum a text prispevku
a ja to strankujem podla cisiel prispevkov
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 | |
Registrovaný: 11.12.07 Prihlásený: 12.02.24 Príspevky: 487 Témy: 138 Bydlisko: Bytča | Napísal autor témy baumax: 10.09.2009 11:16 | |
|
spravil som to takto nejako, snad je to OK ...
funguje to ... da sa to este nejakym jednoduchsim syntaxom ?
Kód: $resultxx = mysql_query("SELECT MAX(cislo) AS maximum FROM table"); $rowxx = mysql_fetch_array($resultxx); $maximalnecislo=$rowxx["maximum"]; $maximalnecisloxx=$maximalnecislo + 1;
mysql_query("INSERT INTO table (cislo,meno,datum,text) VALUES ('$maximalnecisloxx','".$meno."','".date("d.m.Y, H:i")."','".$_REQUEST[text]."')") or die("!!! Chyba: ".mysql_error());
|
|
Registrovaný: 11.12.07 Prihlásený: 12.02.24 Príspevky: 487 Témy: 138 Bydlisko: Bytča | Napísal autor témy baumax: 10.09.2009 11:19 | |
|
roobertek, ja strankujem inak, takto nejako:
Kód: $jump=$HTTP_GET_VARS["jump"]; if(!isset($jump)) $jump=0; $max=mysql_query("SELECT MAX(cislo) FROM table"); $count=mysql_result($max,0); $from=$count-$jump; $to=$count-$jump-30;
$buf=mysql_query("SELECT * FROM table WHERE cislo <= ".$from." AND cislo > ".$to." ORDER BY cislo DESC") or die("!!! Chyba: ".mysql_error());
.....
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
Mám pocit, že stále nerozumieš, čo ja chápem.
Do insertu cislo vôbec nedávaj. IDčka nechaj nech sa incrementujú ako chcú. Bárajs aj náhodne. To ťa vôbec netrápi.
Keď už vyberáš príspevky z db, urobíš query Kód: $buf=mysql_query("SELECT * FROM table ORDER BY cislo DESC LIMIT $od, $pocet");
A ešte jednu vec ti musím vytknúť: Kód: or die("!!! Chyba: ".mysql_error()); Ak potrebuješ vidieť chybu, vypíš si ju čo ja viem cez trigger_error, ale or die mysql_error je tá najhoršia alternatíva, aká môže byť.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|