PHP MySQL код отправки дополнительных строк в базу данных? - PullRequest
2 голосов
/ 07 марта 2012

ВТОРОЕ РЕДАКТИРОВАНИЕ Кажется, что при загрузке страницы, а не при отправке, две записи (пустые строки) добавляются в мою базу данных. Я действительно изо всех сил пытаюсь найти свою проблему здесь, но я чувствую, что это довольно глупая ошибка.

У меня проблема с тем, что мой код php / mysql публикует лишние пустые строки вместе с тем, что он должен публиковать. Код для проверки данных из моей формы и для передачи информации в базу данных ниже. Каждый раз, когда я вношу данные в форму и отправляю ее, она работает нормально, однако добавляет дополнительные строки в tblLocation, tblWhere работает нормально. Кто-нибудь может привести меня в правильном направлении здесь? Дайте мне знать, если вам нужно больше моего кода.

КОД КАК СЛЕДУЮЩИЙ

if (isset($_POST['butSubmit'])) {

// set variables to data from form    
$user= mysql_real_escape_string($_POST["txtUser"]);
$fName= mysql_real_escape_string($_POST["txtFname"]);
$lName= mysql_real_escape_string($_POST["txtLname"]);
$email= mysql_real_escape_string($_POST["txtEmail"]);
$date= date(DATE_RFC822);
$street= mysql_real_escape_string($_POST["txtStreet"]);
$city= mysql_real_escape_string($_POST["txtCity"]);
$state= mysql_real_escape_string($_POST["lstStates"]);
$zip= mysql_real_escape_string($_POST["txtZip"]);

    //handle html characters
$user = htmlentities($user, ENT_QUOTES);
$fName = htmlentities($fName, ENT_QUOTES);
$lName = htmlentities($lName, ENT_QUOTES);
$email = htmlentities($email, ENT_QUOTES);
$date = htmlentities($date, ENT_QUOTES);
$street = htmlentities($street, ENT_QUOTES);
$city = htmlentities($city, ENT_QUOTES);
$state = htmlentities($state, ENT_QUOTES);
$zip = htmlentities($zip, ENT_QUOTES);
$errorMsg=array();


// initiate testing procedures for form contents 
if($user==""){
    $errorMsg[]="Please enter your Username";
} else {
    $valid = verifyAlphaNum ($user); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Username must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

if($fName==""){
    $errorMsg[]="Please enter your First Name";
} else {
    $valid = verifyAlphaNum ($fName); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="First Name must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($lName==""){
    $errorMsg[]="Please enter your Last Name";
} else {
    $valid = verifyAlphaNum ($lName); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Last Name must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

if($email==""){
    $errorMsg[]="Please enter your Email Address";
} elseif (!verifyEmail($email)){
    $errorMsg[]="Correct eMail format is ( example@anysite.com )";
}

    if($street==""){
    $errorMsg[]="Please enter your Street Address";
} else {
    $valid = verifyAlphaNum ($street); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Street Address must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($city==""){
    $errorMsg[]="Please enter a City";
} else {
    $valid = verifyAlphaNum ($city); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="City must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($state==""){
    $errorMsg[]="Please choose a State";
} else {
    $valid = verifyAlphaNum ($state); /* test for non-valid  data */
    }
}

    if($errorMsg){
    echo "<ul>\n";
    foreach($errorMsg as $err){
        echo "<li style='color: #ff6666'>" . $err . "</li>\n";
    }
    echo "</ul>\n";
} else { 

                 mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES ('$user', '$fName', '$lName', '4', '0', '$date', '$email')");
                                if (mysql_errno()) {
                            echo $sql . "<br/>\n" . mysql_error();
                                }

                    mysql_query("INSERT INTO tblLocation (fk_Username, fldStreet, fldCity, fldState, fldZip) VALUES ('$user', '$street', '$city', '$state', '$zip')");
                                if (mysql_errno()) {
                            echo $sql . "<br/>\n" . mysql_error();
                                }
}
mysql_close();
print $user;

EDIT Вот полный код, может быть, это поможет?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>

<title>CS148 "Where Are You From?" Page</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="author" content="Stephen B. Wakita" />

<meta name='description' content='Form to gather information for CS148 PHP Form Assignment. The     javascript functions for validation are from Easy! Designs, LLC easydesigns.net and few by Robert Erickson.'/>

<link rel="stylesheet"
  href="mystyle.css"
  type="text/css"
  media="screen" />

<script src="validation.js" type="text/javascript"></script>    

<script type="text/javascript">
<!--
window.onload = Initialize;

function Initialize(){
  if (!document.getElementById || !document.createElement || !document.createTextNode)
    return;

  var objForm = document.getElementById('frmRegister');
  objForm.onsubmit= function(){return fblnVerified(this);};
}

function reSetForm(){
    document.getElementById('txtFname').style.background='#fff';
    document.getElementById('txtLname').style.background='#fff';
    document.getElementById('txtEmail').style.background='#fff';    
    document.getElementById('lstStates').style.background='#fff';
    document.getElementById('errors').innerHTML="";
}

function fblnVerified(theForm){
        reSetForm();
        returnStatus = true;
      errorMsg = "";
        numErrors = 0;


    if (isEmpty(theForm.txtFname.value)) {
        document.getElementById('txtFname').style.background='#FF6';
        errorMsg += "<li>Please enter your first name.</li>";
        numErrors += 1;
        returnStatus = false;
    }

    if (isEmpty(theForm.txtLname.value)) {
        document.getElementById('txtLname').style.background='#FF6';
        errorMsg += "<li>Please Enter your last name.</li>";
        numErrors += 1;
        returnStatus = false;
    } else if (!isWithinRange(theForm.txtLname.value.length, 2, 45)){
        document.getElementById('txtLname').style.background='#FF6';
        errorMsg += "<li>Last name must contain at least two characters.</li>";
        numErrors += 1;
        returnStatus = false;
    }

    if (isEmpty(theForm.txtEmail.value)) {
        document.getElementById('txtEmail').style.background='#FF6';
        errorMsg += "<li>Please enter your email address.</li>";
        numErrors += 1;
        returnStatus = false;
    }else if (!isEmailAddress(theForm.txtEmail.value)){
        document.getElementById('txtEmail').style.background='#FF6';
        errorMsg += "<li>You have entered your email in an invalid format, please use this format: example@example.xxx </li>";
        numErrors += 1;     
        returnStatus = false;
    }

    if(returnStatus == false){
        msg1 = "Your form is incomplete or incorrect. There are " + numErrors + " errors. ";
        msg1 += "Please look for the highlighted items.";
        msg = "<p>" + msg1 + "</p><ol class='missing' id='errorMessages'></ol>";
        document.getElementById('errors').innerHTML = msg;

        document.getElementById('errorMessages').innerHTML= errorMsg;
        alert(msg1);
        window.scrollTo(0,0);
    }
    return returnStatus;
}
-->
</script>
</head>
<body class="bodycolor">
<div id="content">
<div id="errors">
</div>

<form action="form.php" 
        method="post"
        id="frmWhere">


<fieldset class="wrapper">
<legend>Where are you from?</legend>
<p>Please answer the following survey. Required fields are marked in <span    class="required">red</span>.</p>

<fieldset class="intro">
<legend>Please complete the following survey.</legend>

<fieldset class="main">
<legend>Contact Information</legend>                    
<fieldset class="info"> 

    <label for="txtUser" class="required">Username</label>
  <input type="text" id="txtUser" name="txtUser" value="" tabindex="260"
            size="30" maxlength="26" onfocus="this.select()" />

    <label for="txtFname" class="required">First Name</label>
  <input type="text" id="txtFname" name="txtFname" value="" tabindex="261"
            size="55" maxlength="45" onfocus="this.select()" />


    <label for="txtLname" class="required">Last Name</label>
  <input type="text" id="txtLname" name="txtLname" value="" tabindex="262"
            size="55" maxlength="45" onfocus="this.select()" />


    <label for="txtEmail" class="required">Email</label>
  <input type="text" id="txtEmail" name="txtEmail" value="" tabindex="263"
            size="55" maxlength="45" onfocus="this.select()" />

  <label for="txtstreet" class="required">Street Address</label>
  <input type="text" id="txtStreet" name="txtStreet" value="" tabindex="264"
            size="55" maxlength="45" onfocus="this.select()" />

    <label for="txtCity" class="required">City</label>
  <input type="text" id="txtCity" name="txtCity" value="" tabindex="265"
            size="55" maxlength="45" onfocus="this.select()" />

    <select id="lstStates" name="lstStates" tabindex="266" size="1">
<option value="ZZ">None</option>
<option value="">-- UNITED STATES --</option>
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="DC">Washington, DC</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>

<option value="">-- CANADA --</option>
<option value="AB">Alberta</option>
<option value="BC">British Columbia</option>
<option value="MB">Manitoba</option>
<option value="NB">New Brunswick</option>
<option value="NF">Newfoundland and Labrador</option>
<option value="NT">Northwest Territories</option>
<option value="NS">Nova Scotia</option>
<option value="NU">Nunavut</option>
<option value="ON">Ontario</option>
<option value="PE">Prince Edward Island</option>
<option value="PQ">Quebec</option>
<option value="SK">Saskatchewan</option>
<option value="YT">Yukon Territory</option>
<option value="">-- OTHER --</option>
<option value="OT">Other</option>
    </select>

<label for="txtZip" class="required">ZIP Code</label>
  <input type="text" id="txtZip" name="txtZip" value="" tabindex="267"
            size="6" maxlength="6" onfocus="this.select()" />       


<fieldset class="buttons">
<legend></legend>               
<input type="submit" id="butSubmit" name="butSubmit" value="Submit" 
            tabindex="991" class="button"/>

<input type="reset" id="butReset" name="butReset" value="Reset Form" 
            tabindex="993" class="button" onclick="reSetForm()" />
</fieldset>                 

</fieldset>
</fieldset>
</fieldset>
</form>
</?php

include ("validation_functions.php");

date_default_timezone_set('UTC');

$dbh=mysql_connect('webdb.uvm.edu','swakita','password');

if (!$dbh)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db('SWAKITA', $dbh);



if (isset($_POST['butSubmit'])) {

    //handle html characters
$user = htmlentities($user, ENT_QUOTES);
$fName = htmlentities($fName, ENT_QUOTES);
$lName = htmlentities($lName, ENT_QUOTES);
$email = htmlentities($email, ENT_QUOTES);
$date = htmlentities($date, ENT_QUOTES);
$street = htmlentities($street, ENT_QUOTES);
$city = htmlentities($city, ENT_QUOTES);
$state = htmlentities($state, ENT_QUOTES);
$zip = htmlentities($zip, ENT_QUOTES);
$errorMsg=array();

// set variables to data from form    
$user= mysql_real_escape_string($_POST["txtUser"]);
$fName= mysql_real_escape_string($_POST["txtFname"]);
$lName= mysql_real_escape_string($_POST["txtLname"]);
$email= mysql_real_escape_string($_POST["txtEmail"]);
$date= date(DATE_RFC822);
$street= mysql_real_escape_string($_POST["txtStreet"]);
$city= mysql_real_escape_string($_POST["txtCity"]);
$state= mysql_real_escape_string($_POST["lstStates"]);
$zip= mysql_real_escape_string($_POST["txtZip"]);



// initiate testing procedures for form contents 
if($user==""){
    $errorMsg[]="Please enter your Username";
} else {
    $valid = verifyAlphaNum ($user); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Username must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

if($fName==""){
    $errorMsg[]="Please enter your First Name";
} else {
    $valid = verifyAlphaNum ($fName); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="First Name must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($lName==""){
    $errorMsg[]="Please enter your Last Name";
} else {
    $valid = verifyAlphaNum ($lName); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Last Name must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

if($email==""){
    $errorMsg[]="Please enter your Email Address";
} elseif (!verifyEmail($email)){
    $errorMsg[]="Correct eMail format is ( example@anysite.com )";
}

    if($street==""){
    $errorMsg[]="Please enter your Street Address";
} else {
    $valid = verifyAlphaNum ($street); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Street Address must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($city==""){
    $errorMsg[]="Please enter a City";
} else {
    $valid = verifyAlphaNum ($city); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="City must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($state==""){
    $errorMsg[]="Please choose a State";
} else {
    $valid = verifyAlphaNum ($state); /* test for non-valid  data */
    }
}

    if($errorMsg){
    echo "<ul>\n";
    foreach($errorMsg as $err){
        echo "<li style='color: #ff6666'>" . $err . "</li>\n";
    }
    echo "</ul>\n";
} else { 

                 mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES ('$user', '$fName', '$lName', '4', '0', '$date', '$email')");
                                if (mysql_errno()) {
                            echo $sql . "<br/>\n" . mysql_error();
                                }

                    mysql_query("INSERT INTO tblLocation (fk_Username, fldStreet, fldCity, fldState, fldZip) VALUES ('$user', '$street', '$city', '$state', '$zip')");
                                if (mysql_errno()) {
                            echo $sql . "<br/>\n" . mysql_error();
                                }
}
mysql_close();
print $user;

?>
</body>
</html>

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Ваш код выполняет запрос mysql вне проверки POST, запрос mysql выполняется независимо от того, что, поскольку $errorMsg не возвращается.

Переместите логику mysql в часть if (isset($_POST['butSubmit'])) { вашего кода..

<?php

include ("validation_functions.php");

date_default_timezone_set('UTC');

$dbh=mysql_connect('webdb.uvm.edu','swakita','password');

if (!$dbh)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db('SWAKITA', $dbh);



if (isset($_POST['butSubmit'])) {

    //handle html characters
$user = htmlentities($user, ENT_QUOTES);
$fName = htmlentities($fName, ENT_QUOTES);
$lName = htmlentities($lName, ENT_QUOTES);
$email = htmlentities($email, ENT_QUOTES);
$date = htmlentities($date, ENT_QUOTES);
$street = htmlentities($street, ENT_QUOTES);
$city = htmlentities($city, ENT_QUOTES);
$state = htmlentities($state, ENT_QUOTES);
$zip = htmlentities($zip, ENT_QUOTES);
$errorMsg=array();

// set variables to data from form    
$user= mysql_real_escape_string($_POST["txtUser"]);
$fName= mysql_real_escape_string($_POST["txtFname"]);
$lName= mysql_real_escape_string($_POST["txtLname"]);
$email= mysql_real_escape_string($_POST["txtEmail"]);
$date= date(DATE_RFC822);
$street= mysql_real_escape_string($_POST["txtStreet"]);
$city= mysql_real_escape_string($_POST["txtCity"]);
$state= mysql_real_escape_string($_POST["lstStates"]);
$zip= mysql_real_escape_string($_POST["txtZip"]);



// initiate testing procedures for form contents 
if($user==""){
    $errorMsg[]="Please enter your Username";
} else {
    $valid = verifyAlphaNum ($user); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Username must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

if($fName==""){
    $errorMsg[]="Please enter your First Name";
} else {
    $valid = verifyAlphaNum ($fName); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="First Name must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($lName==""){
    $errorMsg[]="Please enter your Last Name";
} else {
    $valid = verifyAlphaNum ($lName); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Last Name must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

if($email==""){
    $errorMsg[]="Please enter your Email Address";
} elseif (!verifyEmail($email)){
    $errorMsg[]="Correct eMail format is ( example@anysite.com )";
}

    if($street==""){
    $errorMsg[]="Please enter your Street Address";
} else {
    $valid = verifyAlphaNum ($street); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="Street Address must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($city==""){
    $errorMsg[]="Please enter a City";
} else {
    $valid = verifyAlphaNum ($city); /* test for non-valid  data */
    if (!$valid){ 
        $error_msg[]="City must contain only letters (A-Z), numbers (0-9), spaces, dashes(-), and apostrophes (').";
    }
}

    if($state==""){
    $errorMsg[]="Please choose a State";
} else {
    $valid = verifyAlphaNum ($state); /* test for non-valid  data */
    }


    if($errorMsg){
    echo "<ul>\n";
    foreach($errorMsg as $err){
        echo "<li style='color: #ff6666'>" . $err . "</li>\n";
    }
    echo "</ul>\n";
} else { 

                 mysql_query("INSERT INTO tblWhere (pk_Username, fldFirstName, fldLastName, fldAdminLevel, fldTotalPosts, fldDateJoined, fldEmail) VALUES ('$user', '$fName', '$lName', '4', '0', '$date', '$email')");
                                if (mysql_errno()) {
                            echo $sql . "<br/>\n" . mysql_error();
                                }

                    mysql_query("INSERT INTO tblLocation (fk_Username, fldStreet, fldCity, fldState, fldZip) VALUES ('$user', '$street', '$city', '$state', '$zip')");
                                if (mysql_errno()) {
                            echo $sql . "<br/>\n" . mysql_error();
                                }
    }
}
mysql_close();
print $user;

?>
</body>
</html>
1 голос
/ 07 марта 2012

PHP Mysql не будет вставлять пустые строки волшебным образом, поэтому вы можете проверить, что вы действительно пытаетесь вставить, или использовать некоторые отладочные операторы echo $ query непосредственно перед вашим запросом, или даже лучше, используя * print_r (debug_backtrace ()) *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...