Upload на снимка

rosigolden

Registered
PHP:
Здравейте имам един проблем и Ви моля за помощ. Става въпрос за администраторския панел и по скоро за качване на снимки.
Това е формата 
<form name="form1" method="post" action="add_lesson.php">
         <p>
           <label>ADD IMAGE<br>
           <input name="title" type="file" enctype="multipart/form-data"><br />
             
             </label>, а ето и php скрипта ми, който като избера снимка в базата данни отива само името на файла на снимката. Някъде тотално бъркам, и много ще се радвам ако някой ми помогне. Снимките трябва да се качат в "title"
if (isset($_POST['title']))       
{
$title = $_POST['title']; 

if ($title == '') 
{
unset($title);
}  

}

if (isset($_POST['meta_d']))      {$meta_d = $_POST['meta_d']; if ($meta_d == '') {unset($meta_d);}}
if (isset($_POST['meta_k']))      {$meta_k = $_POST['meta_k']; if ($meta_k == '') {unset($meta_k);}}
if (isset($_POST['date']))        {$date = $_POST['date']; if ($date == '') {unset($date);}}
if (isset($_POST['description'])) {$description = $_POST['description']; if ($description == '') {unset($description);}}
if (isset($_POST['text']))        {$text = $_POST['text']; if ($text == '') {unset($text);}}
if (isset($_POST['author']))      {$author = $_POST['author']; if ($author == '') {unset($author);}}

?>
 
Когато качваш фалове не се взимат със пост или гет а със $_FILES . В твоя случай променливата тайтал няма да е равна на ПОСТ тайтал а на:
Код:
$title = $_FILES['title']['name'];  - това е името
$title = $_FILES['title']['tmp_name'];  - това е временният файл
$title = $_FILES['title']['size'];  - това е размера
$title = $_FILES['title']['type'];  - това е типа

За повече информация как работи това и други полезни примери цъкни тука.:)
 
написах го така



if (isset($_FILES['title']))
{
$title = $_FILES['title']['name']; - това е името
$title = $_FILES['title']['tmp_name']; - това е временният файл
$title = $_FILES['title']['size']; - това е размера
$title = $_FILES['title']['type']; - това е типа

if ($title == '')
{
unset($title);
}

}
и ми дава parse error in на реда в червено :?
 
еми , махни "-Това е заглавието .. " и текста срещу другите променливи ..От тук нататак ще имаш още много грешки .. не си спазил основите на Html формата enctype="multipart/form-data" -> трябва да бъде във тага на формата а не във полето .. с 1 друма трябва да е след метод = 'пост'
.Второто нещо , което ти трябва е събмит бутон .. и него да проверяваш дали е натиснат , а не полето .. !
 
ето сега какви ги забърках - формата ми
<form name="form1" method="post" enctype="multipart/form-data" action="add_lesson.php">
<p>
<label>ADD IMAGE<br>
<input name="localhost/lessons/img/CARS" type="file"><br />

</label>
</p>
<p>
<label>CAR BRAND<br>
<input name="date" type="text" id="date" value="2007-01-27">
</label>
</p>
<p>
<label>DESCRIPTION OF CARS
<textarea name="description" id="description" cols="40" rows="5"></textarea>
</label>
</p>
<p>
<label>LOW PRICE<br />
<textarea name="text" id="text" cols="40" rows="5"></textarea>
</label>
</p>
<p>
<label>HIGH PRICE<br>
<input type="text" name="author" id="author">
</label>
</p>
<p>
<label>
<input type="submit" name="submit" id="submit" value="Record in the database">
</label>
</p>
</form>

и другото файлче

if(isset($_POST['localhost/lessons/img/CARS']))
{

$title = $_FILES['title']['name'];
$titleTmp = $_FILES['title']['tmp_name'];
$titleSize = $_FILES['title']['size'];


$isPng = end(explode(".",$title));

copy( $titleTmp , "../CARS/");
echo "Успешно";
}

if (isset($_POST['date'])) {$date = $_POST['date']; if ($date == '') {unset($date);}}
if (isset($_POST['description'])) {$description = $_POST['description']; if ($description == '') {unset($description);}}
if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);}}
if (isset($_POST['author'])) {$author = $_POST['author']; if ($author == '') {unset($author);}}
if (isset($title) && isset($date) && isset($description) && isset($text) && isset($author))
{

$result = mysql_query ("INSERT INTO lessons (title,date,description,text,author) VALUES ('$title', '$date','$description','$text','$author')");

if ($result == 'true') {echo "<p>Успешно добавено!</p>";}
else {echo "<p>Нещо се обърка, опитайте пак!</p>";}


}
else

{
echo "<p>Не сте попълнили всичко необходимо, не можа да продъжите</p>";
}

след попълване на всичко извежда резултат - Не сте попълнили всичко необходимо, не можа да продъжите

Какво сега не му харесва

:cry: :cry: :cry: :cry: :cry: :cry: :cry: :cry:
 
Така?

