2016-05-27 3 views
-2

У меня есть форма, которую я создал с помощью HTML/PHP, и я хотел бы, чтобы она была отправлена ​​в базу данных; У меня есть сайт для фильмов, и сейчас я работаю над панелью администратора, я хочу, чтобы у него была форма, которая добавляет новые фильмы на сайт, я пробовал свою форму, но ничего не происходит в базе данных. Соединение с базой данных в порядке и запросы выглядят хорошо для меня, я честно не знаю, в чем проблема.Моя форма не будет отправлена ​​в базу данных (PHP/MySQL)

P.S. Я делаю это по-арабски, арабский написание не означает ничего ..

PHP/HTML код:

<?php 
session_start(); 
include('php/config.php'); 

if($_SESSION['username'] != true){ 
header('Location: http://www.domain.com/'); 
} 
//this form allows to choose what to do (e.g. add new movie)... 
else{ 
echo' 
<head> 
<link rel="stylesheet" href="css/main.css" /> 
<link rel="stylesheet" href="css/admin.css" /> 
<meta charset="utf-8"/> 
<title>Admin Panel v1.0</title> 
</head> 
<ul class="management-b"> 
<li><a href="#">إضافة فيلم جديد</a></li> 
<li><a href="#">إضافة مسلسل جديد</a></li> 
<li><a href="#">مسح فيلم/مسلسل</a></li> 
</ul> 
'; 
} 


//this form adds new movies... 
connectDB(); 
$genreQuery = mysql_query("SELECT genre FROM Genres"); 

echo' 
<head> 
<link rel="stylesheet" href="css/main.css"/> 
<link rel="stylesheet" href="css/admin.css"/> 
<meta charset="utf-8" /> 
</head> 
<form method="post" id="new-movie"> 
عنوان الفيلم:<input type="text" class="new-movie-title" name="new-movie-title" /><br/><br/> 
وصف الفيلم:<textarea class="new-movie-desc" name="new-movie-desc" cols="50" rows="7"></textarea><br/><br/> 
نوع الفيلم:<select class="new-movie-genre" name="new-movie-genre">'; 
while($options = mysql_fetch_array($genreQuery, MYSQL_ASSOC)){ 
echo '<option>'.$options["genre"].'</option>'; 
} 
echo'</select><br/><br/> 
تاريخ الفيلم:<select class="new-movie-year" name="new-movie-year">'; 
for($years = 1995; $years<2017; $years++){ 
echo '<option>'.$years.'</option>'; 
} 
echo' 
</select><br/><br/> 
رابط الفيلم:<input type="text" name="new-movie-link" class="new-movie-link"/><br/><br/> 
صورة الفيلم:<input type="text" name="new-movie-img" class="new-movie-img" /><br/><br/> 
تقييم imDB:<input type="text" name="new-movie-imdb" class="new-movie-imdb"/><br/><br/> 
<input type="submit" name="new-movie-submit" class="new-movie-submit" value="إضافة الفيلم" /> 
</form> 
'; 


if(isset($_POST['new-movie-submit'])){ 
    connectDB(); 
$mNewTitle= $_POST['new-movie-title']; 
$mNewDesc= $_POST['new-movie-desc']; 
$mNewGenre= $_POST['new-movie-genre']; 
$mNewYear= $_POST['new-movie-year']; 
$mNewURL= $_POST['new-movie-link']; 
$mNewIMG= $_POST['new-movie-img']; 
$mNewIMDB= $_POST['new-movie-imdb'];  

mysql_query("INSERT INTO Movies(title, description, genre, url, image, imdb, release-year) VALUES('$mNewTitle', '$mNewDesc', '$mNewGenre', '$mNewURL', '$mNewIMG', '$mNewIMDB', '$mNewYear'"); 
closeDB(); 
} 


?> 
+0

Вам необходимо изменить на 'mysqli_ *' функции, поскольку 'mysql_' обесценивается. Вы также широко открыты для [SQL Injections] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php). – Tigger

+0

@Tigger Да, но выполняет ли функции Mysql амортизацию влияет на отправку? –

+0

Не сейчас, но это возможно в будущем. – Tigger

ответ

1

Если вы проверили на наличие ошибок MySQL будет сказать вам, что у вас нет идентификатора столбца с именем year, так как release-year содержит тире в нем, что заставляет MySQL думать, что вы вычитаете идентификатор столбца year от release. Оберните это имя столбца в тики, чтобы решить эту проблему.

mysql_query("INSERT INTO Movies(title, description, genre, url, image, imdb, `release-year`) VALUES('$mNewTitle', '$mNewDesc', '$mNewGenre', '$mNewURL', '$mNewIMG', '$mNewIMDB', '$mNewYear'"); 

Как уже упоминалось в комментариях вы используете устаревший API как mysql_* функции все были удалены из PHP в PHP 7, и вы широко открыты для инъекций SQL, которая является наиболее распространенной формой атак на основе веб.

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

+0

Спасибо за советы, но он по-прежнему не вставляется в базу данных –

+0

Добавили ли вы ошибку в свой код? –

+0

Да, я добавил: error_reporting (E_ALL). пока ничего не появляется .. –