SearchEngines.bg

Това е примерно съобщение за гост. Регистрирайте безплатен акаунт днес, за да станете потребител на SearchEngines.bg! След като влезете, ще можете да участвате в този сайт, като добавите свои собствени теми и публикации, както и да се свържете с други членове чрез вашата лична входяща кутия! Благодарим ви!

Въпрос за php код

borisov87

New member
Това ми е структурата на базата данни
Код:
-- Структура на таблица `cat`
--

CREATE TABLE IF NOT EXISTS `cat` (
  `cat_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `desc` varchar(250) NOT NULL,
  `active` tinyint(1) NOT NULL DEFAULT '1',
  `date_added` int(11) NOT NULL,
  PRIMARY KEY (`cat_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=23 ;

-- --------------------------------------------------------

--
-- Структура на таблица `postcat`
--

CREATE TABLE IF NOT EXISTS `postcat` (
  `post_id` int(11) NOT NULL,
  `cat_id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Структура на таблица `posts`
--

CREATE TABLE IF NOT EXISTS `posts` (
  `post_id` int(11) NOT NULL AUTO_INCREMENT,
  `added_by` int(11) NOT NULL,
  `date_added` int(11) NOT NULL,
  `title` varchar(100) NOT NULL,
  `content` text NOT NULL,
  `view_count` int(11) NOT NULL,
  `edited_by` int(11) NOT NULL,
  `edited_when` time NOT NULL,
  PRIMARY KEY (`post_id`),
  KEY `cat_id` (`cat_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;
това ми е кода , идеята е следната самата новина да може да се добавя към множество категории.
Погледнете кода между ред 31 до 35 , по някаква причина заявката не сработва защото в таблицата postcat няма нищо записано. Идеята е в postcat да се записва postid и срещу него catid и ако имам 4избрани категории да речем - да се записват четири нови реда като postid си е еднакъв за четирите реда само catid се сменя , използвал съм функцията foreach но нещо в кода не сработва


PHP:
    <?php
    session_start();
    include '../functions.php';
    db_init();
    $rs= run_q('SELECT * FROM cat WHERE active=1');
    if($_SESSION['is_logged']===true)
    {
        if($_POST['new_post']==1)
        {
           $error_array=array();
           $new_name=addslashes(trim($_POST['post_title']));
           $new_content=addslashes(trim($_POST['post_content']));
           if(strlen($new_name)<4)
           {
               $err_array['name']="Името е твърде кратко";
           }
           if(strlen($new_content)<4)
           {
               $err_array['content']="Съдържанието е твърде кратко";
           }
           if(strlen($new_content)>5000)
               {
               $err_array['content']="Съдържанието е твърде дълго";
           }
           if(count($err_array)==0)
           {
             
               run_q('INSERT INTO posts (added_by,date_added,title,content)
                  VALUES('.$_SESSION['user_info']['user_id'].','.time().',"'.htmlspecialchars($new_name).'","'.htmlspecialchars($new_content).'")');
             
               $post = mysql_insert_id(); //get the id
               $values = $_POST['selcats'];
              foreach($values as $cat) {
         run_q('INSERT INTO postcat (post_id,cat_id)VALUES($post,$cat)');    
               }
              header('Location: index.php');
             exit;
           }
           }
       
        $row=  mysql_fetch_assoc($rs);
    my_header("Нова тема-".$row['name']);
     echo '<form action="post.php" method="POST">';
      do   {
       echo '<input type="checkbox" name="selcats" value="'.$row['cat_id'].'"> ' .$row['name'];
    }  while($row = mysql_fetch_assoc($rs));
      echo '<br>  Заглавие:<input type="text" name="post_title" />';
     if($err_array['name'])  
     {
        echo $err_array['name'];
     }
     echo   '<br><textarea name="post_content" rows="10" cols="50"></textarea>';
          if($err_array['content'])  
     {
        echo $err_array['content'];
     }
      echo '<input type="hidden" name="new_post" value="1" />
       <input type="submit" value="Добави" />
    </form>';
     
    footer();
    }
     else
         {
        header('Location: index.php');
         exit;
    }
 
За: Въпрос за php код

За: Въпрос за php код

Пробвай run_q("INSERT INTO postcat (post_id,cat_id)VALUES($post,$cat)"); да не е с ' а "

между другото - ужасен код, за тестове става, ама ако ще смяташ да работиш така, поддръжката ще е ужас
 
Re: За: Въпрос за php код

Re: За: Въпрос за php код

също в самата форма "selcats" няма да ти дойде като масив
PHP: Checkbox Array in Form Handling – Multiple Checkbox Values in an Array
Да разбирам че единствено трябва да сложа квадратни скоби след selcats
PHP:
echo '<input type="checkbox" name="selcats[]" value="'.$row['cat_id'].'"> ' .$row['name'];
а тук трябва ли да слагам квадратни скоби след selcat
PHP:
$values = $_POST['selcats'];
или някаква функция която да оказва че данните получени чрез POST ще бъдат масив?
 

Горе