рдФрд░ рд╣рдо рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗред рдореЙрдбрд▓ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВ

рдФрд░ рд╣рдо рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдПрдХ рдШреБрдЯрдиреЗ рдХреЗ рдЭрдЯрдХрд╛ рд╕реЗ рдПрдХ рдЧрдВрднреАрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдЕрдиреБрд╢рд╛рд╕рди рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖ рд╣реИред рдпрд╣ рдЙрди рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрднрд╡ рд╣реБрдЖ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдерд╛ рдЬреЛ рдЖрдкрдХреЛ рдЧрдЧрдирдЪреБрдВрдмреА рдЗрдорд╛рд░рдд рдХреА рдЫрдд рд╕реЗ рдЯрд╛рдЗрдкреЛрдЧреНрд░рд╛рдлрд┐рдХ рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдПрдХ рдмреЙрдХреНрд╕ рдЫреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рд╢реЛрдзрдХрд░реНрддрд╛ рдХреА рддрд░рд╣ рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рдХрд┐ рдпрд╣ рдЪрдорддреНрдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рдЦрдВрдб рдореЗрдВ рд╣реЛрдЧрд╛ " рдпреБрджреНрдз рдФрд░ рд╢рд╛рдВрддрд┐ред тАЭ рд╕рдмрд╕реЗ рдЖрдо рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рддрд┐рдорд╛рди, рдПрдХ рд╢рдХ рдХреЗ рдмрд┐рдирд╛, рдПрдорд╡реАрд╕реА - рдореЙрдбрд▓-рд╡реНрдпреВ-рдХрдВрдЯреНрд░реЛрд▓рд░ рд╣реИред рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рдпрд╣ рдкреНрд░рддрд┐рдорд╛рди рдПрдХ рдХрдВрдЯреНрд░реЛрд▓ рд▓реЗрдпрд░ (рдХрдВрдЯреНрд░реЛрд▓рд░), рдПрдХ рд╡реНрдпреВ рд▓реЗрдпрд░ (рд╡реНрдпреВ) рдФрд░ рдбреЗрдЯрд╛ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд▓реЗрдпрд░ (рдореЙрдбрд▓) рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдорд╡реАрд╕реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рджреЗрдЦреЗрдВ (рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВ) рдореЙрдбрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореЙрдбрд▓ рдЙрди рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рддрд░реНрдХ рд╕реЗ рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВред рд╡реЗ рд╕рднреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдореЙрдбрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдмрд╛рдж рд╡рд╛рд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддрд╛ рд╣реВрдВред рд╣рдо рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдЬрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдФрд░, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВред

рдЪреЗрддрд╛рд╡рдиреА : рдареАрдХ рдорд╛рдирд╕рд┐рдХ рд╕рдВрдЧрдарди рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдпрд╣ рджреЗрдЦрдирд╛ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред



рдкрд░рд┐рдЪрдп



рд╕рд┐рдЬрд╝реЛрдлреНрд░реЗрдирд┐рдХ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ: рдореЗрд░реЗ рдЬреАрд╡рди рдореЗрдВ рдореИрдВ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реБрдЖ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реБрдЖред рдЙрдирдХреЗ рд▓рдЧрднрдЧ рд╕рднреА рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рддрд░реНрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрддрд░ рдкрд░ рдХрд┐рдП рдЧрдП рдереЗред рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рдерд╛ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднрдпрд╛рдирдХ рдерд╛ред рд╕рдЪ рд╣реИ, рдпрд╣ ASP.NET + MS SQL рд╕рд░реНрд╡рд░ рдХреЗ рддрд╣рдд рдЕрдкрдиреА рдЕрддреБрд▓рдиреАрдп рдорд╣рд╛рди рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо рдЕрдкрдиреЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдШреГрдгрд┐рдд рдЧреБрдЪреНрдЫрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: PHP (5.3.1) + Zend рдлреНрд░реЗрдорд╡рд░реНрдХ (1.11) + MySQL (5.1.4)ред

рддреЛ, рдЖрдЗрдП рд╣рдо рдЕрдкрдиреЗ рдФрдЬрд╛рд░реЛрдВ рдкрд░ рдмрд╛рд░реАрдХреА рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ рд╣рдо рджрд┐рд▓ рдирд╣реАрдВ рд╣рд╛рд░реЗрдВрдЧреЗ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдХреБрдЫ рд╣реИ)ред MySQL рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЙрдкрдХрд░рдг рдЕрдкрдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд╣реИрдВ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ PHP рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред



рд╣рдо рдХреНрдпрд╛ рдЧрдврд╝реЗрдВрдЧреЗ? редред



рдПрдХ рд╣реИрд▓реЛ-рд╡рд░реНрд▓реНрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдЗрдП рдкреЛрд╕реНрдЯ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд╛ рдмреНрд▓реЙрдЧ рд▓реЗрдВред рдиреНрдпреВрдирддрдо рдкрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ - рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдХреЗрд╡рд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдореЙрдбрд▓ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╣реИред

рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо Zend рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред



рдорд╛рд░рдкреАрдЯ рдкрд░!



рддреЛ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ 4 рдЯреЗрдмрд▓ рдХреА рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реИ: рдЫрд╡рд┐

рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд╕рднреА (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рднрд╛рдЧ) рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░рдд рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рд╕реАрдзреЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ Zend рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ:

zf create project ./ zf create controller posts zf create controller comments zf create controller tags zf create action add Posts zf create action edit Posts zf create action save Posts zf create action delete Posts zf create action addComment Posts zf create action view Posts zf create db-table Posts sb_posts zf create db-table Comments sb_comments zf create db-table Tags sb_tags zf create db-table PostTags sb_post_tags zf create form Post zf create form Comment zf enable layout
      
      





рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреЛрд╕реНрдЯ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рд┐рдЦреЗрдВ:

 CREATE DEFINER = 'sqlblog'@'localhost' PROCEDURE `Posts_save`( IN title VARCHAR(100), IN text TEXT, INOUT post_id INTEGER(11) ) BEGIN IF ISNULL(`post_id`) OR `post_id` = 0 THEN INSERT INTO `sb_posts` (`title`, `text`, `date`) VALUES (`title`, `text`, NOW()); SET `post_id` = LAST_INSERT_ID(); ELSE UPDATE `sb_posts` AS p SET p.`title` = `title`, p.`text` = `text` WHERE p.`id` = `post_id` LIMIT 1; END IF; END;
      
      





рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рдкрд╣рд▓реЗ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рд╢реАрд░реНрд╖рдХ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдкрд╛рда рд╣реИрдВред рдЕрдВрддрд┐рдо рдкреИрд░рд╛рдореАрдЯрд░ рд░рд┐рдХреЙрд░реНрдб рдЖрдИрдбреА рд╣реИред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░ INOUT рдХрд╛ рдХреЛрдИ рд╕рдВрдпреЛрдЧ рдирд╣реАрдВ рд╣реИред рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рджреЛрд╣рд░рд╛ рддрд░реНрдХ рд╣реИ: рдпрд╣ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рддрд╛ рд╣реИ рдпрджрд┐ рдкреЛрд╕реНрдЯ_рдб рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ 0 рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЕрдиреНрдпрдерд╛ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рдж, рд░рд┐рдХреЙрд░реНрдб рдЖрдИрдбреА рдЙрд╕реА рддреАрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, PHP рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдкреАрдбреАрдУ рдЖрдкрдХреЛ рдПрдХ рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рд░рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ INOUT рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЪрд░ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛:

 $post_id = 0; $sth = $dbh->prepare('CALL Posts_save(?, ?, ?)'); $sth->bindParam(1, 'Post title', PDO::PARAM_STR); $sth->bindParam(2, 'Post body', PDO::PARAM_STR); $sth->bindParam(3, $post_id, PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT, 11); $sth->execute(); print("New post ID is: $post_id");
      
      





рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЕрджреНрднреБрдд рд╕реБрд╡рд┐рдзрд╛ MySQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, MySQL рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ MySQL рдХреЗ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рд╡рд┐рдХреГрдд рдХрд░рдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЪрд╛рд▓ рд╕рд░рд▓ рд╣реИ: рд╣рдо MySQL рдЪрд░ рдХреЛ рддреАрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдо SELECT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХрд╛ рдорд╛рди рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ:

 SET @post_id = 12; CALL Posts_save('Post title', 'Post body', @post_id); SELECT @post_id AS post_id;
      
      



рдореМрдЬреВрджрд╛ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдлреЙрд░реНрдо рдмрдирд╛рдПрдБ:

 class Application_Form_Post extends Zend_Form { public function init() { $this ->addElement('hidden', 'id') ->addElement('text', 'title', array('label' => 'Title:', 'required' => true)) ->addElement('textarea', 'text', array('label' => 'Text:', 'required' => true)) ->addElement('text', 'tags', array('label' => 'Tags:', 'required' => true)) ->addElement('submit', 'submit', array('label' => 'Add Post')); } public function prepareDecorators() { $this->setDecorators(array( 'FormElements', 'FormErrors', 'Form' )); return $this; } }
      
      





рдЕрдм рдирд┐рдпрдВрддреНрд░рдХ рдХреЛрдб рдореЗрдВ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 class PostsController extends Zend_Controller_Action { public function addAction() { $this->view->form = $form = new Application_Form_Post(array( 'name' => 'postForm', 'action' => '/posts/save/' )); $form->prepareDecorators(); } public function saveAction() { $post_id = $this->_getParam('id'); $this->view->form = $form = new Application_Form_Post(array( 'name' => 'postForm', 'action' => '/posts/save/' )); if ($this->getRequest()->isPost()) { if ($form->isValid($this->getRequest()->getPost())) { $result = $this->_helper->procedure()->Posts_save( $form->getValue('title'), $form->getValue('text'), $post_id ); if ($post_id) { $tags = $form->getValue('tags'); $tags = explode(',', $tags); $tags = array_map('trim', $tags); $this->_helper->procedure()->Post_clearTags($post_id); foreach ($tags as $tag) { $this->_helper->procedure()->Post_addTag($post_id, $tag); } $this->_redirect('/posts/view/id/' . $post_id); } } $this->view->form = $form->prepareDecorators(); } else { $this->_redirect('/posts'); } } }
      
      



