Autor Zpráva
beta
Profil *
Mohl by mi někdo poradit jak vymazat všechny záznamy z tabulky kromě posledního? děkuju
tiso
Profil
Najrýchlejšie tak že si vyberieš ten posledný záznam cez SELECT, potom DROP-neš tabuľku a vložíš ten záznam do prázdnej tabuľky...
HonzaH2
Profil
vpodstatě jak říká tiso jen místo DROP použij DELETE FROM nazevtabulky protože nepotřebuješ smazat tabulku, ale jen vyprázdnit. Poslední záznam zjistíš prostřednictví funkce mysql_insert_id
Alphard
Profil
jen dodám, že rychlejší než delete from je truncate table tvoje_tabulka
HonzaH2
Profil
pravda TRUNCATE TABLE je mnohem rychlejší než DELETE FROM protože smaže celou tabulku a zase jí založí, nemusí tedy mazat řádky po jednom. U hodně velkých tabulek je toto zrychlení opravdu velký. Tento příkaz ale nevrací počet odstraněných řádků ... což je ale asi jedno :o)
beta
Profil *
jenže dropnout celou tabulku nemůžu protože chci smazat jen data jednoho uživatele a ne všech:-)
tiso
Profil
Alphard pravda, myslel som truncate, omylom som napísal drop...
HonzaH2
Profil
jenže dropnout celou tabulku nemůžu protože chci smazat jen data jednoho uživatele a ne všech:-)

vždyť jsi nejprve psal, že potřebuješ smazat všechny záznamy kromě posledního. Teď píšeš, že potřebuješ smazat jen jeden záznam a ne všechny .... tak si to ujasni :o)

Pokud chceš smazat všechno kromě jednoho záznamu, tak použij TRUNCATE - to sice smaže celou tabulku, ale zase jí založí, což je rychlejší než mazat záznam po záznamu. Takže když si ten jeden záznam, kterej potřebuješ, nejprv načteš, tak ho potom zas do té tabulky vložíš.

Pokud chceš smazat jen jeden záznam, tak použij DELETE FROM nazevtabulky WHERE podmínka
beta
Profil *
omlouvám se, špatně jsem se vyjádřil...chci smazat všechny záznamy vložené uživateli ale zanechat vždy poslední...ne smazat celou tabulku...:-)

$lastid = mysql_insert_id();
myslel jsem že to udělám ("DELETE * FROM tabulka WHERE id = <$lastid and login = '$_SESSION[login]'")

bohužel funkce mysql_insert_id() získá číslo jen v případě insert do tabulky ...
HonzaH2
Profil
tak vlož prázdnej záznam a pak použij mysql_inserd_id a získáš ID, pak odečti jedničku a máš číslo svého posledního záznamu :o)) to ale asi neni úplně čisté řešení :o)

nebo projdi v cyklu všechny záznamy a do proměnné si ukládej vždy nejvyšší ID, na konci cyklu budeš mít v proměnné ID posledního záznamu
HonzaH2
Profil
nebo tímto přímo vyfiltruješ poslední záznam:

SELECT * FROM tabulka ORDER BY id DESC LIMIT 1
beta
Profil *
napadlo mě spíš tohle

$select = mysql_query("SELECT * FROM taqbulka WHERE login = '$_SESSION[login]' order by desc limit 1");
$count = mysql_fetch_assoc($select);
$lastid = $count[id];

$detete = ("DELETE * FROM tabulka WHERE id < $lastid and login = '$_SESSION[login]'");

bohužel něco tam je blbě...pokud to celkově není hloupost...šlo by to a pokud ano kde mám chybu?
beta
Profil *
tak si mě předběhl :-)
Toto téma je uzamčeno. Odpověď nelze zaslat.