Autor | Zpráva | ||
---|---|---|---|
tozi Profil |
#1 · Zasláno: 16. 1. 2015, 20:52:20 · Upravil/a: Moderátor (editace znemožněna) 17. 1. 2015, 17:12:12
Ahojte, momentálne sa mi ukladajú záznamy pod ID 1,2,3,4,5 atď
Ako to zmeniť podľa roku na napr 20150001,20150002,20150010 atď? Dá sa to? Zatiaľ to vo výpise vyzerá takto: <?php $servername = ""; $username = ""; $password = ""; $dbname = ""; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id_tabulky, meno, email FROM tabulka"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "id: " . $row["id_tabulky"]. " | Meno: " . $row["meno"]. " | E-mail: " . $row["email"]. " " . "<a href='delete.php?cmd=delete&id_tabulky=".$row['id_tabulky']."'>Zmazať</a>". "<br>"; } } else { echo "0 results"; } $conn->close(); ?> |
||
xROAL Profil |
#2 · Zasláno: 16. 1. 2015, 21:10:16
So samostatným
auto-increment om niečo takéto asi nedosiahneš.
Šlo by na to ale využiť funkcie/procedúry v MySQL, ktoré by automaticky generovali ID v požadovanom tvare pre každý vložený záznam. Rovnaký problém riešený na stackoverflow (v angličtine). V poslednej odpovedi je linknutý aj tutorial. |
||
mimochodec Profil |
#3 · Zasláno: 16. 1. 2015, 21:17:54
tozi:
Jestli potřebuješ číslo ve tvaru rok + číselná řada, radši si ho generuj nějakým jiným způsobem. Snaha zadávat ID zavání problémem. |
||
Taps Profil |
tozi:
Je důležité si uvědomit, že pokud budeš využívat ID, tak v roce 2016 nebudeš schopen dosáhnout 20160001 (respk. generovat číselnou řadu od 1,2,3 atd) |
||
tozi Profil |
#5 · Zasláno: 17. 1. 2015, 07:57:41
Diky moc za rady.
Taps Ano viem, to by som asi založil novú tabuľku pre další rok. |
||
Taps Profil |
#6 · Zasláno: 17. 1. 2015, 09:26:19
tozi:
Podle me neni optimalni zakladat novou tabulku kvuli novemu roku. |
||
tozi Profil |
#7 · Zasláno: 17. 1. 2015, 10:40:58
Taps:
Iný nápad? V php a db som začiatočník takže som rád za každú radu, poučenie. |
||
Alphard Profil |
tozi [#7]:
Obecná rada, pro začátečníka není dynamické vytváření tabulek nikdy dobrý nápad. PS: Dal bych si pozor na hromadu jiných nápadů (kterých je plný internet) a pracují s funkcí max(). Taps: „v roce 2016 nebudeš schopen dosáhnout 20160001 (respk. generovat číselnou řadu od 1,2,3 atd)“ Teoreticky to možné je, viz Změna hodnoty auto increment. V praxi by to znamenalo automaticky přesně na začátku nového roku (obecně začátku období) spustit servisní script, který to přenastaví. Je to možné, ale rizikové. |
||
Alphard Profil |
Ještě doplnění, před řešením s max() jsem varoval kvůli tomu, že při smazání posledních záznamů recykluje dříve použitá id, to považuji za nepřijatelné. Bohužel jsem zjistil, že mnou výše odkázané řešení dělá to samé a ještě je omezené na MyISAM tabulky, takže se mi přestalo líbit.
1. Ale jsou situace, kdy z tabulky žádné záznamy nemažeme (můžeme jen nastavovat příznak smazání), pak to nevadí a šlo by k tomu přístoupit přes trigger. sqlfiddle.com/#!2/a94bc/2 2. Řádky mazat můžeme, potom je třeba ukládat si informaci o posledním id, zřejmě do další tabulky. Jde to nějak takhle. sqlfiddle.com/#!2/667bd/1 Doplnění k doplnění: Ty příklady jsou dost osekané, určitě bych patřičné sloupce ještě opatřil unikátním indexem sqlfiddle.com/#!2/83d561/1. |
||
tozi Profil |
#10 · Zasláno: 17. 1. 2015, 16:28:21
Veľmi pekne ďakujem. Aj za príklady. Idem sa s tým "hrať".
|
||
Časová prodleva: 9 let
|
0