2014-11-22 4 views
0

Я пытаюсь создать CMS для моего сайта портфолио. Я создал все формы в конце. Все работает, за исключением того, что я не могу добавить столбец в мою базу данных портфолио в Mysqli. Я попытался повторить данные формы на другой странице PHP. Все работает нормально. Даже загруженное изображение перемещается в каталог сайта. Единственная проблема - вставка данных в таблицу базы данных. Вот мой кодЯ не могу добавить строку в свою базу данных

<?php 
session_start(); 
?> 

<?php 


if(isset($_POST['submit'])) 
{ 


    $title=$_POST['title']; 
    $description=$_POST['description']; 
    $duration=$_POST['duration']; 
    $category=$_POST['category']; 

    $nImage=$_FILES['nImage']['name']; 
    $file_tmp=$_FILES['nImage']['tmp_name']; 
    $filesize=$_FILES['nImage']['size']; 
    $file_ext=strtolower(pathinfo($nImage,PATHINFO_EXTENSION)); 
    $supported=array('jpg','jpeg','png'); 

    //Rename File 
    $rand=sha1(time()); 
    $newname=$rand.".".$file_ext; 
    $portfolio_img_dir="images/portfolio/".$newname; 

    //Check If FileSize is more than 2 MB 
    if($filesize<2097152) 
    { 

     //Check if Extension Matches 
     if(in_array($file_ext,$supported)) 
     { 
      //Move Uploaded Image 
      if(move_uploaded_file($file_tmp,$portfolio_img_dir)) 
      { 
       $qry=mysqli_query($link,"INSERT INTO `p_o_r_t_f_o_l_i_o`(`title`,`description`,`duration`,`category`,`image`) values('$title','$description','$duration','$category','$portfolio_img_dir')"); 

        if($qry) 
        { 

         $_SESSION['add_port_msg_success']="Portfolio Item Successfully Added"; 
         header('location:add_portfolio.php'); 

        } 

        else 
        { 
         $_SESSION['add_portfolio_msg']="Portfolio Item Failed to Add"; 
         header('location:add_portfolio.php'); 
        } 

      } 
      else 
      { 
       $_SESSION['add_port_msg']="File Failed to Move"; 
       header('location:add_portfolio.php'); 
      } 
     } 

     else 
     { 
      $_SESSION['add_port_msg']="File Extension not Supported"; 
      header('location:add_portfolio.php'); 
     } 

    } 

    else 
    { 
     $_SESSION['add_port_msg']="Filesize too Large"; 
     header('location:add_portfolio.php'); 
    } 

} 

else 
{ 
    $_SESSION['add_port_msg']="Invalid Attempt to Access Page"; 
    header('location:add_portfolio.php'); 
} 
?> 

и это мой HTML FORM

<!--Add New Portfolio Item Form--> 
       <div class='col-md-8 col-offset-4'> 
        <form class="form-horizontal" method="post" enctype="multipart/form-data" action="act_newp.php"> 
        <fieldset> 

        <!-- Form Name --> 
        <legend>Add New Portfolio Item</legend> 

        <!-- Text input--> 
        <div class="form-group"> 
         <label class="col-md-4 control-label" for="title">Item Title</label> 
         <div class="col-md-5"> 
         <input name="title" type="text" placeholder="Enter Title For the Item" class="form-control input-md" required=""> 

         </div> 
        </div> 

        <!-- Textarea --> 
        <div class="form-group"> 
         <label class="col-md-4 control-label" for="description">Description</label> 
         <div class="col-md-4">      
         <textarea class="form-control" name="description">Enter Description of Portfolio Item</textarea> 
         </div> 
        </div> 

        <!-- Multiple Radios --> 
        <div class="form-group"> 
         <label class="col-md-4 control-label" for="category">Select Category</label> 
         <div class="col-md-4"> 

          <?php 
           $sel="SELECT cat_id,cat_name from categories order by cat_name asc"; 
           $query=mysqli_query($link,$sel); 
           while($row=mysqli_fetch_array($query)) 
           { 

            echo "<div class='radio'>"; 
            echo "<label for='category-".$row['cat_id']."'>"; 
            echo "<input type='radio' name='category' value='".$row['cat_id']."'>"; 
            echo $row['cat_name']; 
            echo "</label>"; 
            echo "</div>"; 

           }     
          ?> 
         </div> 
        </div> 

        <!-- Text input--> 
        <div class="form-group"> 
         <label class="col-md-4 control-label" for="duration">Duration of Project</label> 
         <div class="col-md-4"> 
         <input name="duration" type="text" placeholder="Enter Duration in Hrs" class="form-control input-md" required=""> 

         </div> 
        </div> 

        <!-- File Button --> 
        <div class="form-group"> 
         <label class="col-md-4 control-label" for="nImage">File Button</label> 
         <div class="col-md-4"> 
         <input name="nImage" class="input-file" type="file"> 
         </div> 
        </div> 

        <!-- Button --> 
        <div class="form-group"> 
         <label class="col-md-4 control-label" for="submit"></label> 
         <div class="col-md-4"> 
         <button id="submit" name="submit" class="btn btn-success">Add New Portfolio Item</button> 
         </div> 
        </div> 

        </fieldset> 
        </form> 
            </div> 
       <!--/Add New Portfolio Item Form Ends--> 

вот моя таблица базы данных изображений:

The first two are added by me from the Insert tab in Database menu Любая помощь будет высоко оценен. Заранее спасибо :-)

+1

Вы не только широко открыты для SQL-инъекций, но и очень просто ввести вам плохие файлы, тоже – baao

+0

На ваш вопрос, есть ли у вас сообщения об ошибках? – baao

+1

эхо вставить запрос и попробовать выполнить непосредственно из mysql (или phpMyAdmin) ... – Riad

ответ

0

Чтобы отправить данные из HTML form, вы используете button, что явно не посылают form данных, вы должны использовать input type="submit", поэтому измените эту строку кода

<button id="submit" name="submit" class="btn btn-success">Add New Portfolio Item</button> 

в

<input type="submit" id="submit" name="submit" class="btn btn-success" value="Add New Portfolio Item" /> 
+0

не работает в любом случае. Bro! –

0

Возможно, вы должны использовать намного меньше вложенных ifs, особенно если все они выполняют одинаковый результат «else».

if (($a=3) 
    && ($b=7) 
    && ($car >= 9) 
    && ($name == 'steve') 
    && ($more == 'stuff')) { 
    // Run stuff here 
) else { 
    exit('error'); 
} 

После вашего mysqli_query(); для вставки, выполните проверку ошибок с mysqli_error($link); Он расскажет вам о каких-либо проблем. mysqli_query не возвращает никаких ошибок, только «true» или «false» в зависимости от того, как он работает.

0

Моя проблема решена. Я использовал конкатенацию в запросе. Вот как выглядит мой рабочий код (только запрос):

$qry=mysqli_query($link,"INSERT INTO `p_o_r_t_f_o_l_i_o`(`title`,`description`,`duration`,`category`,`image`) values('".$title."','".$description."','".$duration."','".$category."','".$portfolio_img_dir."')"); 

Спасибо большое за каждого, кто пытался помочь. Ура !!

Смежные вопросы