ADMTC-UCSC-University of Colombo

Basics of PHP - 4

Basics of PHP - 4
1. Updating existing record in MySQL database
Basically, you will need to do the following things.

(1) Show the data from database and let user choose a record to update ( ) Let user modify existing data This requires settin !efault values to HTM" form (!) Update the data in database using SQL “UP"#$%” command
1.1 "atabase str&ct&re and &pdate operation f the database consists of non!relational "independent# flat tables only, then updating can be done by simply deleting old data and inserting new data into the table.
'o. $ 0 + 1 , 'a(e %ic&ey %ouse %innie %ouse 6onald 6uc& Buffy 6oggy 6umbo 5lephant ~ Sex % 3 % % % ~ Birt)day $'($!)*!)$ $'2*!)'!0+ $'2'!$$!0, 0))0!)*!)+ 0))0!)*!)1 ~ #ddress +,+,, -all street, ./ 4/356, 7a&arta 859:., Surabaya 7 ./, 9o&yo %;5, Somewhere ~ $e*ep)one )0!$0+1!)'2* )0!0+1$!',*+ )0!)1'0!'*$+ )+!(*+$!$0+$ )1!120*!+*$' ~

1. Delete record

(

%innie %ouse 0

3

$'2*!)'!0+

4/356, 7a&arta, 0

)0!0+1$!',*+

2. Insert updated record

<owe=er, if the database has relational tables, updating means “%odifying data while &eeping the internal position of record in the table”. So it cannot be done by simply deleting > adding, especially when the table has #rimary $ey. Suppose we do update of the following simple "but related# tables “participants ” table
pt+id $ 0 ! 1 , participant+na(e %ic&ey %ouse %innie %ouse "ona*d "&cBuffy 6oggy 6umbo 5lephant pro,ince+id 0 $ ! $ , p,+id $ 0 ! 1 ,

“pro,ince” table
pro,ince+na(e 7a&arta Surabaya Medan %a&assar Bali

Updating “"ona*d "&c-” record in “participants ” table is rather easier  ?ou can delete the record, and add new record with updated information

But updating “Medan” record in “pro,ince” table cannot be done by delete > add, because doing so will change the id of “Medan” to other =alue. ?ou should rather use SQL “UP"#$%” command to update the record.

1

ADMTC-UCSC-University of Colombo

Basics of PHP - 4

1. .nterface for adding or &pdating tab*e t)at )as t)e *in- to ot)er tab*e f the table has a field that is actually a &ey number to another table "li&e participants table#, then that field should be a drop!down list of selectable =alues li&e shown below.

Province field should be a dropdown list that has been generated from province table

n order to display this &ind of drop!down list, it is a good idea to write general!purpose function to produce the list.

:<: script for update page

• • • •

host, user, password of %ySQL name of database and table field to be the internal “=alue” and “item” currently selected item

Ieneral!purpose function

show_table_droplist

Output from the function

@select nameABpro=inceCidBD @option =alueA”$”D7a&arta@EoptionD @option =alueA”0”DSurabaya@EoptionD @option =alueA”+” se*ectedD%edan@EoptionD @option =alueA”1”D%a&assar@EoptionD ... @EselectD

9he =alue you get from the posting

Selected item A FC:;S9G“pro=inceCid”H

2

ADMTC-UCSC-University of Colombo

Basics of PHP - 4

show_table_droplist.php 1 @Jphp 2 function showCtableCdroplist " " FhostCname, FuserCname, Fpassword, FdatabaseCname, # FtableCname, FidCname, FfieldCname, FselectedCid# $K % EL .onnect to %ySQL database LE & Flin& A mysMlCconnect"FhostCname, FuserCname, Fpassword# or dieN ' mysMlCselectCdb"FdatabaseCname# or dieN ( 1) EL 5xecute SQL command LE 11 FsMl A BS5L5.9 OFidCnameO, OFfieldCnameO 38;% OFtableCnameOBN 12 Fresult A mysMlCMuery"FsMl#N 1" 1# EL 6isplay drop!down list items LE 1$ while "Fline A mysMlCfetchCarray"Fresult, %?SQLC/SS;.## K 1% echo B@option =alueAPFlineGFidCnameHPBN 1& if "FlineGFidCnameH AA FselectedCid# echo B selectedBN 1' echo BDBN 1( echo htmlspecialchars"FlineGFfieldCnameH#N 2) echo B@EoptionDQnBN 21 R 22 2" EL .losing procedures LE 2# mysMlCfreeCresult"Fresult#N 2$ mysMlCclose"Flin&#N 2% R 2& JD test_droplist.php * +est page for the function 1 @htmlD@bodyD 2 @pD:ro=inceS 3ou can add blan4 item if needed " @select nameABpro=inceCidBD # @optionD@EoptionD ,ame of host- user- password$ @Jphp and database of ./ 01 % reMuireConce"BshowCtableCdroplist.phpB#N & showCtableCdroplist"BlocalhostB,ByoichiB,BB,BtestB, ' Bpro=inceB, Bp=CidB, Bpro=inceCnameB, +#N ( JD ,ame of table to show as drop-down list1) @EselectD 2ield name of the table to be used as value11 @EbodyD@EhtmlD 2ield name of the table to be used as each list item elected item number in drop-down list

