questions about mysqli displaying variables

propz

New Member
My project seems simple, update a couple of database tables, one from a little form, print a receipt
and echo out the receipt# and other values. The updates work but the values echoed are wrong or
absent. Cmon brave souls, tell me what I'm doin rong.

<!DOCTYPE html><html>
<head>
<title>record payment</title>
<html><head>
<script type="text/javascript">
var monthNames = [ "January","February","March","April","May","June","July",
"August","September","October","November","December" ];
var today = new Date();
var date = monthNames[today.getMonth()] + " - " + today.getDate() + " - " + today.getFullYear();
</script>
</head>
<body><center>
Date:<script type="text/javascript">document.write(date);</script><p>
<img src="apt-pic.jpg" alt="apartment" height=100 width=300><p>
<?php
$link = mysqli_connect("localhost", "root", "", "homedb");
// Check connection
if($link === false){ die("ERROR: Could not connect. " . mysqli_connect_error()); }

$unit=$_POST['unit'];
$amtpaid=$_POST['amtpaid'];
$paidday=$_POST['paidday'];
$id = '';

$amtpaid = 0;
$amtdue = 0;
$dueday = '';

$prevbal = 0;
$latechg = 0;

$secdep = 0;
$damage = 0;
$courtcost = 0;
$nsf = 0;
$paidday = '';

$bizname = '';
$bizstreet = '';
$bizcity = '';
$bizzip = '';
$bizemail = '';
$receiptno = 0;
$owed = $amtdue - $amtpaid;
$due= '';
/* Perform a query, check for error */
$sql = "UPDATE crttbl SET
receiptno = receiptno + 1 where id=1";

echo "receipt# $receiptno"; // line 50

if(mysqli_query($link, $sql)){ echo "receiptno updated"; }
else { echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); }

$due = $amtdue + $prevbal + $latechg + $secdep + $damage + $courtcost + $nsf;

/* if no pay or part pay, add $35 to latechg field and amount not paid to prevbal field */
if ($amtpaid < $due) { $prevbal = $due - $amtpaid; $latechg = $latechg + 35.00;
$amtpaid = 0; $secdep = 0; $damage = 0; $courtcost = 0;
$nsf = 0; $hudpay = 0; $comments = ' '; $paidday = ' '; }
/* if amt paid = amt due, */
if ($amtpaid == $due) { $amtpaid = 0; $prevbal = 0; $latechg = 0;;
$secdep = 0; $damage = 0; $courtcost = 0;
$nsf = 0; $hudpay = 0; $comments = ' '; $paidday = ' '; }
/* if over-payment subtract over-payment from prevbal */
if ($amtpaid > $due) { $prevbal = $amtpaid - $due;
$amtpaid = 0; $latechg = 0; $secdep = 0; $damage = 0; $courtcost = 0;
$nsf = 0; $hudpay = 0; $comments = ' '; $paidday = ' '; }

/* Perform a query, check for error */
$sql = "UPDATE paytbl SET
$amtpaid = '$amtpaid', dueday = DATE_ADD(dueday, INTERVAL 1 MONTH), prevbal = '$prevbal',
latechg = '$latechg', paidday = '$paidday' WHERE unit = '$unit'";
if(mysqli_query($link, $sql)){ echo ""; }
else { echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); }
?>

<?php echo $bizname;echo "<br />"; ?> // line 78
<?php echo $bizstreet;echo "<br />"; ?>
<?php echo $bizcity;echo "<br />"; ?>
<?php echo $bizzip;echo "<br />"; ?><br>
<?php echo $bizemail;echo "<br />"; ?> // line 82