PHP:
<?php
if(isSet($_POST['submit'])) {
	if(isSet($_POST['date'], $_POST['description'], $_POST['text'], $_POST['author'], $_POST['cars'])) {
		$date 		 = $_POST['date'];
		$description  = $_POST['description'];
		$text 		 = $_POST['text'];
		$author 	 = $_POST['author'];
		$cars		 = $_POST['cars'];
	} else {
		$date		 = "";
		$description  = "";
		$text 		 = "";
		$author		 = "";
		$cars 		 = "";
	}
	if(!$date || !$description || !$text || !$author | !$cars) {
		echo "Не сте попълнили всичко необходимо, не може да продъжите. :)";
	} else {
	$title     = $_FILES['cars']['name'];
	$titleTmp  = $_FILES['cars']['tmp_name'];
	$titleSize = $_FILES['cars']['size'];
	$isPng = end(explode(".", $title));
	copy($titleTmp, "../CARS/");
	mysql_query ("INSERT INTO `lessons` (title,date,description,text,author) VALUES ('{$title}', '{$date}','{$description}','{$text}','{$author}')") or die(mysql_error());
	echo "<p>Успешно добавено!</p>";
	}
} else {
echo "
<form method=\"post\" enctype=\"multipart/form-data\" action=\"\">
	<p>
		<label>ADD IMAGE<br /><input name=\"cars\" type=\"file\"><br /></label>
	</p>
	<p>
		<label>CAR BRAND<br><input name=\"date\" type=\"text\" id=\"date\" value=\"2007-01-27\"></label>
	</p>
	<p>
		<label>DESCRIPTION OF CARS<textarea name=\"description\" id=\"description\" cols=\"40\" rows=\"5\"></textarea></label>
	</p>
	<p>
		<label>LOW PRICE<br /><textarea name=\"text\" id=\"text\" cols=\"40\" rows=\"5\"></textarea></label>
	</p>
	<p>
		<label>HIGH PRICE<br><input type=\"text\" name=\"author\" id=\"author\"></label>
	</p>
	<p>
		<label><input type=\"submit\" name=\"submit\" id=\"submit\" value=\"Record in the database\"></label>
	</p>
</form>"
}
?>

П.С. Входящите данни по-този начин не са защитени на формата и може да бъде манипулирана. Също така полето DATE, е безсмислено тъй като можеш да използваш time(); или някоя друга функция за взимане на дата, час..

П.С.2: Не виждам смисъл от това:
PHP:
        $isPng = end(explode(".", $title));

Тъй като никъде не правиш проверка, дали файла е png..
 
направих така както казваш, с тази разлика, че php скрипта ми е в отделен файл, значи стана така file:
add_lesson.php

<?php
include("blocks/header.php");
include ("blocks/lefttd.php");
include ("blocks/bd.php");

if(isset($_POST['submit'])) {
if(isSet($_POST['date'], $_POST['description'], $_POST['text'], $_POST['author'], $_POST['cars'])) {
$date = $_POST['date'];
$description = $_POST['description'];
$text = $_POST['text'];
$author = $_POST['author'];
$cars = $_POST['cars'];
} else {
$date = "";
$description = "";
$text = "";
$author = "";
$cars = "";
}
if(!$date || !$description || !$text || !$author | !$cars) {
echo "Не сте попълнили всичко необходимо, не може да продъжите. ";
} else {
$title = $_FILES['cars']['name'];
$titleTmp = $_FILES['cars']['tmp_name'];
$titleSize = $_FILES['cars']['size'];
$isPng = end(explode(".", $title));
copy($titleTmp, "../CARS/");
mysql_query ("INSERT INTO `lessons` (title,date,description,text,author) VALUES ('{$title}', '{$date}','{$description}','{$text}','{$author}')") or die(mysql_error());
echo "<p>Успешно добавено!</p>";


if (isset($_POST['date'])) {$date = $_POST['date']; if ($date == '') {unset($date);}}
if (isset($_POST['description'])) {$description = $_POST['description']; if ($description == '') {unset($description);}}
if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);}}
if (isset($_POST['author'])) {$author = $_POST['author']; if ($author == '') {unset($author);}}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Обработка</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="690" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">
</table>

</body>
</html>



i
new_lesson.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>ADD CARS</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="690" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">

<? include("blocks/header.php"); ?>
<tr>
<td><table width="690" border="0" cellspacing="0" cellpadding="0">
<tr>

<? include ("blocks/lefttd.php"); ?>
<td valign="top">
<form name="form1" method="post" action="add_lesson.php">
<p>
<label>ADD IMAGE<br>
<input name="localhost/lessons/img/CARS" enctype="multipart/form-data" type="file"><br />


</label>
</p>
<p>

</p>

<p>
<label>CAR BRAND<br>
<input name="date" type="text" id="date" >
</label>
</p>
<p>
<label>DESCRIPTION OF CARS
<textarea name="description" id="description" cols="40" rows="5"></textarea>
</label>
</p>
<p>
<label>LOW PRICE<br />
<textarea name="text" id="text" cols="40" rows="5"></textarea>
</label>
</p>
<p>
<label>HIGH PRICE<br>
<input type="text" name="author" id="author">
</label>
</p>
<p>
<label>
<input type="submit" name="submit" id="submit" value="Record in the database">
</label>
</p>
</form>
<p> </p> </td>
</tr>
</table></td>
</tr>


</table>
</body>
</html>
- това е реда с грешка

Грешката е на последния ред на add_lesson.php там където няма никакъв код
 
Абе правиш излишни глупости. Работата можеш да си е свършиш с един файл без проблеми и главоболия, какъв е смисъла да правиш 2 файла за една работа? Не ми се връзва.

Горния код предполагам ще е ОКЕЙ, както съм го дал, ако даде грешка ми е копирай. :?:
 
Parse error: parse error, expecting `','' or `';'' in C:\xampp\htdocs\lessons\admin\new_lesson.php on line 67

67 ред е ето тази скоба }
преди последното затваряе на php


тази грешка я намерих, ; имаше пропусната. Сега след стартиране ми отваря формата за попълване. Попълвам всичко и извежда :
Не сте попълнили всичко, не може да продължите

ето от този ред
echo 'Не сте попълнили всичко необходимо, не може да продъжите. ';

И това го оправих, сега проблема си остана същия както в самото начало - като избера снимка записва само името и :(
 

Горе