2016-11-19 2 views
-1

Я создал форму, используя Bootstrap modal, соединение с базой данных через PHP, а также простую проверку формы. Когда я заполняю форму и нажимаю submit, она, кажется, подключается к базе данных, и ошибки формы не возвращаются. В нем указано: «пострадали -1 строки. Спасибо за ваш RSVP», но когда я смотрю на PHPMyAdmin, в моей базе данных нет значений.Мои php и form не будут подключаться к моей базе данных, чтобы добавить значения

Ниже мой PHP:

<?php 

//check if form is submitted and not a hack/bot. Checks to see if form is submitte by the post method then runs fxn. 
if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 

    //grab all values that come from form in these variables. Each line below grabs info typed/selected in each form input. The value in square brackets is the name value of each input. Keep the $variables different from input names. 
    $rsvpvar = $_POST['rsvpBox']; 
    $fullnamevar = $_POST['fullName']; 
    $emailvar = $_POST['emailBox']; 
    $attendvar = $_POST['attend']; 
    $guestsvar = $_POST['extraGuests']; 
    $commentsvar = $_POST['additionals']; 

    //If fxn checks to see if all above variables have values stored in them using !empty fxn and if not if runs the echo. Use !empty (not empty) and not isset because isset will allow db connection even if some form values are blank. If there is a value stored in all form inputs then we incude this php or run the connetion to database. 
    if(!empty($rsvpvar) && !empty($fullnamevar) && !empty($emailvar) && !empty($attendvar) && !empty($guestsvar) && !empty($commentsvar)){ 

     //Define the below vaiables within parenthesis. 
     $hostname = "rsvp.db"; 
     $username = "******"; 
     $password = "******"; 
     $dbname = "rsvp"; 

     //Connection to mysql database. OR die drops connection to database for security reasons. Connect error gives message. 
     $dbc = mysqli_connect($hostname, $username, $password, $dbname) OR die("Could not connect to database, ERROR: ".mysqli_connect_error()); 

     //Set encoding 
     mysqli_set_charset($dbc, "utf8"); 

     //insert into table "rsvp" by getting or querying values stored in $dbc variable (db info). You insert into the corresponding rows of the db table (i.e. RSVP), then you grab what you're inserting using the VALUES. What you're inserting comes from the above variables. 
     mysqli_query($dbc, "INSERT INTO rsvp(RSVP, FULLNAME, EMAIL, ATTEND, GUESTS, COMMENTS) VALUES('$rsvpvar', '$fullnamevar', '$emailvar', '$attendvar', $guestsvar', '$commentsvar')"); 

     //define variable $registered which checks database to make sure values were inserted and rows were affected then outputs how many rows affected. Make sure the $dbc or connection info is inside parenthesis. 
     $registered = mysqli_affected_rows($dbc); 
     echo $registered." rows are affected. Thank you for your RSVP"; 

    }else{ 
     echo "ERROR: You did not fill out each section"; 
    } 
}else{ 
    echo "Please fill out everything on the RSVP form"; 
} 

>

и мой HTML:

<!-- Modal --> 
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 
     <div class="modal-dialog" role="document"> 
      <div class="modal-content"> 
       <div class="modal-header"> 
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
        <h2 class="modal-title" id="myModalLabel">RSVP</h2> 
       </div> 
       <form role="form" method="post" action="php/rsvp.php"> 
        <div class="modal-body"> 
         <div class="form-inline row response"> 
          <div class="col-sm-12"> 
           <h2>Ya Comin'?</h2> 
           <div class="radio-inline"> 
            <label class="control-label"> 
             <input type="radio" name="rsvpBox" id="attending" value="option1"> 
             I'll be there with bells on! 
            </label> 
           </div> 
           <div class="radio-inline"> 
            <label class="control-label"> 
             <input type="radio" name="rsvpBox" id="notAttending" value="option2"> 
             Sorry, wish I was cooler... 
            </label> 
           </div> 
          </div> 
         </div> 
         <hr> 
         <div class="deets row"> 
          <div class="col-sm-12"> 
           <h2>Your Deets</h2> 
           <div class="form-group col-lg-6"> 
            <label class="control-label" for="fullName">Full Name</label> 
            <input type="text" name="fullName" class="form-control" id="fullName" placeholder="FULL NAME"> 
           </div> 
           <div class="form-group col-lg-6"> 
            <label class="control-label" for="email">Email</label> 
            <input type="email" name="emailBox" class="form-control" id="emailBox" placeholder="[email protected]"> 
           </div> 
          </div> 
         </div> 
         <hr> 
         <div class="row days"> 
          <div class="col-sm-12"> 
           <h2>Days Attending</h2> 
           <div class="checkbox"> 
            <label class="control-label"> 
             <input type="checkbox" name="attend" value="option1"> 
             Friday: Rehersal Dinner &amp; Beach Party 
            </label> 
           </div> 
           <div class="checkbox"> 
            <label class="control-label"> 
             <input type="checkbox" name="attend" value="option2"> 
             Saturday: Wedding &amp; Reception 
            </label> 
           </div> 
          </div> 
         </div> 
         <hr> 
         <div class="guests row"> 
          <div class="col-sm-12"> 
           <h2>Number of Additional Guests</h2> 
           <select id="extraGuests" name="extraGuests" class="form-control"> 
            <option>1</option> 
            <option>2</option> 
            <option>3</option> 
            <option>4</option> 
           </select> 
          </div> 
         </div> 
         <div class="extras row"> 
          <div class="col-sm-12"> 
           <h2>Anything Else?</h2> 
           <h4>Main Course Served Will be Chicken</h4> 
           <div class="form"> 
            <div class="form-group"> 
             <label class="control-label" for="message"></label> 
             <textarea name="additionals" id="additionals" class="form-control" rows="3" placeholder="Food specifications, allergies, guest names, etc..."></textarea> 
            </div> 
           </div> 
          </div> 
         </div> 
        </div> 
        <div class="modal-footer"> 
         <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
         <button type="submit" name="submit" id="submit" value="send" class="btn btn-primary">Submit</button> 
        </div> 
       </form> 
      </div> 
     </div> 
    </div> 

Пожалуйста, помогите, как я не являюсь специалистом по базам данных ...

+1

Ах, вы объявляете $ xxxvar, а затем спрашиваете, не является ли $ XXX пустым. $ XXX даже не установлен в вашем коде, поэтому да, его пустое, вы должны попросить правильные переменные с «var» в конце и все строчные. – KoalaGangsta

+1

Также я надеюсь, что вы знаете, что ваш код опасен и невозможен для SQL-инъекций. В худшем случае «хакер» удаляет или удаляет вашу БД любой информацией. – KoalaGangsta

+0

Спасибо @KoalaGangsta С тех пор я обновил мои заданные переменные до равных объявленных, и я все равно получаю ту же ошибку. Это не мой полный код. Я планирую сделать его безопасным для инъекций SQL, прежде чем идти вживую. Спасибо – GingaRanga

ответ

1

Все ваши переменные POST:

$rsvpvar = $_POST['attending']; 
$emailvar = $_POST['emailBox']; 
$fullnamevar = $_POST['fullName']; 
$attend1var = $_POST['friday']; 
$attend2var = $_POST['saturday']; 
$guestsvar = $_POST['extraGuests']; 
$commentsvar = $_POST['additionals']; 

SO, должно быть условие:

if(!empty($rsvpvar) && !empty($emailvar) && !empty($fullnamevar) && !empty($attend1var) && !empty($attend2var) && !empty($guestsvar) && !empty($commentsvar)){ 

Пожалуйста, используйте тот же имя в поле ввода 2 радио:

<input type="radio" name="attending" id="attending" value="option1" checked>. 
<input type="radio" name="attending" id="notAttending" value="option2"> 

Примечания: код открыт для SQL Injection.

+0

Благодарим за быстрый ответ. Я скорректировал свои пустые переменные, чтобы соответствовать ранее объявленным переменным в разделе POST, и все равно получаю ту же ошибку ... – GingaRanga

+0

ok, пожалуйста, используйте то же имя, что и ваше входное радио, например '. ' –

+0

Хороший улов, спасибо – GingaRanga

Смежные вопросы