Přidávání záznamů do DATABÁZE MySQL

3 příspěvky

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. Dobrý den, založij jsem si databázu v phpMyadmin a chtěl bych do ní přidávat záznamy přes webové rozhraní do tabulky Seznam přihlášených závodníků. Problém je, že s jazykem PHP a SQL jsem se setkal poprvé a nemůžu vše nějak vyladit, aby to fungovalo. Založil jsem následující stránky - na kterých je formulář - uložené do 15-02php3: <head> <title> Novoměstský pětiboj 2011 - on-line přihláška</title> </head> <body bgcolor="#ffebcd"> <H1>Přihlášení nového závodníka</H1> <STRONG>Zadejte údaje o novém závodníku:</STRONG> <FORM ACTION=15-03.php3 METHOT=GET> <table font class=text> <tr><td>Jméno : <td><input TYPE=TEXT NAME=jmeno SIZE=20> <tr><td>Příjmení : <td><input TYPE=TEXT NAME=prijmeni SIZE=20> <tr><td>Reg. číslo : <td><input TYPE=TEXT NAME=RC SIZE=7> <tr><td>Č. čipu :<td><input TYPE=INT NAME=SI SIZE=3> <tr><td>E-mail : <td><input TYPE="text" NAME=Email SIZE=30 <br> <tr><td>Kategorie:<td><select name="kategorie" > <option selected value="A">A</option> <option value="B">B</option> <option value="C">C</option> </select> <br> <br> <TR><TH COLSPAN=1><INPUT TYPE=Submit VALUE="Odeslat"> </table> </FORM> </body> a zde jsou stránky k obsluze formuláře - uložené do 15-03.php3: <head> <title> Novoměstský pětiboj 2011 - on-line přihláška</title> </head> <body> <? mysql_Connect("mysql.webzdarma.cz"); @$spojeni = ODBC_Connect("np", "np", "*********"); if (!$spojeni): echo "<H1>Nepodařilo se připojit k databázi!</H1>"; else: @$vysledek = ODBC_Exec($spojeni, "INSERT INTO Seznam přihlášených závodníku VALUES( $jmeno, '$prijmeni', '$RC', '$SI', $Email)"); if (!$vysledek): echo "<H1>Nový záznam se nepodařilo přidat!</H1>"; else: ?> <H1>Nový záznam byl úspěšně přidán</H1> <FORM ACTION=np_prihlasky.html METHOD=GET> <INPUT TYPE=Submit VALUE="Prohlížení seznamu přihlášených závodníků"> </FORM> <FORM ACTION=np_online_prihlaska.html METHOD=GET> <INPUT TYPE=Submit VALUE="Přidání nového závodníka"> </FORM> <FORM ACTION=index.html METHOD=GET> <INPUT TYPE=Submit VALUE="Zpět na úvodní stranu"> </FORM> <? endif; ODBC_Close($spojeni); endif; ?> </body> Zda by si někdo s tímhle věděl rady, tak prosím odepište. Mockrát děkuji za odpoveď Martin Křivda P.S.: stránky ještě nejsou zveřejněny!
  2. Haleluja, toto je nádherný příklad toho, jak by to ve finále opravdu nemělo vypadat ;) Začnu funkční podstatou: 1) Je zbytečné používat odbc_ funkce, pro práci s mysql ti bohatě postačí běžné mysql_ funkce (mysql_connect, mysql_query). 2) Prováděný SQL dotaz je špatně, doporučím nastudovat manuál (http://www.junext.net/mysql/). tvoje tabulka se určitě nejmenuje "Seznam přihlášených závodníku", a i kdyby se náhodou takto jmenovala, musel by být její název (protože obsahuje mezery) uzavřen ve zpětných apostrofech (`). 3) Proměnným $jmeno,$prijmeni,$RC ve svém skriptu nikde nedáváš hodnotu. Informace z formuláře máš v proměnných $_GET a $_POST (obě jsou asociativní pole). Tvůj zápis je pozůstatkem kdysi používaného (a pitomci používamého dodnes) tzv. register_globals, které veškerý obsah zmiňovaných $_GET a $_POST proměnných mapovaly na běžné $proměnné. 4) Tvé soubory mají příponu .php3, proč? Používáš snad .php verzi 3? Používej normální příponu .php. 5) Ujasni si rozdíl mezi formulářem posílaným metodu get (kdy je veškerý zadaný obsah vidět v url dalšího souboru -- to má mimochodem několilk nevýhod) a metodou post (data pak nejsou vidět v url). Všeobecně lze říct, že ve většině případů je post ten správný ;) 6) Nepoužívej potlačování chyb přes @, zejména ve chvíli, kdy se snažíš chyby odhalit. Chybové hlášky php jsou (ač se to nezdá) docela schopné a výstižné. 7) Většina textových editorů neumí zvýrazňovat syntaxi u podmínek, když jsou zapisované jako if(): else: endif;. Používej proto spíš if(){ }else{ }, poděkuje ti minimálně ten, kdo po tobě bude výsledný kód někdy číst. 8) Nezapomíněj na kontrolu dat, které ti uživatel do formuláře nastrká! Kdybych do některého z tvých polí napsal jako '); DROP.. --, mohl by ses divit, kde máš databázi. 9) Html tagy by se měly psát malými písmeny (minimálně podle doporučení w3c), hodnota atributů by měla být uzavřena v uvozovkách (a to vždy: action="zpracovani.php"). Mimochodem ti ve formuláři chybí uzavření tagu u "NAME=Email SIZE=30 <br>". Jo, je toho hodně a možná to zabere nějaký čas. Rozhodně to ale není snůška mých výmyslu (a to doufám někdo potvrdí :). Mimochodem, body 7 a 4 jsou jenom takové "drobnosti", na funkčnost skriptu nemají vliv.
  3. Mockrát děkuju za odpověď, ještě vše není jasné, ale to snad pochopím časem. Martin Křivda

← Zpět na všechna témata