For:<SELECT name="options">
<option value="#990033" style="background-color: Violet;">Rent payment</option>
<option value="#003300" style="background-color: Aquamarine;">Background Check</option>
<option value="#6600cc" style="background-color: Pink;">Security Deposit Payment</option>
<option value="#003300" style="background-color: Aquamarine;">Damages Payment</option>
<option value="#990033" style="background-color: Violet;">Late Charges Payment</option>
<option value="#003300" style="background-color: Aquamarine;">Court Costs Payment</option>
<option value="#6600cc" style="background-color: Pink;">NSF Payment</option>
<option value="#990033" style="background-color: Violet;"> </option>
</SELECT><p>

Tenant paying is: <?php echo $_POST["unit"]; ?> -
Amount paid is: <?php echo $_POST["amtpaid"]; ?> -

Balance due is:<?php echo $owed; ?><br> // line 98
<b><input type="text" size="35" maxlength="35" name=frm.Name" value="sign" STYLE="color: #000000; font-weight: bold; background-color: #ffccff;" onFocus="this.value=''"><br>
<h3>We Thank You</h3>
</center></body></html>
<?php
// Close connection
mysqli_close($link);
?>

result:
apartment
receipt# 0receiptno updatedERROR: Could not able to execute UPDATE paytbl SET 0 = '0',
dueday = DATE_ADD(dueday, INTERVAL 1 MONTH), prevbal = '0', latechg = '0', paidday = ' '
WHERE unit = 'unit1'. You have an error in your SQL syntax; check the manual that corresponds
to your MariaDB server version for the right syntax to use near '0 = '0', dueday = DATE_ADD(dueday,
INTERVAL 1 MONTH), prevbal = '0', latech...' at line 2
// line 78

// line 82 For: Tenant paying is: unit1 - Amount paid is: 530.00 - Balance due is:0
// line 98
 

Cromewell

Administrator
Staff member
The update doesn't work.
ERROR: Could not able to execute UPDATE paytbl SET 0 = '0',
dueday = DATE_ADD(dueday, INTERVAL 1 MONTH), prevbal = '0', latechg = '0', paidday = ' '
WHERE unit = 'unit1'
The particular error is almost assuredly 0 = '0'
This is coming from your SQL variable, I added arrows around it:
$sql = "UPDATE paytbl SET
---->$amtpaid = '$amtpaid' <----, dueday = DATE_ADD(dueday, INTERVAL 1 MONTH), prevbal = '$prevbal',
latechg = '$latechg', paidday = '$paidday' WHERE unit = '$unit'";

the values echoed are wrong or absent.
You are referring to this section?
<?php echo $bizname;echo "<br />"; ?> // line 78
<?php echo $bizstreet;echo "<br />"; ?>
<?php echo $bizcity;echo "<br />"; ?>
<?php echo $bizzip;echo "<br />"; ?><br>
<?php echo $bizemail;echo "<br />"; ?> // line 82
The values are echoed are correctly empty, lines 38-42:
$bizname = '';
$bizstreet = '';
$bizcity = '';
$bizzip = '';
$bizemail = '';
 

propz

New Member
echo "receipt# $receiptno"; is the code, receiptno is 250.
$amtpaid = '$amtpaid'; is the code, amtpaid is decimal 8,2.
<?php echo $bizname; echo "<br />"; ?> is the code, bizname is a string.
why can't you tell me how to define these variables correctly?
 

Cromewell

Administrator
Staff member
why can't you tell me how to define these variables correctly?
They should probably be set based on data in your table. You have a previous thread where we discussed fetching the values from a db and setting them to variables. https://www.computerforum.com/threads/need-help-with-mysqli-update.249470/#post-2081684
echo "receipt# $receiptno"; is the code, receiptno is 250.
$amtpaid = '$amtpaid'; is the code, amtpaid is decimal 8,2.
I don't understand what you are trying to tell me here. I know
PHP:
echo "receipt# $receiptno";
is code. Why is $receiptno = 250? That's certainly nowhere in your code. Your code sets it to 0, line 43

I am fairly sure that receiptno and amtpaid should change from transaction to transaction and are not constants of 250 and 8.2.
 
Top