3

ADMTC-UCSC-University of Colombo

Basics of PHP - 4

1.! /,era** genera*-p&rpose database (anip&*ation pages <ere are the sample of general!purpose, o=erall database manipulation pages. ?ou can use these pages by changing database name and E or SQL commands. rdb_main.php rdb_browse.php rdb_delete.php

Start page ・ Browse record ・ 5dd new record

Browse record ・ Browse all ・ earch ・ Delete ・ !pdate

Delete Confirmation 3es ,o

5dd new

!pdate

Add / Update ,ame7
Province7

Show_MySQL_table2.php show_table_droplist.php

add6update rdb_add_update.php rdb+(ain.p)p 1 2 " # $ @<9%LD@B;6?D @<$D8elational 6atabase %ain :age@E<$D @pD@a hrefABrdbCbrowse.phpBDBrowse 8ecord@EaD@EpD @pD@a hrefABrdbCaddCupdate.phpBD/dd 4ew 8ecord@EaD@EpD @EB;6?D@E<9%LD

rdb+bro0se.p)p 1 @Jphp 2 EL nitialiTe =ariables LE " Fsubmit A BBN EE -hich submit button was clic&ed by user # Fsearch A BBN EE Search string $ Foffset A )N EE Starting position of record to show % FnumCrows A $)N EE 4umber of records to show at a time & FmaxCrow A )N EE %aximum row that has been displayed before

4

ADMTC-UCSC-University of Colombo

Basics of PHP - 4