рд╣рдо рдЕрдкрдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛, рд▓реЗрдЦрдХ рдкреНрд░рддреНрдпреЗрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЯреИрдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рддрдм рдХреНрд▓рд╛рдЙрдб рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЯреИрдЧ рдХреЗ рд╡рдЬрди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

  1. рдкреНрд░рддреНрдпреЗрдХ рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдлреНрд▓рд╛рдИ рдкрд░ рдЧрдгрдирд╛ рдХрд░реЗрдВ
  2. рдкреНрд░рддреНрдпреЗрдХ рдЯреИрдЧ рдХреЗ рд╡рдЬрди рдХреЛ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ


рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 SELECT t.*, getTagWeight(t.id) AS weight FROM sb_tags AS t
      
      





рдпрд╣рд╛рдБ getTagWeight рдПрдХ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХ рдЯреИрдЧ рдХреЗ рд╡рдЬрди рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЯреИрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЛ рдмрд╣реБрдд рдмрд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЯреИрдЧ рдХреЗ рдЖрджреЗрд╢ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмрд╛рд░ рдмрджрд▓рд╛ рдЬрд╛рдПрдЧрд╛), рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреНрд░рднрд╛рд╡реА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдкреВрд░реЗ рдЯреИрдЧ рдХреНрд▓рд╛рдЙрдб рдХреЛ рдХреИрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред

MySQL рдореЗрдВ, рд╕рдВрд╕реНрдХрд░рдг 5.0 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдПрдХ рдЯреНрд░рд┐рдЧрд░ рддрдВрддреНрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ - рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдкреВрд░реА рд╣реЛрдиреЗ рдкрд░ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЯреНрд░рд┐рдЧрд░ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдЧ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рдбрд╛рд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рджред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рдкрд░ рджреЛ рдЯреНрд░рд┐рдЧрд░ рд▓рдЯрдХрд╛рдХрд░ рдЯреИрдЧреНрд╕ рдХреЗ рд╡рдЬрди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - sb_post_ags:

 CREATE DEFINER = 'sqlblog'@'localhost' TRIGGER `sb_post_tags_after_ins_tr` AFTER INSERT ON `sb_post_tags` FOR EACH ROW BEGIN UPDATE `sb_tags` AS t SET t.`weight` = `Tag_calculateWeight`(`Tag_getById`(NEW . tag_id)) WHERE t.`id` = NEW.tag_id; END; CREATE DEFINER = 'sqlblog'@'localhost' TRIGGER `sb_post_tags_after_del_tr` AFTER DELETE ON `sb_post_tags` FOR EACH ROW BEGIN UPDATE `sb_tags` AS t SET t.`weight` = `Tag_calculateWeight`(`Tag_getById`(OLD.`tag_id`)) WHERE t.`id` = OLD.`tag_id`; END;
      
      





рдЗрд╕ рдкреНрд░рдХрд╛рд░, sb_post_tags рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ / рд╡рд┐рд▓реЛрдкрди рдХреЗ рд╕рд╛рде, рдЯреИрдЧ рд╡реЗрдЯ рдХреЛ рдкреБрдирд░реНрдЧрдард┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ sb_tags рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред



рдирд┐рд╖реНрдХрд░реНрд╖



рддреЛ рдиреАрдЪреЗ рдХреА рд░реЗрдЦрд╛ рдХреНрдпрд╛ рд╣реИ? рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рд░рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд▓рд┐рдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдорд╛рдирд╡ рдШрдВрдЯреЗ рдХреА рд▓рд╛рдЧрдд, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рддреЗрдЬреА рд╕реЗ рдмрдврд╝реЗрдЧреАред

рдХреНрдпрд╛ рдХреЛрдИ рдкреНрд▓рд╕ рд╣реИрдВ? рд╣рд╛рдБ: рдпрд╣ рддреЗрдЬрд╝ рд╣реИред рдбреАрдбреАрдбреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рднреА рдпрд╣ рддреЗрдЬ рд╣реИред рдореИрдВрдиреЗ резрей-резреж рдорд┐рдирдЯ резрей рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ minutes рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдПред рдФрд░ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рдФрд░ рд╕рд░рд▓ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред

рд╡рд┐рдкрдХреНрд╖:



рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪрд░реНрдЪрд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ред рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЬреАрдердм рдкрд░ рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ



All Articles