I had a perfectly working backend until server switch


#1

I built a backend for a client that was working perfectly for 3 months, then i had to switch hosting providers and now the insert and update steps do not seem to work any longer, i do an update and it does not really do it on the database.
What server differences would cause an issue like this
Php Versions?
MySQL Versions?

Both servers run Apache


#2

Are you able to enable error reporting in your php configuration. Do you get any messages at all on screen or in your browser developer console?


#3

It does but I do not understand the error at all, here is a screen shot.


#4

Just a little background on this, the front end was created about a year ago with DMXZone extensions, and all worked perfectly.
Since switching servers the enquiry form on the front end adds the info to the DB but the email that should be sent never does. However there are 2 other forms on the same front end that do similar things and the DB insert/update and email works on those.

The backend was done in early Wappler and was fine until the server switch, now it will not insert or update records any longer.


#5

Yes, ignore the first 3, its the server 500 error in your update query which will be the issue. I have seen this before and never really got to the bottom of it other than i have found this has helped before.

  • Open and close the database connection to allow wappler to check the structure
  • Open the query, make a change then reverse it then save to refresh the linked file
  • In app connect open and re-select the server action then re-save

If that doesn’t help then can i see the query (screen copy of query manager screens) and the database table structure? PM if you prefer


#6

Might help

Old Server
PHP 7.0.30
MySQL 10.2.16-MariaDB

New Server
PHP 7.1.21
MySQL 10.2.18-MariaDB


#7

What is the character set, i seem to recall there was a json_encode change to deal with some character set issues 7.0 -> 7.1 but i very much doubt that is the issue


#8

I assume you mean the UTF-8 thing in the head?

This was probably the first real project I ever attempted in Wappler by the way

Query to get the consumer list


Query Condition


Delete


Insert



Update



Update Condition


#9

@psweb, this may help:


#10

Good reminder @drymetal, had forgotten about that facility


#11

Thanks Chad, I actually had the debug on already, and completely forgot to go to the correct area, was good to watch that video again.

Yup it is telling me exactly the issue, I just dont understand why on the old server this worked and on the new server it does not, any clues, do different servers have different date formats?


#12

what should be the value/format of AccDBMostTRecentDateOfTravel?


#13

Well its a little strange to be honest, but this client might only have one field worth of information or they could have 10 so the info needs to submit if almost every field is blank.

The database table field for acMostRecentDateOfTravel is

Name Type Null Default
acMostRecentDateOfTravel date Yes NULL

The Wappler HTML for this field is

<div class="form-group">
  <label for="acCdbMostRecentDateOfTravelInsert">Most Recent Date of Travel:</label>
  <input type="date" class="form-control" id="acCdbMostRecentDateOfTravelInsert" name="acCdbMostRecentDateOfTravelInsert">
</div>

The Server Connect action row for the update is

# Column Type Value Condition
24 acCdbMostRecentDateOfTravel date {{$_POST.acCdbMostRecentDateOfTravel}}

#15

Lol, well i just checked old server and new server

Old
STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

New
STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


#16

-> Though in Mariadb, you can also get that error if you are inserting blank dates. Though you were using mariadb in both… hmmm. I’d pee on the computer.

I was using my phone. Clumsy fingers. Deleted original comment and deleted new one. Grrrr. I miss my bigger phone.


#17

The form field is accdb…insert, the query post reads accdb… without the insert at the end?


#18

haha, holy poop balls Hyperbytes, you are 100% correct, hmm, wonder how that happened, thank you, I am going to just go through these fields quickly and make sure. I did not even see that.
Thank You 100 times, I just spent 2 hours looking at this, can not believe i never saw that, and can not believe it ever worked before for 3 entire months, makes no sense, it should have never ever worked.


#19

My reward is I can go to bed now -lol


#20

Absolutely, i have used your brain now, you may leave, will wake you if i need anything else, lol


#21