' Fselected A BBN EE Selected record for update or deletion ( if "isset"FC:;S9GBsubmitBH# >> FC:;S9GBsubmitBH UA B;VB >> FC:;S9GBsubmitBH UA B4;B# K 1) Fsubmit A FC:;S9GBsubmitBHN 11 Fsearch A FC:;S9GBsearchBHN 12 Foffset A FC:;S9GBoffsetBHN 1" FnumCrows A FC:;S9GBnumCrowsBHN 1# FmaxCrow A FC:;S9GBmaxCrowBHN 1$ if "isset"FC:;S9GBselectedBH## Fselected A FC:;S9GBselectedBHN 1% R 1& 1' EL 8edirect to update or delete page LE 1( if "Fselected UA BB# K 2) if "Fsubmit AA BUpdate %ar&ed 8ecordB# 21 Flocation A BrdbCaddCupdate.phpBN 22 elseif "Fsubmit AA B6elete %ar&ed 8ecordB# 2" Flocation A BrdbCdelete.phpBN 2# if "isset"Flocation## K 2$ header"BLocationS B . Flocation . BJidAFselectedB#N 2% exitN 2& R 2' R 2( ") EL %odify =arable deoending on the submit type LE "1 if "Fsubmit AA BShow /ll 8ecordsB# Fsearch A BBN "2 if "Fsubmit AA BSearch 8ecordB# Foffset A )N "" if "Fsubmit AA B4ext :ageB# Foffset A FmaxCrowN "# if "Fsubmit AA B:re=ious :ageB# K "$ Foffset A Foffset ! FnumCrowsN "% if "Foffset @ )# Foffset A )N "& R "' JD "( #) @htmlD@bodyD #1 @U!! 9hese are for self!learning information !!D #2 @pD@smallD@bD6ebug information for 6e=eloper@EbD@brD #" FC:;S9GPsubmitPH A @Jphp echo FsubmitN JD@brD ## FC:;S9GPsearchPH A @Jphp echo FsearchN JD@brD #$ FC:;S9GPoffsetPH A @Jphp echo FoffsetN JD@brD #% FC:;S9GPnumCrowsPH A @Jphp echo FnumCrowsN JD@brD #& FC:;S9GPselectedPH A @Jphp echo FselectedN JD@brD #' @EsmallD@EpD #( @<$DBrowse 8elational 6atabase@E<$D $)

5

ADMTC-UCSC-University of Colombo

Basics of PHP - 4

$1 @U!! 6isplay search capability !!D $2 @3;8% methodAB:;S9BD $" @ 4:U9 typeABsubmitB nameABsubmitB =alueABShow /ll 8ecordsBD or $# @ 4:U9 typeABtextB nameABsearchB =alueAB@Jphp echo FsearchN JDBD >nbspN $$ @ 4:U9 typeABsubmitB nameABsubmitB =alueABSearch 8ecordBD $% $& @<8D $' $( @Jphp %) EL 6isplay data table LE %1 reMuireConce"BshowC%ySQLCtable0.phpB#N %2 FsMl A BS%L%1$ pt+id2 participant+na(e2 pro,ince+na(e 34/M participants 2 pro,ince 5H%4% pro,ince+id 6 p,+idBN %" if "Fsearch UA BB# FsMl .A B #'" participant+na(e L.7% 89:searc)98BN %# FsMl .A B /4"%4 B; pt+idBN %$ FnumCfound A showC%ySQLCtable0"B*oca*)ostB, Byoic)iB, BB, BtestB, FsMl, Foffset, FnumCrows, Bpt+idB#N %% %& EL 6isplay number of data and current range LE %' FminCrow A Foffset W $N %( FmaxCrow A Foffset W FnumCrowsN &) if "FmaxCrow D FnumCfound# FmaxCrow A FnumCfoundN &1 echo B@pD@bDFnumCfound@EbD records found E Showing record 4o. @bDFminCrow ! FmaxCrow@EbD@EpDQnBN &2 JD &" &# @U!! 6isplay selection for number of records in a screen !!D &$ @pDShow &% @select nameABnumCrowsBD && @Jphp &' for "FiA$)NFi@A$))NFiWA$)# K &( echo B@option BN ') if "Fi AA FnumCrows# echo B selectedBN '1 echo BDFi@EoptionDBN '2 R '" JD '# @EselectD '$ records at a time '% '& @U!! 6isplay pre=ious E next page button !!D '' @Jphp if "Foffset D $# echo B@ 4:U9 typeAPsubmitP nameAPsubmitP =alueAP:re=ious :agePDBN JD>nbspN '( @Jphp if "Foffset W FnumCrows ! $ @ FnumCfound# echo B@ 4:U9 typeAPsubmitP nameAPsubmitP =alueAP4ext :agePDBN JD

6

ADMTC-UCSC-University of Colombo

Basics of PHP - 4

() (1 @U!! <idden field to hold current =ariables !!D (2 @ 4:U9 typeABhiddenB nameABoffsetB =alueAB@Jphp echo FoffsetN JDBD (" @ 4:U9 typeABhiddenB nameABmaxCrowB =alueAB@Jphp echo FmaxCrowN JDBD (# ($ @<8D (% (& @U!! 6isplay button for update or delete !!D (' @pD@bD;peration@EbDS %ar& a record, then@EpD (( @ 4:U9 typeABsubmitB nameABsubmitB =alueABUpdate %ar&ed 8ecordBD >nbspN 1)) @ 4:U9 typeABsubmitB nameABsubmitB =alueAB6elete %ar&ed 8ecordBD 1)1 @E3;8%D 1)2 @a hrefABrdbCmain.phpBD8eturn to %ain %enu@EaD 1)" @EbodyD@EhtmlD rdb+add+&pdate.p)p 1 @Jphp 2 reMuireConce"BshowC%ySQLCtable0.phpB#N " # EL nitialiTe all =ariables LE $ FisCupdate A isset"FCI59GBidBH#N EE 98U5 if it is update screen % Fpt+n( A BBN EE :articipant name & Fp,+id A )N EE :ro=ince id ' Ferror A BBN EE 5rror message ( Fsuccess A BBN EE Success message 1) if "FisCupdate# K 11 Ftitle A BUpdate 8ecordBN 12 FbuttonCcaption A BUpdateBN 1" R else K 1# Ftitle A B/dd 4ew 8ecordBN 1$ FbuttonCcaption A B/ddBN 1% R 1& 1' EL Iet current record datas LE 1( if "isset"FC:;S9GBsubmitBH## K 2) FptCnm A FC:;S9GBna(eBHN 21 Fp=Cid A FC:;S9GBpro,ince+idBHN 22 R elseif "FisCupdate# K 2" Flin& A mysMlCconnect"B*oca*)ostB, Byoic)iB, BB# or dieN 2# mysMlCselectCdb"BtestB# or dieN 2$ Fresult A mysMlCMuery"BS%L%1$ < 34/M participants 5H%4% pt+id 6= . FCI59GBidBH#N 2% if "mysMlCnumCrows"Fresult# AA )# dieN

7

ADMTC-UCSC-University of Colombo

Basics of PHP - 4

2& Fline A mysMlCfetchCarray"Fresult, %?SQLC/SS;.#N 2' FptCnm A FlineGBparticipant+na(eBHN 2( Fp=Cid A FlineGBpro,ince+idBHN ") mysMlCfreeCresult"Fresult#N mysMlCclose"Flin&#N "1 R "2 "" EL :erform SQL command LE "# if "isset"FC:;S9GBsubmitBH## K "$ EL .hec& =alues LE "% if ":pt+n( AA BB# Ferror .A B:lease enter the name of participantBN "& if ":p,+id AA BB# Ferror .A B:lease choose pro=inceBN "' EL f therePs no error, then perform SQL command LE "( if "Ferror AA BB# K #) if "FisCupdate# K #1 FsMl A BUP"#$% participants S%$ participant+na(e68:pt+n(82     pro,ince+id6:p,+id 5H%4% pt+id6B . FCI59GBidBHN #2 Fsuccess A B9he record has been updated.BN #" R else K ## FsMl A B.'S%4$ .'$/ participants >#LU%S (882 8:pt+n(82     :p,+id)BN #$ Fsuccess A B/ new record has been added.BN #% FptCnm A BBN Fp=Cid A )N EE .lear all fieldU #& R #' showC%ySQLCtable0"B*oca*)ostB, Byoic)iB, BB, BtestB, FsMl, BB,   BB, BB#N #( R $) R $1 JD $2 @htmlD@bodyD $" @<$D@Jphp echo FtitleN JD@E<$D $# @3;8% methodAP:;S9PD $$ ?p@Participant 'a(eA $% ?.'PU$ type68text8 na(e68na(e8 siBe6!C (ax*engt)6DC ,a*&e6=?Ep)p ec)o :pt+n(F E@=@?Gp@ $& ?p@Pro,inceA $' ?se*ect na(e6=pro,ince+id=@ $( @Jphp %) if "UFisCupdate# echo B@optionD@EoptionDBN %1 reMuireConce"BshowCtableCdroplist.phpB#N %2 showCtableCdroplist"B*oca*)ostB,Byoic)iB,BB,BtestB,Bpro,inceB, Bp,+idB, Bpro,ince+na(eB, :p,+id#N %" JD %# @EselectD@EpD %$ @input typeABsubmitB nameABsubmitB =alueAB@Jphp echo FbuttonCcaption JDBD>nbspN 8

ADMTC-UCSC-University of Colombo

Basics of PHP - 4

%% @Jphp if "UFisCupdate >> Uisset"FC:;S9GBsubmitBH## echo P@input typeABresetB nameABsubmitB =alueAB.learBDPN JD %& @<8D %' @pD@font colorAPredPD@Jphp echo FerrorN JD@EfontD@EpD %( @Jphp &) if "Fsuccess UA BB# echo B@pDFsuccess@EpDBN &1 if "FisCupdate# echo P@a hrefABrdbCbrowse.phpBD8eturn to 6ata Browser@EaDPN &2 if "UFisCupdate# echo P@a hrefABrdbCmain.phpBD8eturn to %ain %enu@EaDPN &" JD &# @E3;8%D &$ @EbodyD@EhtmlD rdb+de*ete.p)p &% @Jphp && EL 8edirect to data browser page LE &' if "Uisset"FCI59GBidBH# XX isset"FC:;S9GBsubmitBH# >> FC:;S9GBsubmitBH AA B4;B# K &( header"BLocationS rdbCbrowse.phpB#N EE 8edirect to browser page ') exitN '1 R '2 JD '" '# @htmlD@bodyD '$ @<$D6elete confirmation@E<$D '% @Jphp '& reMuireConce"BshowC%ySQLCtable0.phpB#N '' if "isset"FC:;S9GBsubmitBH# >> FC:;S9GBsubmitBH AA B?5SB# K '( EL :erform deletion LE () FsMl A B"%L%$% 34/M participants 5H%4% pt+id 6 = . :+P/S$H8id8IF (1 showC%ySQLCtable0"B*oca*)ostB, Byoic)iB, BB, BtestB, FsMl, !$, ), BB#N (2 JD (" @pD@font colorABredBD;ne record has been deleted.@EfontD@EpD (# @a hrefABrdbCbrowse.phpBD8eturn to 6ata Browser@EaD ($ @Jphp (% R else K (& EL Show record to be deleted once again LE (' FsMl A BS%L%1$ pt+id2 participant+na(e2 pro,ince+na(e 34/M participants 2 pro,ince 5H%4% pro,ince+id 6 p,+id #'" pt+id 6 = . FCI59GPidPHN (( FnumCfound A showC%ySQLCtable0"B*oca*)ostB, Byoic)iB, BB, BtestB, FsMl, !$, ), BB#N 1)) if "FnumCfound AA )# Kecho "B4o record foundB#N dieNR 1)1 JD 9

ADMTC-UCSC-University of Colombo

Basics of PHP - 4

@U!! Show confirmation message and ?5SE4; button !!D @pD@font colorABredBD/re you sure to delete this recordJ@EfontD@EpD @3;8% methodAB:;S9BD @ 4:U9 typeABhiddenB nameABidB =alueAB@Jphp echo "FCI59GBidBH#N JDBD>nbspN 1)% @ 4:U9 typeABsubmitB nameABsubmitB =alueAB?5SBD>nbspN 1)& @ 4:U9 typeABsubmitB nameABsubmitB =alueAB4;BD 1)' @E3;8%D 1)( @Jphp 11) R 111 JD 112 @EbodyD@EhtmlD 1)2 1)" 1)# 1)$ s)o0+MySQL+tab*e .p)p 1 @Jphp 2 function showC%ySQLCtable0 " " FhostCname, FuserCname, Fpassword, FdatabaseCname, # FsMl, Foffset, FnumCrows, FidCfield# $K % EL .onnect to %ySQL database LE & Flin& A mysMlCconnect"FhostCname, FuserCname, Fpassword# or dieN ' mysMlCselectCdb"FdatabaseCname# or dieN ( 1) EL 5xecute SQL command LE 11 Fresult A mysMlCMuery"FsMl#N 12 if "UFresult# K 1" echo B@BD"5rror in SQL#@EBD B . mysMlCerror"#N 1# dieN 1$ R 1% 1& EL f the SQL command is not S5L5.9, then stop function here LE 1' if "strtoupper"substr"FsMl,),(## UA BS5L5.9B# K 1( mysMlCclose"Flin&#N EE .losing connection 2) returnN 21 R 22 2" EL Iet number of records found LE 2# FnumCfound A mysMlCnumCrows"Fresult#N 2$ 2% if "FnumCfound AA ) # K 2& mysMlCclose"Flin&#N EE .losing connection 2' return )N 2( R ")

10

ADMTC-UCSC-University of Colombo

Basics of PHP - 4

"1 EL ;utput results as <9%L table LE "2 echo B@table borderDQnBN "" EL ;utput field names as table header LE "# echo B@trDQnBN "$ if "FidCfield UA BB# echo B@th bg.olorAPredPDmar&@EthDBN "% for "FfieldA)N Ffield@mysMlCnumCfields"Fresult#N FfieldWW# K "& echo B@thDB . mysMlCfieldCname"Fresult, Ffield# . B@EthDQnBN "' R "( echo B@EtrDQnBN #) #1 EL ;utput all records LE #2 for "Frow A )N Frow @ mysMlCnumCrows"Fresult#N FrowWW# K #" Fline A mysMlCfetchCarray"Fresult, %?SQLC/SS;.#N ## if "Foffset @) XX Frow DA Foffset >> Frow @ Foffset W FnumCrows# K #$ echo B@trDQnBN #% if "FidCfield UA BB# echo B@td alignAPcenterPD@input typeAPradioP nameAPselectedP =alueAPB. FlineGFidCfieldH . BPD@EtdDBN #& foreach "Fline as Fcell# K #' if "isCnumeric"Fcell## K #( echo B@td alignAPrightPDBN $) echo numberCformat"Fcell#N $1 echo B@EtdDQnBN $2 R else K $" echo B@tdDFcell@EtdDQnBN $# R $$ R $% echo B@EtrDQnBN $& R $' R $( echo B@EtableDQnBN %) %1 EL .losing procedures LE %2 mysMlCfreeCresult"Fresult#N EE 3ree result %" mysMlCclose"Flin&#N EE .losing connection %# return FnumCfoundN %$ R %% JD

11