2016-05-27 9 views
-2

Ich habe ein Formular, das ich mit HTML/PHP gemacht habe, und ich möchte es an die Datenbank senden; Ich habe eine Filmwebseite und arbeite gerade am Admin-Panel. Ich möchte, dass es ein Formular enthält, das der Site neue Filme hinzufügt. Ich habe mein Formular ausprobiert, aber nichts geht in die Datenbank. Die Verbindung mit der Datenbank ist in Ordnung und die Abfragen sehen gut aus, ich weiß ehrlich nicht, was das Problem ist.Mein Formular wird nicht an die Datenbank übergeben (PHP/MySQL)

P.S. Ich mache es auf Arabisch, die arabische Schrift hat nichts zu bedeuten ..

PHP/HTML-Code:

<?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

Sie müssen zu 'mysqli_ *' Funktionen wechseln, da 'mysql_' abgeschrieben wird. Sie sind auch offen für [SQL Injections] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php). – Tigger

+0

@Tigger Ja, aber funktioniert Mysql abgeschrieben? –

+0

Nicht jetzt, aber vielleicht in der Zukunft. – Tigger

Antwort

1

Wenn Sie auf Fehler überprüft MySQL würden Sie sagen, dass Sie keine Spalte Kennung haben names year als release-year enthält einen Bindestrich, der MySQL glauben lässt, dass Sie den Spaltenbezeichner von release subtrahieren. Umbrechen Sie diesen Spaltennamen in Häkchen, um dies zu beheben.

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

Wie in den Kommentaren erwähnt Sie eine veraltete API als die mysql_* Funktionen von PHP in PHP haben, werden mit allen 7 entfernt worden und Sie sind weit offen für SQL-Injektionen, die die häufigste Form von Web-basierte Angriffe ist.

Und wie ich bereits erwähnt, Sie nicht überprüfen oder Fehler behandeln. Sie hätten diesen Fehler mit der grundlegenden Fehlerprüfung schnell erfasst. Sie müssen auch darauf vorbereitet sein, wenn Fehler auftreten, oder Ihre Benutzer werden eine schlechte Erfahrung haben, wenn ein Fehler auftritt.

+0

Vielen Dank für die Tipps, aber es fügt immer noch nicht in die Datenbank ein –

+0

Haben Sie die Fehlerprüfung zu Ihrem Code hinzugefügt? –

+0

Ja, ich habe hinzugefügt: error_reporting (E_ALL). noch nichts erscheint .. –

Verwandte Themen