Ik ben nu een een paar weken bezig met PHP5 in verschillende boeken en video
tutorials.
Steeds als ik tegen een probleem aanliep waar ik niet uitkwam,ging ik verder in een ander boek om te zien of ik daar antwoorden kon vinden.
De laatste dagen, ben ik gaan leren uit O'reilly PHP5 and mysql
omdat daar wat uitgebreider uitleg wordt gegeven.
Nu zit ik vast in een stuk code van enige afmeting.
Het zijn vooral undefined index meldingen die ik krijg, die ik niet allemaal weg krijg met
If(isset(...
ook werkt de code niet naar behoren.
Ik heb geprobeerd, de voorafgaande oefeningen nogmaals door te nemen,
maar daar heb ik geen oplossing kunnen vinden.
Ik hoop dat iemand mij kan bijstaan in dit probleem, zodat ik verder kan met het
ontleden van deze code.
(het is een flink stukje code, dus heb er begrip voor als het teveel gevraagd is.)
(ter inf. Ik heb error E~all aan staan in m'n php.ini en de laatste versie van WAMP)
Hironder de code:
tutorials.
Steeds als ik tegen een probleem aanliep waar ik niet uitkwam,ging ik verder in een ander boek om te zien of ik daar antwoorden kon vinden.
De laatste dagen, ben ik gaan leren uit O'reilly PHP5 and mysql
omdat daar wat uitgebreider uitleg wordt gegeven.
Nu zit ik vast in een stuk code van enige afmeting.
Het zijn vooral undefined index meldingen die ik krijg, die ik niet allemaal weg krijg met
If(isset(...
ook werkt de code niet naar behoren.
Ik heb geprobeerd, de voorafgaande oefeningen nogmaals door te nemen,
maar daar heb ik geen oplossing kunnen vinden.
Ik hoop dat iemand mij kan bijstaan in dit probleem, zodat ik verder kan met het
ontleden van deze code.
(het is een flink stukje code, dus heb er begrip voor als het teveel gevraagd is.)
(ter inf. Ik heb error E~all aan staan in m'n php.ini en de laatste versie van WAMP)
Hironder de code:
PHP:
<?php
//echo a text box
function input_text($element_name, $values) {
echo '<input type="text" name="' . $element_name .'" value="';
echo htmlentities($values[$element_name]) . '"/>';
}
?>
<?php
//echo a submit button
function input_submit($element_name, $label) {
echo '<input type="submit" name="' . $element_name .'" value="';
echo htmlentities($label) .'"/>';
}
?>
<?php
//echo a textarea
function input_textarea($element_name, $values) {
echo '<textarea name="' . $element_name .'">';
echo htmlentities($values[$defaults]) . '</textarea>';
}
?>
<?php
//echo a radio button or checkbox
function input_radiocheck($type, $element_name, $values, $element_value) {
echo '<input type="' .$type. '" name="'
.$element_name.'" value="' .$element_value. '" ';
if ($element_value == $values[$element_name]) {
echo ' checked="checked"';
}
echo '/>';
}
?>
<?php
//echo a <select> menu
function input_select($element_name, $selected, $options, $multiple = true) {
// echo out the <select> tag
echo '<select name="' . $element_name;
// if multiple choices are permitted, add the multiple attribute
// and add a [ ] to the end of the tag name
if ($multiple) { echo '[ ]" multiple="multiple'; }
echo '">';
// set up the list of things to be selected
$selected_options = array( );
if ($multiple) {
foreach ($selected[$element_name] as $val) {
$selected_options[$val] = true;
}
} else {
$selected_options[ $selected[$element_name] ] = true;
}
// echo out the <option> tags
foreach ($options as $option => $label) {
echo '<option value="' . htmlentities($option) . '"';
if (isset($selected_options[$option])) {
echo ' selected="selected"';
}
echo '>' .htmlentities($label). '</option>';
}
echo '</select>';
}
?>
<?php
// don't forget to include the code for the form
// helper functions defined in Example 6-29
// setup the arrays of choices in the select menus
// these are needed in display_form( ), validate_form( ),
// and process_form( ), so they are declared in the global scope
$sweets = array('puff' => 'Sesame Seed Puff',
'square' => 'Coconut Milk Gelatin Square',
'cake' => 'Brown Sugar Cake',
'ricemeat' => 'Sweet Rice and Meat');
$main_dishes = array('cuke' => 'Braised Sea Cucumber',
'stomach' => "Sauteed Pig's Stomach",
'tripe' => 'Sauteed Tripe with Wine Sauce',
'taro' => 'Stewed Pork with Taro',
'giblets' => 'Baked Giblets with Salt',
'abalone' => 'Abalone with Marrow and Duck Feet');
// The main page logic:
// - If the form is submitted, validate and then process or redisplay
// - If it's not submitted, display
if (isset($_POST['_submit_check'])) {
// If validate_form( ) returns errors, pass them to show_form( )
if ($form_errors = validate_form( )) {
show_form($form_errors);
} else {
// The submitted data is valid, so process it
process_form( );
}
} else {
// The form wasn't submitted, so display
show_form( );
}
function show_form($errors = '') {
// If the form is submitted, get defaults from submitted parameters
if (isset($_POST['_submit_check'])) {
$defaults = $_POST;
} else {
// Otherwise, set our own defaults: medium size and yes to delivery
$defaults = array('delivery' => 'yes',
'size' => 'medium');
}
// If errors were passed in, put them in $error_text (with HTML markup)
if ($errors) {
$error_text = '<tr><td>You need to correct the following errors:';
$error_text .= '</td><td><ul><li>';
$error_text .= implode('</li><li>',$errors);
$error_text .= '</li></ul></td></tr>';
} else {
// No errors? Then $error_text is blank
$error_text = '';
}
// Jump out of PHP mode to make displaying all the HTML tags easier
?>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table border="1">
<?php echo $error_text ?>
<tr><td>Your Name:</td>
<td><?php input_text('name', $defaults) ?></td>
</tr>
<tr>
<td>Size:</td>
<td><?php input_radiocheck('radio','size', $defaults, 'small'); ?> Small <br/>
<?php input_radiocheck('radio','size', $defaults, 'medium'); ?> Medium <br/>
<?php input_radiocheck('radio','size', $defaults, 'large'); ?> Large
</td>
</tr>
<tr>
<td>Pick one sweet item:</td>
<td><?php input_select('sweet', $defaults, $GLOBALS['sweets']); ?></td>
</tr>
<tr>
<td>Pick two main dishes:</td>
<td><?php input_select('main_dish', $defaults, $GLOBALS['main_dishes'], true) ?></td>
</tr>
<tr>
<td>Do you want your order delivered?</td>
<td><?php input_radiocheck('checkbox','delivery', $defaults, 'yes'); ?> Yes</td>
</tr>
<tr>
<td>Enter any special instructions.<br/>
If you want your order delivered, put your address here:
</td>
<td><?php input_textarea('comments', $defaults); ?></td>
</tr>
<tr><td colspan="2" align="center"><?php input_submit('save','Order'); ?></td></tr>
</table>
<input type="hidden" name="_submit_check" value="1"/>
</form>
<?php
} // The end of show_form( )
function validate_form( ) {
$errors = array( );
// name is required
if (! strlen(trim($_POST['name']))) {
$errors[ ] = 'Please enter your name.';
}
// size is required
if (($_POST['size'] != 'small') && ($_POST['size'] != 'medium') &&
($_POST['size'] != 'large')) {
$errors[ ] = 'Please select a size.';
}
// sweet is required
if (! array_key_exists($_POST['sweet'], $GLOBALS['sweets'])) {
$errors[ ] = 'Please select a valid sweet item.';
}
// exactly two main dishes required
if (count($_POST['main_dish']) != 2) {
$errors[ ] = 'Please select exactly two main dishes.';
} else {
// We know there are two main dishes selected, so make sure they are
// both valid
if (! (array_key_exists($_POST['main_dish'][0], $GLOBALS['main_dishes']) &&
array_key_exists($_POST['main_dish'][1], $GLOBALS['main_dishes']))) {
$errors[ ] = 'Please select exactly two valid main dishes.';
}
}
// if delivery is checked, then comments must contain something
if (($_POST['delivery'] == 'yes') && (! strlen(trim($_POST['comments'])))) {
$errors[ ] = 'Please enter your address for delivery.';
}
return $errors;
}
<?php
function process_form( ) {
// look up the full names of the sweet and the main dishes in
// the $GLOBALS['sweets'] and $GLOBALS['main_dishes'] arrays
$sweet = $GLOBALS['sweets'][ $_POST['sweet'] ];
$main_dish_1 = $GLOBALS['main_dishes'][ $_POST['main_dish'][0] ];
$main_dish_2 = $GLOBALS['main_dishes'][ $_POST['main_dish'][1] ];
if ($_POST['delivery'] == 'yes') {
$delivery = 'do';
} else {
$delivery = 'do not';
}
// build up the text of the order message
$message=<<<_ORDER_
Thank you for your order, $_POST[name].
You requested the $_POST[size] size of $sweet, $main_dish_1, and $main_dish_2.
You $delivery want delivery.
_ORDER_;
if (strlen(trim($_POST['comments']))) {
$message .= 'Your comments: '.$_POST['comments'];
}
?>
<?php
// send the message to the chef
mail('chef@restaurant.example.com', 'New Order', $message);
// echo the message, but encode any HTML entities
// and turn newlines into <br/> tags
echo nl2br(htmlentities($message));
}
?>
Laatst bewerkt: