开发者

Don't insert null value to mysql db

When I try input new value OR change value OR delete value(nothing) to products 1 or products 2

I don't wanna insert NULL value into DB.

products TABLE

+-------------+--------------+---------------+
| products_id | categories_id| products_name |
+-------------+--------------+---------------+
| 1           | 1            | product 1     |
| 2           | 1            | product 2     |
+-------------+--------------+---------------+

products_extra_fields TABLE

+--------------------------+---------------------------+
| products_extra_fields_id | products_extra_fields_name| 
+--------------------------+---------------------------+
| 1                        | sugar                     |
| 2                        | cocoa                     |
| 3                        | butter                    |
| 4                        | milk                      |
+--------------------------+---------------------------+

products_to_products_extra_fields TABLE

+-------------+---------------------------+-----------------------------+
| products_id | products_extra_fields_id  | products_extra_fields_value |
+-------------+---------------------------+-----------------------------+
| 1           | 1                         | 20%                         |
| 1           | 2                         | 45%                         |
| 1           | 3                         | 27%                         |
| 2           | 1                         | 12%                         |
+-------------+---------------------------+-----------------------------+

phpscript

<?php

require ('mysql/mysql_connect2.php'); // Connect to the database.
if (isset ($_POST['submit'])) {

    $products_id = $_POST['products_id'];

    echo "products_id = ".$products_id;
    echo "<br/><br/>";

    for($i = 0; $i<count($_POST['products_extra_fields_value']); $i++){

        $products_extra_fields_id = $_POST['products_extra_fields_id'][$i];
        $products_extra_fields_value = $_POST['products_extra_fields_value'][$i];

        if($products_extra_fields_value != ''){
        echo "products_extra_fields_id = ".$products_extra_fields_id;
        echo "<br/>";
        echo "products_extra_fields_value = ".$products_extra_fields_value;
        echo "<br/><br/>";
    }else{

    }

$query = "INSERT into products_to_products_extra_fields 
    set 
    products_id = '$products_id', 
    products_extra_fields_id = '$products_extra_fields_id', 
    products_extra_fields_value = '$products_extra_fields_value'

    ON DUPLICATE KEY UPDATE 

    products_extra_fields_value = '$products_extra_fields_value'

    "; 
    $result = mysql_query ($query); // Execute the query.
}
if ($result) {

header("refresh: 2; url='products.php?action=gopro_cat&categories_id={$_POST['products_id']}'");
        }else{
        print "<p>Could update the entry because: <b>" . mysql_error() . "</b><BR/><BR/>The query was: $query</p>";
    }   
mysql_close();

}else{
$products_id = $_GET['products_id'];
$categories_id = $_GET['categories_id'];

    // Check for a valid entry ID in the URL.
    if (is_numeric ($products_id) ) {

// Define the query.
$query = "SELECT   products_extra_fields.products_extra_fields_id, 
products_name,  
products_extra_fields_name,  
products_extra_fields_value FROM 

products, 
products_extra_fields LEFT JOIN products_to_products_extra_fields ON 
products_to_products_extra_fields.products_extra_fields_id = 
products_extra_fields.products_extra_fields_id AND 

products_to_products_extra_fields.products_id='$products_id' 

GROUP BY products_extra_fields.products_extra_fields_id";

if ($result = mysql_query ($query)) {

$query2 = "SELECT products_name FROM products, categories WHERE 
products.products_id='$products_id' AND 
categories.categories_id = '$categories_id'";

if ($result2 = mysql_query ($query2)) {
$row2 = mysql_fetch_array ($result2);
$products_name = $row2['products_name'];
?>

<form action='products_edit2.php' enctype='multipart/form-data' method='POST'>
<table width="50%" border="0" cellpadding="2" cellspacing="2">
<tr>
<td width="20%" align="right">PRODUCTS NAME:</td>
<td><input type="text" name="products_name" si开发者_开发问答ze="80" value="<?php echo $products_name; ?>" /></td>
</tr>
<?php 
}
/***** ***** *****/

while ($row = mysql_fetch_array ($result)) {
$products_extra_fields_name = $row['products_extra_fields_name'];
$products_extra_fields_value = $row['products_extra_fields_value'];
$products_extra_fields_id = $row['products_extra_fields_id'];
?>
<tr>
<td width="20%" align="right">
<input type="text" name="products_extra_fields_id[]" size="5" value="<?php echo $products_extra_fields_id; ?>" />

<?php echo $products_extra_fields_id .'-'. $products_extra_fields_name; ?></td>
<td><input type="text" name="products_extra_fields_value[]" size="80" value="<?php echo $products_extra_fields_value; ?>" /></td>
</tr>

<?php }

/***** ***** END *****/
?>
<input type="ÔÅ×Ô" name="products_id" size="10" value="<?php echo $products_id; ?>" />

<tr>
<td width="100%" colspan="2" align="right"><input type="submit" name="submit" value="SAVE"/></td>
</tr>
</table>
</form>

<?php
} else { // Couldn't get the information.
print "<p>Could retrieve the entry because: <b>" . mysql_error() . "</b><br/><br/>. The query was $query.</p>";
}
}else{ // No ID set.
print '<p><b>You must have made a mistake in using this page.</b></p>';
}
}
?>

===========================================================================================

for($i = 0; $i<count($_POST['products_extra_fields_value']); $i++){

        $_POST['products_extra_fields_id'][$i];
        $_POST['products_extra_fields_value'][$i];

        if($_POST['products_extra_fields_value'][$i] != ''){
        echo "products_extra_fields_id = ".$products_extra_fields_id = $_POST['products_extra_fields_id'][$i];
        echo "<br/>";
        echo "products_extra_fields_value = ".$products_extra_fields_value = $_POST['products_extra_fields_value'][$i];
        echo "<br/><br/>";

        echo "if".$products_extra_fields_value;
        echo "<br/><br/>";
    }else{
        echo "else".$products_extra_fields_value;
        echo "<br/><br/>";
    }
}

With the above CODE you can only insert new value (or change).

The problem is you can't delete any values if you want to.

Is there any solution for this?


If you don't want to insert NULL values into the database, modify your table schemas to not allow NULL. You can do this within MySQL Query Browser, or Workbench.


I would modify this portion of code to do something like, this requires that the product id be at least 1 character long. The trim command deletes any white spaces.

$min_product_id_length = 1;

if (isset ($_POST['submit'])) {
    $products_id = trim($_POST['products_id']);
    if (strlen($products_id) < $min_product_id_length) {
        die('the product id must be more than '.$min_product_id_length.' char');
    }
//more stuff goes here...
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