Autor Zpráva
Doom4
Profil *
Dobry den chtel bych se zeptat jak osetrit formular tak aby do nej clovek zadal napr jedno jmeno ale to same nemohl zada po druhe :-( jak to udelat treba pres ip adresy nebo je proto nejaky script pres javascript ?
Leo
Profil
Zadat muze co chce. Otazka je ceho chcete docilit na serveru? Aby se to samy dvakrat neulozilo do databaze nebo co? Leo
Doom4
Profil *
Mno reknemez ze do formulare se zadavaji jmena a ty jmena jdou do databaze a z databaze ty jmena se zase vypisuji ven do tabulky , neco jako guestbook ,a jak udelat aby se nestalo ze by nekdo dvakrat zadal jmeno zum beispiel Petr
Leo
Profil
V databazi nastavit pro dany sloupec klic (unique), pak to selze pri pokusu o vlozeni duplicitni hodnoty, coz se v PHP snadno zjisti a podle toho se zaridi vystup do html. Leo
Jack
Profil *
Ono to automaticky selze pri zadavani duplicitniho klice ? Tedy kdyz si tam dam ID a dam tomu primary key, tak se nemuze stat ze tam budou 2X dve stejna cisla ? Ale ono to je tak ze vlozim Petr a id je 1 vlozim Petr znovu a id je 2 atd :-( takze to vyjde na stejno
WanTo
Profil
Jack
Imho unique nemusí být jen primary key.

Taky je tu další možnost, že ID nebude číslo, ale md5 hash z jména.
Jack
Profil *
To WanTo: A na to jak ? :-( :D to se muze kazdemu jmenu priradit unikatni hash ?
WanTo
Profil
Jack
Nejjednodušší bude označit sloupec se jménem jako UNIQUE. To uděláš jedním kliknutím v phpMyAdminu.

to se muze kazdemu jmenu priradit unikatni hash ?
Jo, jde to tak. Když ID vygeneruješ pomocí funkce md5 (umí jí myslím jak PHP tak MySQL), tak pro každá dvě stejná jména bude stejný i tenhle hash.
Leo
Profil
S primarnim klicem to nema co delat, proste nastavite unique (alespon v MySQL) pro sloupec jmeno, Leo
thingwath
Profil
Primární klíč musí už z principu být unikátní. Jenže když se tam dá další sloupec s ID a řekne se, že je to primární klíč, tak je primární klíč překvapivě opravdu to ID a sloupec se jmény může být opět jak chce :-)
Leo
Profil
Primarni klic je unikatni, ale sloupec muze byt unikatni bez toho, aby byl primarni. Leo

CREATE TABLE `uzivatele` (
`id` int(10) unsigned NOT NULL auto_increment,
`jmeno` char(20) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `jmeno` (`jmeno`)
) TYPE=MyISAM
Jack
Profil *
Tedy staci jen dat sloupci jmeno Unique key ?
thingwath
Profil
Jo. Každopádně je pak dobré si ohlídat, že databáze vrátila chybu a uživateli o tom říct. Není už to samozřejmě nutné :-)
Leo
Profil
Ano, jak pise thingwath - pokud chcete zpetnou vazbu, tak odchytite mysql_error (nebo cislo chyby, to se lip zpracovava) a zaonacite podle toho vystup, Leo
Toto téma je uzamčeno. Odpověď nelze zaslat.

0