Ok I have looked at this in more detail and it was not really that @Hyperbytes, damn, so what the page does is run a small query on load which gives me a list of clients, if a client is clicked on it opens a data detail region which has an UPDATE form inside.
However if no entry is clicked on and instead the user clicks a button at the top of the page saying ADD NEW ENTRY then a second form is displayed with different IDs to the update form.
Here is the code to try make sense of it possibly

<?php
require('dmxConnectLib/dmxConnect.php');

$app = new \lib\App();

$app->exec(<<<'JSON'
{
	"steps": [
		"Connections/con_ac_db",
		"SecurityProviders/security_ac_db",
		{
			"module": "auth",
			"action": "restrict",
			"options": {"loginUrl":"index.php","forbiddenUrl":"index.php","provider":"security_ac_db"}
		}
	]
}
JSON
, TRUE);
?>
<!doctype html>
<html><head>
<meta charset="UTF-8">
  <title>Africa Collection Consumer Database Administration</title>
    
  <link rel="apple-touch-icon" sizes="180x180" href="../ac-icon/apple-touch-icon.png">
  <link rel="icon" type="image/png" sizes="32x32" href="../ac-icon/favicon-32x32.png">
  <link rel="icon" type="image/png" sizes="16x16" href="../ac-icon/favicon-16x16.png">
  <link href="https://fonts.googleapis.com/css?family=Gentium+Basic:400i%7cOpen+Sans+Condensed:700%7cRoboto:300,300i,400,500,700,900" rel="stylesheet">
  
  <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
  <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
  <script type="text/javascript" src="dmxAppConnect/dmxAppConnect.js"></script>
  <script type="text/javascript" src="dmxAppConnect/dmxBootstrap4Navigation/dmxBootstrap4Navigation.js"></script>
  <script type="text/javascript" src="dmxAppConnect/dmxBrowser/dmxBrowser.js"></script>
  <script type="text/javascript" src="dmxAppConnect/dmxDataTraversal/dmxDataTraversal.js"></script>
  <script type="text/javascript" src="dmxAppConnect/dmxFormatter/dmxFormatter.js"></script>
  <link rel="stylesheet" type="text/css" href="dmxAppConnect/dmxValidator/dmxValidator.css">
  <script type="text/javascript" src="dmxAppConnect/dmxValidator/dmxValidator.js"></script>
  <link rel="stylesheet" type="text/css" href="admin_styles.css?<?php echo date('l jS \of F Y h:i:s A'); ?>">
  </head>
  <body is="dmx-app">
    <dmx-serverconnect id="serverconnect_consumer_view" url="dmxConnect/api/consumer/consumers.php" dmx-param:filter_post_code="filter_post_code.value" dmx-param:filter_email="filter_email.value"></dmx-serverconnect>
    <dmx-value id="var_insert_new"></dmx-value>
    <?php include 'inc-header.php';?>
    <dmx-serverconnect id="logout" url="dmxConnect/api/authentication_security/ac_logout.php" noload="noload" dmx-on:success="browser_logout.goto('index.php')"></dmx-serverconnect>
    <div is="dmx-browser" id="browser_logout"></div>
    <div class="container">
      <div class="row">
        <div class="col-4">
          <h4>Consumers <span class="badge badge-secondary float-right">{{serverconnect_consumer_view.data.query_paged_consumers.total}} Records</span>
          </h4>
          <div class="form-row">
            <div class="form-group col-md-6">
              <input type="text" class="form-control" id="filter_post_code" name="filter_post_code" placeholder="Filter: Post Code">
            </div>
            <div class="form-group col-md-6">
              <input type="text" class="form-control" id="filter_email" name="filter_email" placeholder="Filter: Email">
            </div>
          </div>
          <div class="list-group list-group-flush" is="dmx-repeat" id="repeat_consumer_view" dmx-bind:repeat="serverconnect_consumer_view.data.query_paged_consumers.data">
            <a href="javascript:void(0);" class="list-group-item list-group-item-action" dmx-on:click="data_detail_consumer_view.select(acCdbID);var_insert_new.setValue()"> {{acCdbCaptureDate}} - {{acCdbOriginalDatabaseOrigin}}</a>
          </div>
          <div class="btn-group mt-2 mb-5" role="group" aria-label="Pagination">
            <button type="button" class="btn btn-dark" dmx-on:click="serverconnect_consumer_view.load({offset: serverconnect_consumer_view.data.query_paged_consumers.page.offset.prev, limit: 25})" dmx-hide="serverconnect_consumer_view.data.query_paged_consumers.page.current == 1">←</button>
            <button type="button" class="btn btn-dark" dmx-on:click="serverconnect_consumer_view.load({offset: serverconnect_consumer_view.data.query_paged_consumers.page.offset.next, limit: 25})" dmx-hide="serverconnect_consumer_view.data.query_paged_consumers.page.current == serverconnect_consumer_view.data.query_paged_consumers.page.total">→</button>
            <span class="btn btn-dark disabled">Page {{serverconnect_consumer_view.data.query_paged_consumers.page.current}} of {{serverconnect_consumer_view.data.query_paged_consumers.page.total}}</span></div>
        </div>
        <div class="col-7 offset-lg-1">
          <p dmx-hide="data_detail_consumer_view.data.acCdbID" class="text-danger">To View, Edit, or Delete an existing entry, click it on the list to the left.<br>To Add a new entry click <button type="button" class="btn btn-success" dmx-on:click="var_insert_new.setValue(1)">ADD NEW ENTRY</button></p>
          <form is="dmx-serverconnect-form" id="serverconnectform_insert" method="post" action="dmxConnect/api/consumer/consumers_insert.php" dmx-generator="bootstrap4" dmx-form-type="vertical" dmx-show="var_insert_new.value" dmx-on:success="serverconnect_consumer_view.load({limit: 25});var_insert_new.setValue()">
            <div class="form-row">
              <div class="form-group col-md-6">
                <label for="acCdbTitleInsert">Title:</label>
                <input type="text" class="form-control" id="acCdbTitleInsert" name="acCdbTitleInsert" placeholder="Mr, Miss, Mrs, Ms, Unkown, or Blank">
              </div>
              <div class="form-group col-md-6">
                <label for="acCdbInitialsInsert">Initials:</label>
                <input type="text" class="form-control" id="acCdbInitialsInsert" name="acCdbInitialsInsert">
              </div>
            </div>
            <div class="form-row">
              <div class="form-group col-md-6">
                <label for="acCdbFirstNameInsert">First Name:</label>
                <input type="text" class="form-control" id="acCdbFirstNameInsert" name="acCdbFirstNameInsert">
              </div>
              <div class="form-group col-md-6">
                <label for="acCdbLastNameInsert">Last Name:</label>
                <input type="text" class="form-control" id="acCdbLastNameInsert" name="acCdbLastNameInsert">
              </div>
            </div>
            <div class="form-group">
              <label for="acCdbAddress1Insert">Address 1:</label>
              <input type="text" class="form-control" id="acCdbAddress1Insert" name="acCdbAddress1Insert">
            </div>
            <div class="form-group">
              <label for="acCdbAddress2Insert">Address 2:</label>
              <input type="text" class="form-control" id="acCdbAddress2Insert" name="acCdbAddress2Insert">
            </div>
            <div class="form-group">
              <label for="acCdbAddress3Insert">Address 3:</label>
              <input type="text" class="form-control" id="acCdbAddress3Insert" name="acCdbAddress3Insert">
            </div>
            <div class="form-group">
              <label for="acCdbAddressTownInsert">Town:</label>
              <input type="text" class="form-control" id="acCdbAddressTownInsert" name="acCdbAddressTownInsert">
            </div>
            <div class="form-row">
              <div class="form-group col-md-6">
                <label for="acCdbAddressCountyInsert">County:</label>
                <input type="text" class="form-control" id="acCdbAddressCountyInsert" name="acCdbAddressCountyInsert">
              </div>
              <div class="form-group col-md-6">
                <label for="acCdbAddressPostCodeInsert">Post Code:</label>
                <input type="text" class="form-control" id="acCdbAddressPostCodeInsert" name="acCdbAddressPostCodeInsert">
              </div>
            </div>
            <div class="form-group">
              <label for="acCdbAddressCountryInsert">Country:</label>
              <input type="text" class="form-control" id="acCdbAddressCountryInsert" name="acCdbAddressCountryInsert">
            </div>
            <div class="form-group">
              <label for="acCdbEmailInsert">Email Address:</label>
              <input type="email" class="form-control" id="acCdbEmailInsert" name="acCdbEmailInsert">
            </div>
            <div class="form-group">
              <label for="acCdbStatusInsert">Status:</label>
              <input type="text" class="form-control" id="acCdbStatusInsert" name="acCdbStatusInsert" placeholder="Sent, Waiting">
            </div>
            <div class="form-row">
              <div class="form-group col-md-6">
                <label for="acCdbBInsert">POP:</label>
                <input type="text" class="form-control" id="acCdbBInsert" name="acCdbBInsert" aria-describedby="acCdbBInsert_help" placeholder="The # of Portfolio Brochures Sent">
                <small id="acCdbBInsert_help" class="form-text text-muted">Used to be know as Column B.</small>
              </div>
              <div class="form-group col-md-6">
                <label for="acCdbRInsert">AC Guide:</label>
                <input type="text" class="form-control" id="acCdbRInsert" name="acCdbRInsert" aria-describedby="acCdbRInsert_help" placeholder="The # of AC Guides Sent">
                <small id="acCdbRInsert_help" class="form-text text-muted">Used to be known as Column R.</small>
              </div>
            </div>
            <div class="form-group">
              <label for="acCdbNotesInsert">Notes:</label>
              <textarea id="acCdbNotesInsert" name="acCdbNotesInsert" class="form-control"></textarea>
            </div>
            <div class="form-group">
              <label for="acCdbTelephoneInsert">Telephone Number:</label>
              <input type="text" class="form-control" id="acCdbTelephoneInsert" name="acCdbTelephoneInsert">
            </div>
            <div class="form-group">
              <label for="acCdbObtainedSourceInsert">Obtained Source:</label>
              <input type="text" class="form-control" id="acCdbObtainedSourceInsert" name="acCdbObtainedSourceInsert">
            </div>
            <div class="form-group">
              <label for="acCdbReSentDateInsert">Re-Sent Date:</label>
              <input type="date" class="form-control" id="acCdbReSentDateInsert" name="acCdbReSentDateInsert">
            </div>
            <div class="form-row">
              <div class="form-group col-md-6">
                <label for="acCdbBookedPreviouslyInsert">Booked Previously:</label>
                <input type="text" class="form-control" id="acCdbBookedPreviouslyInsert" name="acCdbBookedPreviouslyInsert" aria-describedby="acCdbBookedPreviouslyInsert_help">
                <small id="acCdbBookedPreviouslyInsert_help" class="form-text text-muted">ENTER Y(yes) / N(no).</small>
              </div>
              <div class="form-group col-md-6">
                <label for="acCdbNumberOfBookingsInsert">Number of Bookings:</label>
                <input type="number" class="form-control" id="acCdbNumberOfBookingsInsert" name="acCdbNumberOfBookingsInsert">
              </div>
            </div>
            <div class="form-group">
              <label for="acCdbMostRecentDateOfTravelInsert">Most Recent Date of Travel:</label>
              <input type="date" class="form-control" id="acCdbMostRecentDateOfTravelInsert" name="acCdbMostRecentDateOfTravelInsert">
            </div>
            <div class="form-row">
              <div class="form-group col-md-6">
                <label for="acCdbBookingValueInsert">Booking Value:</label>
                <input type="number" class="form-control" id="acCdbBookingValueInsert" name="acCdbBookingValueInsert">
              </div>
              <div class="form-group col-md-6">
                <label for="acCdbTotalSpendInsert">Total Spend:</label>
                <input type="number" class="form-control" id="acCdbTotalSpendInsert" name="acCdbTotalSpendInsert">
              </div>
            </div>
            <div class="form-group">
              <button type="submit" class="btn btn-success">Insert Record</button>
            </div>
          </form>
          <dmx-data-detail id="data_detail_consumer_view" dmx-bind:data="serverconnect_consumer_view.data.query_paged_consumers.data" key="acCdbID" dmx-show="data_detail_consumer_view.data.acCdbID">
            <h4>Details</h4>
            <form is="dmx-serverconnect-form" id="serverconnectform_view_update" method="post" action="dmxConnect/api/consumer/consumers_update.php" dmx-generator="bootstrap4" dmx-form-type="vertical" dmx-populate="data_detail_consumer_view.data">
              <div class="form-group">
                <input type="hidden" class="form-control" id="acCdbID" name="acCdbID" dmx-bind:value="data_detail_consumer_view.data.acCdbID" required="" data-msg-required="The ID is missing, please contact the web guy.">
              </div>
              <div class="form-group">
                <label for="acCdbCaptureDate">Date Captured:</label>
                <input type="date" class="form-control" id="acCdbCaptureDate" name="acCdbCaptureDate" dmx-bind:value="data_detail_consumer_view.data.acCdbCaptureDate.replace(&quot;NULL&quot;, &quot;&quot;)">
              </div>
              <div class="form-row">
                <div class="form-group col-md-6">
                  <label for="acCdbTitle">Title:</label>
                  <input type="text" class="form-control" id="acCdbTitle" name="acCdbTitle" dmx-bind:value="data_detail_consumer_view.data.acCdbTitle.replace(&quot;NULL&quot;, &quot;&quot;)">
                </div>
                <div class="form-group col-md-6">
                  <label for="acCdbInitials">Initials:</label>
                  <input type="text" class="form-control" id="acCdbInitials" name="acCdbInitials" dmx-bind:value="data_detail_consumer_view.data.acCdbInitials.replace(&quot;NULL&quot;, &quot;&quot;)">
                </div>
              </div>
              <div class="form-row">
                <div class="form-group col-md-6">
                  <label for="acCdbFirstName">First Name:</label>
                  <input type="text" class="form-control" id="acCdbFirstName" name="acCdbFirstName" dmx-bind:value="data_detail_consumer_view.data.acCdbFirstName.replace(&quot;NULL&quot;, &quot;&quot;)">
                </div>
                <div class="form-group col-md-6">
                  <label for="acCdbLastName">Last Name:</label>
                  <input type="text" class="form-control" id="acCdbLastName" name="acCdbLastName" dmx-bind:value="data_detail_consumer_view.data.acCdbLastName.replace(&quot;NULL&quot;, &quot;&quot;)">
                </div>
              </div>
              <div class="form-group">
                <label for="acCdbAddress1">Address 1:</label>
                <input type="text" class="form-control" id="acCdbAddress1" name="acCdbAddress1" dmx-bind:value="data_detail_consumer_view.data.acCdbAddress1.replace(&quot;NULL&quot;, &quot;&quot;)">
              </div>
              <div class="form-group">
                <label for="acCdbAddress2">Address 2:</label>
                <input type="text" class="form-control" id="acCdbAddress2" name="acCdbAddress2" dmx-bind:value="data_detail_consumer_view.data.acCdbAddress2.replace(&quot;NULL&quot;, &quot;&quot;)">
              </div>
              <div class="form-group">
                <label for="acCdbAddress3">Address 3:</label>
                <input type="text" class="form-control" id="acCdbAddress3" name="acCdbAddress3" dmx-bind:value="data_detail_consumer_view.data.acCdbAddress3.replace(&quot;NULL&quot;, &quot;&quot;)">
              </div>
              <div class="form-group">
                <label for="acCdbAddressTown">Town:</label>
                <input type="text" class="form-control" id="acCdbAddressTown" name="acCdbAddressTown" dmx-bind:value="data_detail_consumer_view.data.acCdbAddressTown.replace(&quot;NULL&quot;, &quot;&quot;)">
              </div>
              <div class="form-row">
                <div class="form-group col-md-6">
                  <label for="acCdbAddressCounty">County:</label>
                  <input type="text" class="form-control" id="acCdbAddressCounty" name="acCdbAddressCounty" dmx-bind:value="data_detail_consumer_view.data.acCdbAddressCounty.replace(&quot;NULL&quot;, &quot;&quot;)">
                </div>
                <div class="form-group col-md-6">
                  <label for="acCdbAddressPostCode">Post Code:</label>
                  <input type="text" class="form-control" id="acCdbAddressPostCode" name="acCdbAddressPostCode" dmx-bind:value="data_detail_consumer_view.data.acCdbAddressPostCode.replace(&quot;NULL&quot;, &quot;&quot;)">
                </div>
              </div>
              <div class="form-group">
                <label for="acCdbAddressCountry">Country:</label>
                <input type="text" class="form-control" id="acCdbAddressCountry" name="acCdbAddressCountry" dmx-bind:value="data_detail_consumer_view.data.acCdbAddressCountry.replace(&quot;NULL&quot;, &quot;&quot;)">
              </div>
              <div class="form-group">
                <label for="acCdbEmail">Email Address:</label>
                <input type="text" class="form-control" id="acCdbEmail" name="acCdbEmail" dmx-bind:value="data_detail_consumer_view.data.acCdbEmail">
              </div>
              <div class="form-group">
                <label for="acCdbStatus">Status:</label>
                <input type="text" class="form-control" id="acCdbStatus" name="acCdbStatus" dmx-bind:value="data_detail_consumer_view.data.acCdbStatus">
              </div>
              <div class="form-row">
                <div class="form-group col-md-6">
                  <label for="acCdbB">POP:</label>
                  <input type="text" class="form-control" id="acCdbB" name="acCdbB" aria-describedby="acCdbB_help" dmx-bind:value="data_detail_consumer_view.data.acCdbB.replace(&quot;NULL&quot;, &quot;&quot;)">
                  <small id="acCdbB_help" class="form-text text-muted">Used to be know as Column B.</small>
                </div>
                <div class="form-group col-md-6">
                  <label for="acCdbR">AC Guide:</label>
                  <input type="text" class="form-control" id="acCdbR" name="acCdbR" aria-describedby="acCdbR_help" dmx-bind:value="data_detail_consumer_view.data.acCdbR.replace(&quot;NULL&quot;, &quot;&quot;)">
                  <small id="acCdbR_help" class="form-text text-muted">Used to be known as Column R.</small>
                </div>
              </div>
              <div class="form-group">
                <label for="acCdbNotes">Notes:</label>
                <textarea class="form-control" id="acCdbNotes" name="acCdbNotes" dmx-bind:value="data_detail_consumer_view.data.acCdbNotes.replace(&quot;NULL&quot;, &quot;&quot;)"></textarea>
              </div>
              <div class="form-group">
                <label for="acCdbTelephone">Telephone Number:</label>
                <input type="text" class="form-control" id="acCdbTelephone" name="acCdbTelephone" dmx-bind:value="data_detail_consumer_view.data.acCdbTelephone.replace(&quot;NULL&quot;, &quot;&quot;)">
              </div>
              <div class="form-group">
                <label for="acCdbObtainedSource">Obtained Source:</label>
                <input type="text" class="form-control" id="acCdbObtainedSource" name="acCdbObtainedSource" dmx-bind:value="data_detail_consumer_view.data.acCdbObtainedSource">
              </div>
              <div class="form-group">
                <label for="acCdbReSentDate">Re-Sent Date:</label>
                <input type="date" class="form-control" id="acCdbReSentDate" name="acCdbReSentDate" dmx-bind:value="data_detail_consumer_view.data.acCdbReSentDate">
              </div>
              <div class="form-row">
                <div class="form-group col-md-6">
                  <label for="acCdbBookedPreviously">Booked Previously:</label>
                  <input type="text" class="form-control" id="acCdbBookedPreviously" name="acCdbBookedPreviously" dmx-bind:value="data_detail_consumer_view.data.acCdbBookedPreviously" aria-describedby="bookedPreviouslyHelpBlock">
                  <small id="bookedPreviouslyHelpBlock" class="form-text text-muted">ENTER Y(yes) / N(no).</small>
                </div>
                <div class="form-group col-md-6">
                  <label for="acCdbNumberOfBookings">Number of Bookings:</label>
                  <input type="number" class="form-control" id="acCdbNumberOfBookings" name="acCdbNumberOfBookings" dmx-bind:value="data_detail_consumer_view.data.acCdbNumberOfBookings">
                </div>
              </div>
              <div class="form-group">
                <label for="acCdbMostRecentDateOfTravel">Most Recent Date of Travel:</label>
                <input type="date" class="form-control" id="acCdbMostRecentDateOfTravel" name="acCdbMostRecentDateOfTravel" dmx-bind:value="data_detail_consumer_view.data.acCdbMostRecentDateOfTravel">
              </div>
              <div class="form-row">
                <div class="form-group col-md-6">
                  <label for="acCdbBookingValue">Booking Value:</label>
                  <input type="number" class="form-control" id="acCdbBookingValue" name="acCdbBookingValue" dmx-bind:value="data_detail_consumer_view.data.acCdbBookingValue">
                </div>
                <div class="form-group col-md-6">
                  <label for="acCdbTotalSpend">Total Spend:</label>
                  <input type="number" class="form-control" id="acCdbTotalSpend" name="acCdbTotalSpend" dmx-bind:value="data_detail_consumer_view.data.acCdbTotalSpend">
                </div>
              </div>
              <div class="form-group">
                <label for="acCdbOriginalDatabaseOrigin">Database Origin:</label>
                <input type="text" class="form-control" id="acCdbOriginalDatabaseOrigin" name="acCdbOriginalDatabaseOrigin" dmx-bind:value="data_detail_consumer_view.data.acCdbOriginalDatabaseOrigin">
              </div>
              <div class="form-group">
                <button type="submit" class="btn btn-primary" form="serverconnectform_view_update">Update Record</button>
                <button type="submit" class="btn btn-danger float-right" form="serverconnectform_delete">Delete Record</button>
              </div>
            </form>
            <form is="dmx-serverconnect-form" id="serverconnectform_delete" method="post" action="dmxConnect/api/consumer/consumers_delete.php" dmx-generator="bootstrap4" dmx-form-type="vertical" dmx-populate="data_detail_consumer_view.data" dmx-on:success="serverconnect_consumer_view.load({limit: 25})">
              <div class="form-group">
                <input type="hidden" class="form-control" id="acCdbIDdelete" name="acCdbIDdelete" dmx-bind:value="data_detail_consumer_view.data.acCdbID" required="" data-msg-required="The ID is missing, please contact the web guy.">
              </div>
            </form>
          </dmx-data-detail>
        </div>
      </div>
    </div>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
    <script type="text/javascript" src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js" integrity="sha384-smHYKdLADwkXOn1EmN1qk/HfnUcbVRZyYmZ4qpPea6sjB/pTJ0euyQp0Mk8ck+5T" crossorigin="anonymous"></script>
  </body></html>