2016-05-12 6 views
1

Ich habe ein Formular, das nicht ordnungsgemäß übermittelt wird. Das Formular wird abgeschickt und überprüft auf erforderliche Felder richtig, aber wenn es zu meiner if-Anweisung kommt, die prüft, dass es keine Fehler gibt, soll es die Formularinformationen in mysql eingeben und auf eine andere Seite umleiten, aber es löscht nur das Formular und bleibt auf der gleichen Seite.Formular wird nicht richtig übergeben - PHP/MYSQL

Es gibt sicherlich eine einfache Antwort dafür, aber ich kann es nicht finden. Ich kann nicht scheinen, ein anderes Beispiel des gleichen Problems durch Suchen zu finden, aber ich kann nur an den falschen Plätzen suchen. Wenn Sie einen der Includes benötigen, kann ich sie bereitstellen, aber ich habe das Gefühl, dass es irgendwo auf dieser Seite ein Problem ist.

manage_inventory.php

<?php require_once("../includes/session.php"); ?> 
<?php require_once("../includes/db_connection.php"); ?> 
<?php require_once("../includes/functions.php"); ?> 
<?php require_once("../includes/validation_functions.php"); ?> 
<?php confirm_logged_in(); ?> 

<?php 
    $admin_set = find_all_admins(); 
?> 

<?php 
if (isset($_POST['submit'])) { 
    // Process the form 

    // validations 
    $required_fields = array("type", "part_number"); 
    validate_presences($required_fields); 

    if (empty($errors)) { 
    // Perform Create 

    $type = mysql_prep($_POST["type"]); 
    $part_number = mysql_prep($_POST["part_number"]); 
    $cat = mysql_prep($_POST["cat"]); 
    $desc = mysql_prep($_POST["desc"]); 
    $sales_price = mysql_prep($_POST["sales_price"]); 
    $tax = $_POST["tax"]; 
    $purchace_price = mysql_prep($_POST["purchace_price"]); 

    $query = "INSERT INTO inventory ("; 
    $query .= "type, part_number, cat, desc, sales_price, tax, purchace_price"; 
    $query .= ") VALUES ("; 
    $query .= "'{$type}', '{$part_number}', '{$cat}', '{$desc}', '{$sales_price}', '{$tax}', '{$purchace_price}'"; 
    $query .= ")"; 
    $result = mysqli_query($connection, $query); 

    if ($result) { 
     // Success 
     $_SESSION["message"] = "Inventory item created."; 
     redirect_to("inventory.php"); 
    } else { 
     // Failure 
     $_SESSION["message"] = "Inventory item creation failed."; 
    } 
    } 
} else { 

} 
?> 

<?php $layout_context = "admin"; ?> 

<?php include("../includes/layout/header.php"); ?> 

<div id="nav">&nbsp;</div> 
<div id="heading"> 
    <h1>Inventory</h1> 
</div> 
<div id="sidebar"> 
<a href="admin.php">&laquo; Main menu</a> 
<br /> 
<a href="inventory.php">&laquo; Back</a> 
</div> 
<div id="page"> 

    <?php message(); ?> 
    <?php echo form_errors($errors); ?> 
    <br /> 
    <form action="manage_inventory.php" method="post"> 
     <p>Type 
      <select name="type"> 
       <?php 
        $type_set = find_all_types(); 
        while ($type = mysqli_fetch_assoc($type_set)){ 
       ?> 
       <option value= "<?php echo $type['type'] ?>"><?php echo $type ['type'] ?></option> 
       <?php } ?> 
      </select> 
     </p> 
     <p>Part Number 
      <input type="text" name="part_number" value="" /> 
     </p> 
     <p>Category 
      <select name="cat"> 
       <?php 
        $cat_set = find_all_cats(); 
        while ($cat = mysqli_fetch_assoc($cat_set)){ 
       ?> 
       <option value= "<?php echo $cat ['category'] ?>"><?php echo $cat ['category'] ?></option> 
       <?php } ?> 
      </select> 
     </p> 
     <p>Description 
      <input type="text" name="desc" value="" /> 
     </p> 
     <p>Sales Price 
      <input type="text" name="sales_price" value="" /> 
     </p> 
     <p>Taxable? 
      <input type="radio" name="tax" value="0" /> No 
       &nbsp; 
      <input type="radio" name="tax" value="1" /> Yes 
     </p> 
     <p>Purchace Price 
      <input type="text" name="purchace_price" value="" /> 
     </p> 
     <input type="submit" name="submit" value="Save" /> 
    </form> 
    <br /> 
    <a href="inventory.php">Cancel</a> 
</div> 

../includes/validation_functions.php

das ist, was das gleiche Code für andere Seiten funktioniert gut $ Fehler erzeugt, das diese denselben Code verwenden.

<?php 

$errors = array(); 

function fieldname_as_text($fieldname) { 
    $fieldname = str_replace("_", " ", $fieldname); 
    $fieldname = ucfirst($fieldname); 
    return $fieldname; 
} 

// * presence 
// use trim() so empty spaces don't count 
// use === to avoid false positives 
// empty() would consider "0" to be empty 
function has_presence($value) { 
    return isset($value) && $value !== ""; 
} 

function validate_presences($required_fields) { 
    global $errors; 
    foreach($required_fields as $field) { 
    $value = trim($_POST[$field]); 
    if (!has_presence($value)) { 
     $errors[$field] = fieldname_as_text($field) . " can't be blank"; 
    } 
    } 
} 

// * string length 
// max length 
function has_max_length($value, $max) { 
    return strlen($value) <= $max; 
} 

function validate_max_lengths($fields_with_max_lengths) { 
    global $errors; 
    // Expects an assoc. array 
    foreach($fields_with_max_lengths as $field => $max) { 
     $value = trim($_POST[$field]); 
     if (!has_max_length($value, $max)) { 
     $errors[$field] = fieldname_as_text($field) . " is too long"; 
     } 
    } 
} 

// * inclusion in a set 
function has_inclusion_in($value, $set) { 
    return in_array($value, $set); 
} 

?> 
+0

[http://php.net/manual/en/mysqli.error.php](http://php.net/manual/en/mysqli.error.php) hätte Ihnen in diesem Fall geholfen. Führen Sie auch "echo $ query;" aus, bevor Sie die Abfrage ausführen, um sicherzustellen, dass sie korrekt ist. –

+0

Überlegen Sie, alle mysql_ * -Funktionen in Ihrem Programm zu ändern. Siehe hier: http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php –

+0

Auch nicht schließen und wieder öffnen von PHP-Tags in einer All-PHP-Datei. Möglicherweise geben Sie am Ende die Leerzeichen zwischen einem Close-Tag und dem nächsten Open-Tag aus und erhalten den Fehler "Header bereits gesetzt". –

Antwort

0

Wenn die Abfrage hier richtig ändern, werden einige Spaltennamen mysql reservierte Schlüsselwort

$query .= "`type`, `part_number`, `cat`, `desc`, `sales_price`, `tax`, `purchace_price`"; 
0

während meine Variablen zu ändern kräftigeren zu sein und reservierten Schlüsselwörter zu vermeiden, fand ich ein Spaltenname unterscheidet sich von meine Datenbank, also der Fehler. Danke an alle, die das für mich angeschaut haben, ich schätze die Hilfe. Ich werde die Kommentare in Betracht ziehen.

Verwandte Themen