2016-12-09 2 views
-1

Ich habe alles für meine Support-Ticket-Website ausgearbeitet, außer dass mein Newticket-Formular die Werte nicht in der Datenbank veröffentlicht. Hier ist, was ich habe:Formular an Datenbank senden

<?php 
    ob_start(); 
    session_start(); 
    include 'dbconnect.php'; 

    if(!isset($_SESSION['user'])) { 
     header("Location: index.php"); 
     exit; 
    $error = false; 
    } 
    if (isset($_POST['btn-cancel'])) { 
     header("Location: home.php"); 
     exit; 
    } 

    if (isset($_POST['btn-signup'])) { 

     // get form results 
     $text = $_POST['description']; 
     $text = strip_tags($text); 

     $userid = $_POST['user']; 
     $problem = $_POST['problem']; 
     $room = $_POST['room']; 
     $status = 1; 
     $datetime = date('Y-m-d G:i:s'); 
     // description validation 
     if (empty($text)) { 
      $error = true; 
      $textError = "Please describe the problem."; 
     } else if (strlen($text) > 200) { 
      $error = true; 
      $textError = "Description must be less than 200 characters in length."; 
     } 

     // dropdown validation 
     if ($problem < 1){ 
      $error = true; 
      $problemError = "Please choose a category and problem."; 
     } else if ($room < 1) { 
      $error = true; 
      $roomError = "Please choose a building and a room number."; 

     // if there's no error, continue to signup 
     if(!$error) { 

      $query = "INSERT INTO job (User_UserID,Problem_ProblemID,Status_StatusID,Room_RoomID,Description,Date_Time) VALUES({$userid},{$problem},{$status},{$room},'{$text}',{$dateTime})"; 
      echo '$query'; 
      $res = mysqli_query($conn,$query); 

      if ($res) { 
       $errTyp = "success"; 
       $errMSG = "Successfully submited ticket"; 
       unset($text); 
       unset($problem); 
       unset($room); 
       unset($datetime); 
      } else { 
       $errTyp = "danger"; 
       $errMSG = "Something went wrong, try again later."; 
      } 

     } 

     } 
    } 
?> 

HTML:

<!DOCTYPE html> 
<html> 
<head> 
<SCRIPT language=JavaScript> 
<!-- 
//function reload(form) 
{ 
//var val=form.type.options[form.type.options.selectedIndex].value; 
//self.location='newticket.php?type=' + val ; 
} 

//function reload2(form) 
{ 
//var val=form.building.options[form.building.options.selectedIndex].value; 
//self.location='newticket.php?building=' + val ; 
} 

function disableselect() 
{ 
<?Php 
if(isset($type) and strlen($type) > 0){ 
echo "document.f1.problem.disabled = false;";} 
else{echo "document.f1.problem.disabled = true;";} 

if(isset($building) and strlen($type) > 0){ 
echo "document.f1.room.disabled = false;";} 
else{echo "document.f1.room.disabled = true;";} 
?> 
} 
//--> 

</script> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Dog Tracks - Login & Registration System</title> 
<link rel="stylesheet" href="assets/css/bootstrap.min.css" type="text/css" /> 
<link rel="stylesheet" href="style.css" type="text/css" /> 
</head> 
<body onload=disableselect();> 

