Jump to content
Larry Ullman's Book Forums

edlucas

Members
  • Content Count

    2
  • Joined

  • Last visited

Community Reputation

0 Neutral

About edlucas

  • Rank
    Newbie
  1. Yeah I saw my problem a few to extra brackets this is how the code I have now looks. <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Transfer Funds</title> </head> <body> <h1>Transfer Funds</h1> <?php # Script 11.7 - transfer.php // This page performs a transfer of funds from one account to another. // This page uses transactions. // Always need the database connection: $dbc = mysqli_connect('edelucas.colutah.org', 'edelucas_user', 'Deluck11d', 'edelucas_banking') OR die('Could not connect to MySQL: ' . mysqli_connect_error() ); // Check if the form has been submitted: if ($_SERVER['REQUEST_METHOD'] == 'POST') { // Minimal form validation: if (isset($_POST['from'], $_POST['to'], $_POST['amount']) && is_numeric($_POST['from']) && is_numeric($_POST['to']) && is_numeric($_POST['amount']) ) { // if statements right here $from = $_POST['from']; $to = $_POST['to']; $amount = $_POST['amount']; if ($amount > 0) { echo $amount; $good = 'yes'; if ($to != $from) { // logic to add the balance to the account } else { echo '<p>To and From cannot be the same</p>'; $good = 'no'; } } else { echo '<p>Please deposit an amount greater than zero.</p>'; $good= 'no'; } if ($good == 'yes') { echo '<p>The transfer was a success!</p>'; } //logic to add the balance to the account // Make sure enough funds are available: $q = "SELECT balance FROM accounts WHERE account_id=$from"; $r = @mysqli_query($dbc, $q); $row = mysqli_fetch_array($r, MYSQLI_ASSOC); if ($amount > $row['balance']) { echo '<p class="error">Insufficient funds to complete the transfer.</p>'; } else { // Turn autocommit off: mysqli_autocommit($dbc, FALSE); $q = "UPDATE accounts SET balance=balance-$amount WHERE account_id=$from"; $r = @mysqli_query($dbc, $q); if (mysqli_affected_rows($dbc) == 1) { // If it ran OK. $q = "UPDATE accounts SET balance=balance+$amount WHERE account_id=$to"; $r = @mysqli_query($dbc, $q); if (mysqli_affected_rows($dbc) == 1) { // If it ran OK. mysqli_commit($dbc); } else { mysqli_rollback($dbc); echo '<p>The transfer could not be made due to a system error. We apologize for any inconvenience.</p>'; // Public message. echo '<p>' . mysqli_error($dbc) . '<br>Query: ' . $q . '</p>'; // Debugging message. } } else { mysqli_rollback($dbc); echo '<p>The transfer could not be made due to a system error. We apologize for any inconvenience.</p>'; // Public message. echo '<p>' . mysqli_error($dbc) . '<br>Query: ' . $q . '</p>'; // Debugging message. } } }else { // Invalid submitted values. echo '<p class="error">Please select a valid "from" and "to" account and enter a numeric amount to transfer.</p>'; } } // End of submit conditional. // Always show the form... // Get all the accounts and balances as OPTIONs for the SELECT menus: $q = "SELECT account_id, CONCAT(last_name, ', ', first_name) AS name, type, balance FROM accounts LEFT JOIN customers USING (customer_id) ORDER BY name"; $r = @mysqli_query($dbc, $q); $options = ''; while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { $options .= "<option value=\"{$row['account_id']}\">{$row['name']} ({$row['type']}) \${$row['balance']}</option>\n"; } // Create the form: echo '<form action="transfer.php" method="post"> <p>From Account: <select name="from">' . $options . '</select></p> <p>To Account: <select name="to">' . $options . '</select></p> <p>Amount: <input type="number" name="amount" step="0.01" min="1"></p> <p><input type="submit" name="submit" value="Submit"></p> </form>'; mysqli_close($dbc); ?> </body> </html>
  2. Add validations to the transfers script to prevent a negative transfer or the selection of the same account for both the “to” and “from.” I have honestly no idea on how to do this: // if statements right here if ($amount > 0) { if ($to != $from) { // logic to add the balance to the account } else { <p>To and From cannot be the same } } else { <p>Please deposit an amount greater than zero. } } //logic to add the balance to the account This is all I have for adding it, but I dont know what else to do and it gives me an error when I do 0. Help please!
×
×
  • Create New...