/[corp_html]/back/phormation/multiform.php
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /back/phormation/multiform.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (show annotations)
Thu Jul 5 13:32:55 2001 UTC (22 years, 9 months ago) by ravilov
Branch: MAIN
CVS Tags: HEAD
Changes since 1.2: +2 -0 lines
Added some HR's, to make forms look nicer.

1 <?
2 /*
3 * Phormation
4 * - A library of PHP code to make development of database-driven
5 * html forms easy and quick
6 *
7 * Copyright (C) 2000 Jason D. Hildebrand
8 * PeaceWorks Computer Consulting
9 *
10 * jason@peaceworks.ca
11 *
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation; either version 2 of the License, or
15 * (at your option) any later version.
16 *
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, write to the Free Software
24 * Foundation, Inc., 59 Temple Street #330, Boston, MA 02111-1307, USA.
25 */
26
27 function validate_all_changes( $fields, $names, $datatypes, $values, $sql, $errors, $numforms )
28 {
29 $result = true;
30 $errors = array();
31 $values = array();
32 for( $i=0; $i < $numforms; $i++ ) {
33 $result = $result & validatechanges( $fields, $names, set_varprefix( $datatypes, "ph_$i" ),
34 &$values[$i], &$sql[$i], &$errors[$i] );
35 }
36 return $result;
37 }
38
39 function commit_all_changes( $fields, $names, $datatypes, $values, $tablename, $tablekey, $record_id, $sql, $opts, $numforms )
40 {
41 for( $i=0; $i < $numforms; $i++ ) {
42 commitchanges( $fields, $names, set_varprefix( $datatypes, "ph_$i" ),
43 &$values[$i], $tablename, $tablekey, $record_id, &$sql[$i], $opts );
44 }
45 }
46
47
48 function create_all_forms( $fields, $names, $datatypes, $values, $record_id, $errors, $url, $opts, $numforms )
49 {
50 global $FORMBGCOLOUR, $PHP_SELF, $key;
51
52 //$numfields = count( $fields );
53
54 // create some javascript stuff we need, and an HTML form
55 ?>
56 <form name="mainform" enctype="multipart/form-data"
57 action="<? echo add_var_to_url( $url["onsubmit"], "record_id=$record_id") ?>" method="post" >
58 <?
59 echo '<table border="0" cellspacing="1" cellpadding="0" bgcolor="'. $FORMBGCOLOUR . '">';
60
61 echo '<tr><TD></td><td>' . $opts["numforms_prompt"] . '<select name="numforms" onChange="mainform.refresh.value=\'redraw\'; mainform.submit()">';
62 for( $i = 1; $i <= $opts["maxforms"]; $i++ ) {
63 if( $i == $numforms ) {
64 echo '<option selected value="' . $i . '">' . $i . '</option>';
65 } else {
66 echo '<option value="' . $i . '">' . $i . '</option>';
67 }
68 }
69 echo '</select><input type="submit" name="ph_action" value="Update form"></td></tr>';
70 echo "<tr><td colspan=\"3\"><hr></td></tr>";
71
72 // now create a input field for each DB field
73 for( $j = 0; $j < $numforms; $j++ ) {
74 echo '<tr><td><BR><BR><B><font size="+2">' . $opts["item_heading"] . ' #' . ($j+1) . ':</font></B></td></tr>';
75 $newdatatypes = set_varprefix( $datatypes, "ph_$j" );
76 for( $i = 0; !empty( $fields[ $i ] ); $i++ ) {
77
78 $type = "";
79 parse_str( $newdatatypes[ $i ] );
80
81 // the functions to create widgets are named maketext, makedate,
82 // etc.
83 $func = "make_" . $type . "_widget";
84
85 // call the function to create the widget
86
87 //echo "\n\n<BR>Pretty Name:" . $names[$i] . "<BR>\n";
88 //echo "Value: " . $values[$j][$i] . "<BR>\n";
89 //echo "Field: " . $fields[$i] . "<BR>\n";
90 //echo "Datatype: " . $datatypes[$i] . "<BR>\n";
91
92 $func( $names[$i], $values[$j][$i], $fields[$i], $errors[$j][$i], $newdatatypes[$i] );
93 }
94 echo "<tr><td colspan=\"2\"><hr></td></tr>";
95 }
96
97 // finish the form
98 ?>
99 </table>
100 <input type = "hidden" name="refresh" value ="" >
101 <?
102
103 // save variables from GET call
104 while (list($name, $val) = each($GLOBALS[HTTP_GET_VARS])) {
105 echo "<input type=\"hidden\" name=\"$name\" value=\"$val\">\n";
106 }
107
108 echo '<input type = "submit" name="ph_action" value = "' . $opts["submittext"] . '" >';
109 if( empty( $opts["nocancel"] ) ) {
110 echo '<input type = "submit" name="ph_action" value = "' . $opts["canceltext"] . '" >';
111 }
112 echo '</form>';
113 }
114
115 function abort_all_changes( $fields, $names, $datatypes, $values, $tablename,
116 $tablekey, $record_id, $sql, $numforms )
117
118 {
119 for( $i=0; $i < $numforms; $i++ ) {
120 abortchanges( $fields, $names, set_varprefix( $datatypes, "ph_$i" ),
121 &$values[$i], $tablename, $tablekey, $record_id, $sql[$i] );
122 }
123 }
124
125
126 function load_all_defaults( $datatypes, $numforms )
127 {
128 $values = array();
129 for( $i=0; $i < $numforms; $i++ ) {
130 $values[$i] = loaddefaults( $datatypes );
131 }
132 return $values;
133 }
134
135 function multiform_main( $tablename, $tablekey, $fields, $names, $datatypes, $record_id, $url, $opts, $numforms )
136 {
137 global $ph_action, $refresh, $BODYTAGS;
138
139
140 defaults( &$url, &$opts );
141
142 if( ! empty( $refresh ) ) {
143 $ph_action = $refresh; // this is probably refresh or redraw
144 $refresh = "";
145 if( $opts["calltwice"] ) {
146 return;
147 }
148 }
149 if( $ph_action == "Update form" ) {
150 $ph_action = "redraw";
151 if( $opts["calltwice"] ) {
152 return;
153 }
154 }
155
156 if( $ph_action == "validate" || $ph_action == $opts["submittext"] ) {
157 $errors = array();
158 $result = validate_all_changes( $fields, $names, $datatypes, &$values, &$sql, &$errors, $numforms );
159 if( $result ) {
160 // if everything was ok, save the data
161 commit_all_changes( $fields, $names, $datatypes, &$values, $tablename, $tablekey, $record_id, &$sql, $opts, $numforms );
162
163 // now jump to somewhere else
164 header( "Location: " . $url["aftersubmit"] );
165 $ph_action = "do_nothing";
166 return;
167 } else {
168 // we need to refresh the form
169 $ph_action = "refresh";
170 global $ph_values, $ph_errors;
171 $ph_values = $values;
172 $ph_errors = $errors;
173 if( $opts["calltwice"] ) {
174 return;
175 }
176 }
177 }
178
179
180 if( $ph_action == "" ) {
181 if( function_exists( "html_before_form" ) ) {
182 html_before_form();
183 }
184 $values = load_all_defaults( $datatypes, $numforms );
185 create_all_forms( $fields, $names, $datatypes, $values, $record_id, $errors, $url, $opts, $numforms );
186 if( function_exists( "html_after_form" ) ) {
187 html_after_form();
188 }
189 }
190
191
192 if( $ph_action == "refresh" || $ph_action == "redraw" ) {
193 global $ph_values;
194 global $ph_errors;
195 if( isset( $ph_values ) ) {
196 $values = $ph_values;
197 $errors = $ph_errors;
198 } else {
199 $result = validate_all_changes( $fields, $names, $datatypes, &$values, &$sql, &$errors, $numforms );
200 }
201 if( function_exists( "html_before_form" ) ) {
202 html_before_form();
203 }
204 if( $ph_action == "redraw" ) {
205 // for redrawing we don't want to display errors, so clear the array
206 $errors = array();
207 }
208 create_all_forms( $fields, $names, $datatypes, $values, $record_id, $errors, $url, $opts, $numforms );
209 if( function_exists( "html_after_form" ) ) {
210 html_after_form();
211 }
212 }
213
214 if( $ph_action == "cancel" || $ph_action == $opts["canceltext"] ) {
215 abort_all_changes( $fields, $names, $datatypes, &$values, $tablename, $tablekey, $record_id, $sql, $numforms );
216 header( "Location: " . $url["aftercancel"] );
217 return;
218 }
219 }
220 ?>

  ViewVC Help
Powered by ViewVC 1.1.26