<div class="container"> 

    <div id="login-form"> 
    <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" autocomplete="off"> 

     <div class="col-md-12"> 

      <div class="form-group"> 
       <h2 class="">Create New Ticket</h2> 
      </div> 

      <div class="form-group"> 
       <hr /> 
      </div> 

      <?php 
      if (isset($errMSG)) { 

       ?> 
       <div class="form-group"> 
       </div> 
       </div> 
       <?php 
      } 
      ?>   
      <div class="form-group"> 
       <div class="input-group"> 

        <?php 

        //Getting the data for first list box 
        $quer2="SELECT problem_typeid,problem_type FROM problem_type ORDER BY problem_type"; 

        echo "<select name='type' onchange=\"reload(this.form)\"><option value=''>Pick problem category</option>"; 
        //while($result2 = mysql_fetch_array($quer2)) { 
        foreach (mysqli_query($conn,$quer2) as $result2) { 
         if($result2['problem_typeid']==$type){echo "<option selected value='$result2[problem_typeid]'>$result2[problem_type]</option>"."<BR>";} 
         else{echo "<option value='$result2[problem_typeid]'>$result2[problem_type]</option>";} 
        } 
        echo "</select>"; 

        $type=$_GET['type'];     
        // for second drop down list 
        if(isset($type) and strlen($type) > 0){ 
         $quer="SELECT problemid,problem FROM problem WHERE 
          Problem_Type_Problem_TypeID={$type} order by problem"; 
        }else { 
         $quer="SELECT problemid,problem FROM problem order by problem"; 
        } 

        echo "<select name='problem'><option value=''>What is the problem?</option>"; 
        //while($result = mysql_fetch_array($quer)) { 
        foreach (mysqli_query($conn,$quer) as $result) { 
         echo "<option value='$result[problemid]'>$result[problem]</option>"; 
        } 
        echo "</select>"; 
        //// Add your other form fields as needed here///// 

        ?> 

       </div> 
       <span class="text-danger"><?php echo $problemError; ?></span> 
      </div> 
         <div class="form-group"> 
       <div class="input-group"> 

        <?php 
        @$building=$_GET['building']; 
        //Getting the data for first list box 
        $quer3="SELECT buildingid,building FROM building ORDER BY building"; 

        // for second drop down list 
        if(isset($building) and strlen($building) > 0){ 
         $quer4="SELECT roomid,roomNum FROM room WHERE 
          building_buildingID=$building order by roomNum"; 
        }else { 
         $quer4="SELECT roomid,roomNum FROM room order by roomNum"; 
        } 

        echo "<select name='building' onchange=\"reload2(this.form)\"><option value=''>In which building?</option>"; 
        //while($result2 = mysql_fetch_array($quer3)) { 
        foreach (mysqli_query($conn,$quer3) as $result3) { 
         if($result3['buildingid'][email protected]$building){echo "<option selected value='$result3[buildingid]'>$result3[building]</option>"."<BR>";} 
         else{echo "<option value='$result3[buildingid]'>$result3[building]</option>";} 
        } 
        echo "</select>"; 

        echo "<select name='room'><option value=''>In what room?</option>"; 
        //while($result = mysql_fetch_array($quer)) { 
        foreach (mysqli_query($conn,$quer4) as $result4) { 
         echo "<option value='$result4[roomid]'>$result4[roomNum]</option>"; 
        } 
        echo "</select>"; 
        //// Add your other form fields as needed here///// 

        ?> 

       </div> 
       <span class="text-danger"><?php echo $roomError; ?></span> 
      </div> 

      <div class="form-group"> 
       <div class="input-group"> 
       <textarea cols='72' id='description' rows='6' placeholder="Description"> 
       Please describe the problem here. </textarea> 
       </div> 
       <span class="text-danger"><?php echo $textError; ?></span> 
      </div> 

      <div class="form-group"> 
       <hr /> 
      </div> 

      <div class="form-group"> 
       <button type="submit" class="btn btn-block btn-primary" name="btn-submit">Submit</button> 
       <button type="submit" class="btn btn-block btn-primary" name="btn-cancel">Cancel</button> 
      </div> 

      <div class="form-group"> 
       <hr /> 
      </div> 
    </form> 
    </div> 

</div> 

</body> 
</html> 
<?php 
mysqli_close($conn); 
ob_end_flush(); 
?> 
+0

hmm, vielleicht sollte ich auch beginnen, meine Support-Tickets hier auf SO zu veröffentlichen, um meine Arbeit zu erleichtern, lol – Ghost

+0

Können Sie bitte eng das Problem - was läuft falsch? Welche Fehler sehen Sie und welche Codezeile verursacht das Problem? (BTW, ich habe das EMERGENCY-Zeug gelöscht, da es eine Ablenkung ist und hier wahrscheinlich kontraproduktiv ist.) –

+1

Verdeutlichen Sie Ihr Problem, diese Frage ist nur ein ganzer Codeblock, suchen Sie nach Fehlermeldungen und schalten Sie sie ein. Trichter hinunter das Problem, das anfängt, die Werte zum Server heraufzubekommen, kann ein einfacher 'var_dump' helfen – Ghost

Antwort

0

Erste

if ($problem < 1){ 
    $error = true; 
    $problemError = "Please choose a category and problem."; 
} else if ($room < 1) { 
    $error = true; 
    $roomError = "Please choose a building and a room number."; 

Hoppla, Sie nicht, dass else if schließen, so dass Ihr INSERT wird immer übersprungen.

Das nächste Problem

Ein Teil des Codes, der diese Zeilen vertrackt sind aussieht:

$datetime = date('Y-m-d G:i:s'); 

//... 

$query = "INSERT INTO job (User_UserID,Problem_ProblemID,Status_StatusID,Room_RoomID,Description,Date_Time) 
    VALUES({$userid},{$problem},{$status},{$room},'{$text}',{$dateTime})"; 
                  ^^^^^^^^^^^ 

Ihre $dateTime wird so etwas wie 2016-12-09 11:43:42 sein, so dass die SQL-Anweisung sein wird:

INSERT INTO job (...) VALUES(..., 'This is my text', 2016-12-09 11:43:42) 

Dies ist ein Syntaxfehler. Beachten Sie, dass Ihr Feld $text Anführungszeichen enthält, um es als einzelnes Element zu behalten, aber Ihr Datum nicht. Die Verwendung von '{$dateTime}' wird dieses Problem beheben, obwohl es keine Garantie gibt, dass es kein anderes Problem gibt ...

+0

Okay, ich habe die "Datetime" korrigiert, aber was muss ich mit der else if-Anweisung tun? – Phantomwang

+0

Anstatt Sie mit einem Löffel zu füttern, verwenden Sie bitte [einen PHP-Formatierer] (http://beta.phpformatter.com/) und Sie werden sehen, wie Ihr Code falsch formatiert ist. –

+0

Ich bekomme, woher du kommst, aber ich habe buchstäblich Krebs und meine Note hing davon ab, danke, aber nein danke. Habe gerade meinen Code durch den PHP-Formatierer laufen lassen und nichts geändert – Phantomwang

Verwandte Themen