[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу занести данные в базу
Гость_Александр
Добрый день, думаю вопросов будет много так как начал изучать пхп.Вот первая проблема, изучаю пхп по видео урокам , вывод данных из базы данных в массив осуществил, теперь пытаюсь из файла пхп занести данные в базу, вот код:



<?php include("../options.php");

if(isset($_POST['Name'])) {$Name = $_POST['Name'];}

if(isset($_POST['Price'])) {$Price = $_POST['Price'];}

if(isset($_POST['Manufacture'])) {$Manufacture = $_POST['Manufacture'];}

if(isset($_POST['Type'])) {$Type = $_POST['Type'];}

if(isset($_POST['Articles'])) {$Articles = $_POST['Articles'];}

if(isset($_POST['Desc'])) {$Desc = $_POST['Desc'];}

if(isset($_POST['Description'])) {$Description = $_POST['Description'];}


if (isset($Name) && isset($Price) && isset($Manufacture) && isset($Type) && isset($Articles) && isset($Desc) && isset($Description))

{

$result = mysql_query("INSERT INTO product (Name, Price, Manufacture, Type, Articles, Desc, Description) VALUES ('$Name', '$Price', '$Manufacture', '$Type', '$Articles', '$Desc', '$Description')", $connect);


if($result == 'true') {echo "Товар добавлен";} else { echo "Товар не добавлен";}

}


else
{

echo "Вы заполнели не все поля";

}
?>



<?php include("add.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">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>
Add Product</title>
</head>

<body>
<form
action="add.php" method="post" name="add_product">
<label>
Имя</label><br />
<input
name="Name" id="Name" type="text" size="20" /><br />
<label>
Цена</label><br />
<input
name="Price" id="Price" type="text" size="20" /><br />
<label>
Производитель</label><br />
<input
name="Manufacture" id="Manufacture" type="text" size="20" /><br />
<label>
Тип</label><br />
<input
name="Type" id="Type" type="text" size="20" /><br />
<label>
Артикул</label><br />
<input
name="Articles" id="Articles" type="text" size="20" /><br />
<label>
Краткое описание</label><br />
<textarea
name="Desc" id="Desc" cols="50" rows="7"></textarea><br />
<label>
Полное описание</label><br />
<textarea
name="Description" id="Description"cols="50" rows="7"></textarea><br />
<input
name="submit" id="submit" type="submit" value="Добавить" /><br />
</form>
</body>
</html>



что не так и почему не заносятся данные, выдает текст Товар не добавлен, эта строка указана в функции if()



Спустя 59 минут, 58 секунд (29.01.2011 - 12:08) ApuktaChehov написал(а):
$result = mysql_query("INSERT INTO product (Name, Price, Manufacture, Type, Articles, Desc, Description) VALUES ('$Name', '$Price', '$Manufacture', '$Type', '$Articles', '$Desc', '$Description')", $connect) or die (mysql_error());

Спустя 20 минут, 23 секунды (29.01.2011 - 12:29) Guest написал(а):
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Desc, Description) VALUES ('Корпус на Motorola', '654грн.', 'Motorola', 'Корпус'' at line 1
----------------------------------------------------------

как понял я что то с версией Сервера баз(а точнее как понял я - что то с синтаксисом)

или я не прав?

Спустя 1 минута, 50 секунд (29.01.2011 - 12:31) Snus написал(а):


$Name = mysql_real_escape_string($Name);
// и тд...

$query = "INSERT INTO `product` (`Name`, `Price`, `Manufacture`, `Type`, `Articles`, `Desc`, `Description`) VALUES ('$Name', '$Price', '$Manufacture', '$Type', '$Articles', '$Desc', '$Description')";
$result = mysql_query($query, $connect) or die (mysql_error());

Спустя 28 минут, 39 секунд (29.01.2011 - 12:59) Guest написал(а):

<?php include("../options.php");

if(isset($_POST['Name'])) {$Name = $_POST['Name'];}

if(isset($_POST['Price'])) {$Price = $_POST['Price'];}

if(isset($_POST['Manufacture'])) {$Manufacture = $_POST['Manufacture'];}

if(isset($_POST['Type'])) {$Type = $_POST['Type'];}

if(isset($_POST['Articles'])) {$Articles = $_POST['Articles'];}

if(isset($_POST['Desc'])) {$Desc = $_POST['Desc'];}

if(isset($_POST['Description'])) {$Description = $_POST['Description'];}



if (isset($Name) && isset($Price) && isset($Manufacture) && isset($Type) && isset($Articles) && isset($Desc) && isset($Description))

{

$query = "INSERT INTO 'product' ('Name', 'Price', 'Manufacture', 'Type', 'Articles', 'Desc', 'Description') VALUES ('$Name' ,'$Price', '$Manufacture', '$Type', '$Articles', '$Desc', '$Description')";

$result = mysql_query($query, $connect) or die (mysql_error());

if($result == 'true') {echo "Товар добавлен";} else { echo "Товар не добавлен";}

}


else
{

echo "Вы заполнели не все поля";

}
?>


вот так щас выглядит,
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''product' ('Name', 'Price', 'Manufacture', 'Type', 'Articles', 'Desc', 'Descript' at line 1
это выдает


Спустя 16 минут, 33 секунды (29.01.2011 - 13:16) Snus написал(а):
Guest
А зачем ты кавычки поменял? просто скопипасти то, что я тебе написал

Спустя 3 минуты, 25 секунд (29.01.2011 - 13:19) Guest написал(а):
блин, токо заметил , а что эт оза кавычки, почему они отличаюся и как их ставить, этот момент вообще увидел первый раз huh.gif

Спустя 2 минуты, 48 секунд (29.01.2011 - 13:22) Snus написал(а):
Guest
Все string значения ты должен заносить в одинарные кавычки ' , все остальное в `

Спустя 3 минуты, 56 секунд (29.01.2011 - 13:26) Dron19 написал(а):
Цитата (Snus @ 29.01.2011 - 09:31)


$Name = mysql_real_escape_string($Name);
// и тд...

$query = "INSERT INTO `product` (`Name`, `Price`, `Manufacture`, `Type`, `Articles`, `Desc`, `Description`) VALUES ('$Name', '$Price', '$Manufacture', '$Type', '$Articles', '$Desc', '$Description')";
$result = mysql_query($query, $connect) or die (mysql_error());

да не, зачем безопасный вид приводить в данный момент? Дело в другом, у него с запросом что-то, может ты бд не подключил? Snus, и защищать бд надо немного по другому, учитывая magic_quotes_gpc, то есть не надеяться на него, а проверять его состояние и в зависимости от этого делать защиту

Спустя 1 минута, 35 секунд (29.01.2011 - 13:28) Snus написал(а):
Dron19
Что ты имеешь ввиду под "защищать бд надо немного по другому, учитывая magic_quotes_gpc, то есть не надеяться на него, а проверять его состояние и в зависимости от этого делать защиту "

Спустя 2 минуты, 4 секунды (29.01.2011 - 13:30) Dron19 написал(а):
ну блин, давай я тебе что бы не срать сюда, напишу в личку?

Спустя 2 минуты, 36 секунд (29.01.2011 - 13:32) Snus написал(а):
Dron19
Да мне-то не нужно этого объяснять, а вот товарищу может понадобится (автору темы)

Спустя 2 минуты, 8 секунд (29.01.2011 - 13:34) Dron19 написал(а):
а ну ладно, я всего лишь хотел сказать, что просто так написать перед добавлением в бд $sql = mysql_real_escape_string($sql); недостаточно, а в некоторых случаях чревато ошибкой

Спустя 3 минуты, 22 секунды (29.01.2011 - 13:38) inpost написал(а):
Гость_Александр
Загляни ко мне в подпись. Начни с последней ссылки.

Спустя 54 секунды (29.01.2011 - 13:39) Snus написал(а):
Dron19
Смотря какие данные заносишь. Все числа лучше integer делать, все html-содержащие данные через htmlspecialchars, все текстовые данные можно через base64_encode , но это с условием, что поиск не будет осуществляться по этим данным. А в остальных случаях mysql_real_escape_string и addslashes помогают.

Спустя 6 минут, 22 секунды (29.01.2011 - 13:45) aH6y написал(а):
Snus
Про "html-содержащие данные через htmlspecialchars" забудь!

Функция htmlspecialchars используется только для вывода данных и ни в коем случае не для форматированием перед отправкой в бд.

Спустя 4 минуты, 28 секунд (29.01.2011 - 13:49) Dron19 написал(а):
совместно addslashes и mysql_real_escape_string нельзя использовать
И аддслэшес не нужна, если вкл magic_quotes_gpc, при ее включенном состоянии нужно данные, которые приходят из пост или гет обрабатывать stripslashes и только потом mysql_real_escape_string

Спустя 3 минуты (29.01.2011 - 13:52) Dron19 написал(а):
aH6y, нет, можно и так и так делать, когда ты добавляешь в бд с этой функцией, то там уже хранится безопасный код, а когда выводишь, будет по сути одно и тоже, но если неувязочка с защитой от sql, то при выводе этот код выполнится, так что лучше хранить там уже защищенный вид...

Спустя 4 минуты, 37 секунд (29.01.2011 - 13:57) Snus написал(а):
aH6y
Обоснуй smile.gif

Спустя 4 минуты, 45 секунд (29.01.2011 - 14:02) Guest написал(а):
Ребят всем спасибо, я просто еще по поводу защиты базы не думал, я учю все с нуля и на данный момент (как показала практика) даже с синтаксисом проблемы.Я понимаю щас принцып работы MySql +PHP, как вывести в массив даные с базы, как занести данные в базу, как отредактирывать данные в базе, как создать базу при помощи PHP.Просто по видеоурокам синтаксис был совсем ни такой и кавычек не было тех что мне тут показали и которые привели мой код в действие.Теперь все заработало и данные были успешно занесены.Да бы оправдать себя приведу скрин урока в котором этот код без кавычек.
http://photo.qip.ru/users/sorrrrry1/150868...252/full_image/
и у автора товарища Попова(благодоря которому я сдивунлся с мертвой точки в ПХП) в видео все работает, а у меня не заработало. Но слава богу благодоря вам ребята - все работает. Сразу предупрежу что вопросов будет очень много, так как ПХП хочю знать как 5 пальцев.

Спустя 11 минут, 14 секунд (29.01.2011 - 14:13) Guest написал(а):
Появилась такая проблемма, хоть запонил я все поля хоть нет, товар добавляется, тоесть в базе появляется товар только ID а все остальное пусто, хотя есть три проверку в коде, но почему то они не срабатуют, тоесть я нажимаю конпку Добавиьт и мне выдает Товар добавлен, а должно было выводится Не все поля заполнены.

Спустя 8 минут, 5 секунд (29.01.2011 - 14:21) sorrrrry написал(а):
При много извиняюсь, эту тему создал , просто забыл войти.
Получается что if else на проверку заполненых полей не срабатует, еще раз опубликовую код

<?php include("../options.php");

if(isset($_POST['Name'])) {$Name = $_POST['Name'];}

if(isset($_POST['Price'])) {$Price = $_POST['Price'];}

if(isset($_POST['Manufacture'])) {$Manufacture = $_POST['Manufacture'];}

if(isset($_POST['Type'])) {$Type = $_POST['Type'];}

if(isset($_POST['Articles'])) {$Articles = $_POST['Articles'];}

if(isset($_POST['Desc'])) {$Desc = $_POST['Desc'];}

if(isset($_POST['Description'])) {$Description = $_POST['Description'];}



if (isset($Name) && isset($Price) && isset($Manufacture) && isset($Type) && isset($Articles) && isset($Desc) && isset($Description))

{

$query = "INSERT INTO `product` (`Name`, `Price`, `Manufacture`, `Type`, `Articles`, `Desc`, `Description`)
VALUES ('
$Name', '$Price', '$Manufacture', '$Type', '$Articles', '$Desc', '$Description')";

$result = mysql_query($query, $connect) or die (mysql_error());

if($result == 'true') {echo "Товар добавлен";} else { echo "Товар не добавлен";}

}


else

{

echo "Заполните все поля";

}
?>



Спустя 2 минуты, 12 секунд (29.01.2011 - 14:23) Snus написал(а):
isset - это проверка объявлена переменная или нет. Тебе нужно
if(!empty($Name) && ....

Спустя 21 минута, 10 секунд (29.01.2011 - 14:45) aparion написал(а):
Вместо этого
Цитата
if(isset($_POST['Name'])) {$Name = $_POST['Name'];}

можно писать
if (!empty($_POST['Name'])) $Name = $_POST['Name']; 
.
Так сразу проверяется заполнено поле или нет и если оно не пустое, то создается нужная переменная.

И условие можно исправить, чтоб после каждого выражения не писать &&.
if(isset($Name,$Price,...

Спустя 22 минуты, 8 секунд (29.01.2011 - 15:07) sorrrrry написал(а):
Цитата (Snus @ 29.01.2011 - 11:23)
isset - это проверка объявлена переменная или нет. Тебе нужно
if(!empty($Name) && ....

спасибо - теперь все работает и если поля не заполнены происходит вывод строки Заполните все поля

Спустя 1 минута, 39 секунд (29.01.2011 - 15:08) sorrrrry написал(а):
Цитата (aparion @ 29.01.2011 - 11:45)
Вместо этого
Цитата
if(isset($_POST['Name'])) {$Name = $_POST['Name'];}

можно писать
if (!empty($_POST['Name'])) $Name = $_POST['Name']; 
.
Так сразу проверяется заполнено поле или нет и если оно не пустое, то создается нужная переменная.

И условие можно исправить, чтоб после каждого выражения не писать &&.
if(isset($Name,$Price,...

блин ,супер, уменьшил код.

Спустя 1 час, 39 минут, 15 секунд (29.01.2011 - 16:48) sorrrrry написал(а):
Подскажите где рыть, суть : нужно что б index.php который находится в корне и является главным файлом сайта не перезагружался, то есть что б были блоки Левый блок Правый блок, Футер, Хидер и что б только информация менялась в этих блоках.Праельно ли вырозился или правельное я имею представление об этом, но приведу пример joomla, в ней в index.php разложены позиции и в них выводятся модули и инфо. Пока у меня получается принцып html страничек, то есть у каждого файла сайта одна и таже структура, толкьо в определенных мистах подключаются файлы при помощи include.Постарался изложить подробно.

Спустя 12 минут, 23 секунды (29.01.2011 - 17:00) YVSIK написал(а):
Знаешь не хочу поучать НО
зайди на тутошний сайт от этот сайт этого форума
и почитай об чём тут идет речь
потом наткнешься на такое форматер кода
уверяю многое станет понятным без вопросов

Спустя 10 минут, 16 секунд (29.01.2011 - 17:10) sorrrrry написал(а):
спасибо, сейчас почитаю.Мне просто нужен толчек в нужном направлении.

Спустя 3 часа, 17 минут, 27 секунд (29.01.2011 - 20:28) aH6y написал(а):

Спустя 7 минут, 7 секунд (29.01.2011 - 20:35) Dron19 написал(а):
Цитата (aH6y @ 29.01.2011 - 17:28)
Dron19
Snus
http://irbis-team.com/15/5/2

Ну и что там про защиту сказано?

Спустя 42 секунды (29.01.2011 - 20:35) Dron19 написал(а):
там простой вывод, если ты без нее выведешь, то может пройти XSS, а если ты добавляешь в базу с этой функцией, то зловредный код все равно просто выведется
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.