Autor Zpráva
IdemeNaHavaj
Profil
Ahoj,
mám problém a dúfam že sa bude dať vyriešiť. Potrebujem urobiť ID položky napevno.
Myslím to tak, že ak budem mať v MySQL tieto položky
id   meno    priezvisko
1    janko    hrasko
2    jozko    mrkvicka
3    anton   zeleny
4    petra    fialova
Tak tie ID sa meniť nebudú ani po zmazaní niektorého údaju.
Pre pochopenie, ak napríklad z DB zmažem jozko mrkvicka ktorý má id 2, tak id 4 sa vymaže, a mená od id 4 po id 2 sa posunú o 1 vyššie.

Teda nebude
id   meno    priezvisko
1    janko    hrasko
3    anton   zeleny
4    petra    fialova

ale bude

id   meno    priezvisko
1    janko    hrasko
2    anton   zeleny
3    petra    fialova

Ako toto, prosím, docieliť?
pcmanik
Profil
IdemeNaHavaj:
Máš nejaký skutočne rozumný dôvod, prečo to potrebuješ? Všeobecne to totiž nieje dobrý napad.
IdemeNaHavaj
Profil
pcmanik:
Používám ID pro pořadí záznamu - to je špatně. Nepoužívejte ID jako pořadí záznamu. Udělejte na to zvláštní sloupec, ale většinou to ani není nutné, stačí jen seřadit podle nějakého už existujícího sloupce

Áno chcem na to urobiť špeciálny stĺpec, nie ten ktorý mám nastavený ako AI index. Takto som to myslel.

A potrebujem to pretože niečo načítavam z DB, a všetky záznamy zobrazujem v divoch
while( bla bla ) {
$id = cislo id musi byt po porade od 1 do pocet zaznamov;
?>
<div name="<?$id?>">bla bla</div>
<?
}
?>
FilipProgramator
Profil *
Když máš tabulku, kde byl záznam s id=3 smazán:
id   meno    priezvisko
1    janko    hrasko
2    jozko    mrkvicka
4    anton   zeleny
5    petra    fialova

A vybíráš všechny sudé záznamy (2,4). Očekáváš, že ve sloupci "#" (pořadí) dostaneš:
#   meno    priezvisko
1    jozko    mrkvicka
2    anton   zeleny

Nebo:
#   meno    priezvisko
2    jozko    mrkvicka
3    anton   zeleny

V prvním případě můžeš použít způsob zmíněný na stack overflow, nebo číslovat záznamy v php:
$i = 1;
foreach($zaznamy as $zaznam) {
    // .. neco
    $i++;
}

Druhý případ je dost nešťastný a měl by jsi asi vymyslet něco jiného. Pokud na něm budeš trvat, vyřeší to po vymazání jeden update:
UPDATE tabulka SET poradi=poradi-1 WHERE poradi > poradi_mazaneho. Nejsem si ale jistý, jak to bude s výkonností, zkus explain.
preca1
Profil
Bych řek, že bys to moh udělat stejně, jak je to tady na diskusi. Generuj to pořadový číslo v PHP. Nestačí to?
IdemeNaHavaj
Profil
Pomohlo mi to, FilipProgramator.
Potreboval som spojiť PHP načítavanie z DB do JS funkcií a ani ma nenapadlo použiť ten trik s $i++;
Ďakujem.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: