Къде е грешката, че не иска да добавя нов запис в БД

Ето го кода:

PHP:
<?php
include("connect.php");


if(isset($_POST['submit'])){
        $catid =   $_POST['catid'];
        $articul =       $_POST['articul'];
        $informations =  $_POST['informations'];
        $price =  $_POST['price'];
        $images = $_POST['images'];
        
        if(empty($catid) || empty($articul) || empty($informations) || empty($price) || empty($images)){
                echo "Моля, попълнете всички полета!";
        }
        else{
                mysql_query("INSERT INTO `articuls` (`artid`, `catid`, `articul`, `informations`, `price`, `images`)
                                VALUES('', {$catid}, {$articul}, {$informations}, {$price}, {$images})") or die(mysql_error());
                                                                        
                echo "Добавен е следният запис: $catid $articul $informations $price $images";
        }
}
?>

<form action="" method="post">
Изберете категория:  <input type="text"  name="catid" size="4"> <br>
Въведете артикул:   <input type="text" name="articul" size="10"> <br>
Въведета информация:  <input type="text" name="informations"  size="50"> <br>
Въведета цена:  <input type="text" name="price"  size="10"> <br>
Добавете изображение:  <input type="text" name="images"  size="10"> <br>
<input type="submit" name="submit" value="Приеми"> <br>
</form>
 
Ти по-рано беше написал стойностите правилно, но някой те обърка.

PHP:
                mysql_query("INSERT INTO `articuls` (`artid`, `catid`, `articul`, `informations`, `price`, `images`)

                                VALUES('', '$catid',  '$articul', '$informations', '$price', '$images')") or die(mysql_error());

Да поясня:

Код:
$country = 'Bulgaria';
$sql = "INSERT into `country` (`id`, `name`) VALUES (NULL, {$country} );";

//резулатат:
//INSERT into `country` (`id`, `name`) VALUES (NULL, Bulgaria);

//ОБАЧЕ....
$sql = "INSERT into `country` (`id`, `name`) VALUES (NULL, '$country' );";

//резулатат:
//INSERT into `country` (`id`, `name`) VALUES (NULL, 'Bulgaria');

В първия случай, стойността (името на държавата) не е в кавички и MySQL го третира като име на колона. Във втория случай, стойността е в кавички и се третира като стойност, която трябва да бъде записана в съответната колона. Заявката е "миналава" когато си използвал само цифри, защото в MySQL колоните могат да се представят както с техните имена, така и с техните поредни номера.

За да избегнете такива грешки, както и за да повишите нивото на сигурността в своя код, използвайте т.н. database abstraction layer-ите, някой от тях дори ги има като част от РНР - най-елементарното е mysqli, но обърнете внимание на PDO - едно добро начало!
 
exec Мерси много.
Имам още един малък въпрос за категориите.
Значи имам си отделна таблица за категориите categories
PHP:
 `catid` int(20) NOT NULL AUTO_INCREMENT
  `catname` varchar(100) NOT NULL
  `catparent` int(20) DEFAULT NULL

И въпроса ми е как мога да присвоя продукт от таблицата articuls
към някоя категория.
И като например цъкнеш на категорията "12345" да излизат всички продукти който са в тази категория само?
Като полето `catid` присъства и в 2-те таблици.
 
Трябва ти SELECT заявка, на която предаваш като параметър избраната категория. Да кажем, че имаш един файл list.php където първо се появява списък с категориите, а след като кликнеш на някоя категория, се появява и списък с подуктите. Виждам, че имаш и parent категории, тях няма да ги включа в примера, лесно ще се ориентираш какво да направиш, пък и предполагам вече си направил тази част.

PHP:
$categoryResource = mysql_query("select * from categories") or die(mysql_error());

//продължаваме със списъка, само ако има някакви категории
if(mysql_num_rows($categoryResource)){
   echo "<ul>";
  
   //съставяме списък с линк и името на категорията
   while($category = mysql_fetch_array($categoryResource)){
         echo "<li><a herf=\"list.php?catid=".$category['catid']."\">".stripslashes($category['catname'])."</a></li>";
   }

   echo "</ul>";
}

//филтрираме стойността на catid за да сме сигурни, че винаги съдържа число
$catid = (int) $_GET['catid'];

//продължаваме само ако е избрана някоя от категориите
if($catid > 0){
     //търсиме само продукти от избраната категория
     $itemResource = "select * from articuls where catid = '".$catid."' ";
     
    //продължаваме със списъка на продуктите само ако има продукти в тази категория
    if(mysql_num_rows($itemResource)){
       echo "<hr />";
  
       //за всеки продук показваме името и (вероятно) описанието
       while($item = mysql_fetch_array($itemResource)){
            echo "<h1>".stripslashes($item['articul'])."</h1>";
            echo "<p>".stripslashes($item['informations'])."</p>";
            echo "<hr />";
       }
   }
}
 

Back
Горе