[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите найти ошибку в коде....
-reanimator-
Всем привет. Изучаю php - с помощью Попова и его курсов...
Начал делать админку для добавления информации в mysql через последнюю..

Все делаю по образцу - пока недопер я до общего принципа работы в php, не щелкнуло меня, чтоб разбираться со всем самостоятельно и писать свои скрипты - рановато еще - время нужно...

Вообщем файл обработки формы... следующий:

Подключение к базе....
<?php 
include ("bloks/mysql.php");

if (isset($_POST['id'])) {$id = $_POST['id'];}
if (isset($_POST['title'])) {$title = $_POST['title'];}
if (isset($_POST['meta_d'])) {$meta_d = $_POST['meta_d'];}
if (isset($_POST['meta_k'])) {$meta_k = $_POST['meta_k'];}
if (isset($_POST['date'])) {$date = $_POST['date'];}
if (isset($_POST['opisanie'])) {$opisanie = $_POST['opisanie'];}
if (isset($_POST['text'])) {$text = $_POST['text'];}
if (isset($_POST['author'])) {$author = $_POST['author'];}
?>


далее идут блоки..

и вот собственно основной код

<?php 

if (isset($title) && isset($meta_d) && isset($meta_k) && isset($title) && isset($date) && isset($opisanie) && isset($text) && isset($author))

{

$result = mysql_query ("INSERT INTO novosti_saita (id,title,meta_d,meta_k,date,opisanie,text,author) VALUES ('$id','$title','$meta_d','$meta_k','$date','$opisanie','$text','$author')");

if ($result == 'true') {echo "<p>Новость Успешно добавлена!!!!</p>";}
else {echo "<p>Новость не добавлена</p>";}

}

else
{
echo "<p>Вы ввели не всю информацию, поэтому новость в базу данных не может быть добавлена</p>";
}

?>


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

Толи проблема в дате, а может в поле id - не могу понять...

Есть предположение, что это из-за поля id. В курсах попова, у него стоит старая версия phpmyadmin.. там auto_increment ставится элементарно, а мне приходится постоянно вводить номер вручную. 1,2,3,4 и т.д... Не могу понять где взять этот increment

Версия * Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8k PHP/5.2.12
* Версия MySQL-клиента: 5.0.51a
* PHP расширение: mysql


Кстати, Я ищу репетитора по web-программированию. Попов и его курсы - это канешн хорошо, но не то...

Есть цель работать програмистов в php, поэтому нужен серьезный человек, который сможет меня обучить любым тонкостям.. Начиная от создания простых скриптов, заканчивая сложными скриптами - типо как в википедии - (допустим ссылки - якоря, которые появляются автоматически при написании статьи в том случае, если на сайте имеется заголовок с названием статьи как этот якорь) - может не понятно объяснил. - по другому не знаю как или скрипт сложной поисковой системы на сайте - учитывающий ошибки, всякие там рейтинги и прочую хрень.)
очень хотелось бы, что бы специалист так же разбирался в java и flash (графики, интерактивные карты, баннеры)

Если из Тольятти - то хотелось бы обучаться оффлайн... Из других городов - рассмотрю вопрос обучения через интернет. Только с четким графиков и планов занятий...



Спустя 10 минут, 39 секунд (5.04.2011 - 13:49) alex12060 написал(а):
Цитата
Попов и его курсы - это канешн хорошо, но не то...


Зря ты практикуешься по его урокам. Это очень старые курсы и содержат огромное кол-во проблем, недочетов и всего-подобного, поэтому, учись по веб ресурсам.

Цитата
Есть предположение, что это из-за поля id. В курсах попова, у него стоит старая версия phpmyadmin.. там auto_increment ставится элементарно, а мне приходится постоянно вводить номер вручную. 1,2,3,4 и т.д... Не могу понять где взять этот increment


ууу....

В общем, киши пропало...

Спустя 5 минут, 33 секунды (5.04.2011 - 13:55) Guest написал(а):
alex12060, а можно поконкретнее? то, что касяк - я так знаю. а тукныть мордой можно? или хоть подскажите в чем может быть проблема и как собствна этот иснкремент ставить?

Его курсы я использую - потому что они последовательны и ориентированы новичков.. + там все на практике показывается, что лучше позволяет усваивать.. Альтернативы (в новом формате) я не нашел к сожалению. Если смотреть книги - то там кроме сложной терминалогии - больше и нет ничего... и практики там маловато, считай одна теория. Может я не там искал.

Ну мне бы лучше наставника найти, а не литературой пачками зачитываться.

Спустя 1 минута, 49 секунд (5.04.2011 - 13:57) -reanimator- написал(а):
Да, совсем забыл, в коде та есть ошибка?

Спустя 1 минута, 43 секунды (5.04.2011 - 13:58) Игорь_Vasinsky написал(а):
вот смотри, трыпроверяешь что твой запрос в БД истенн?

if ($result == 'true')


- а у тебя получается что ты сравнивает (на идентичность) запрос в БД с строкой 'true', нельзя же так

вот попробуй:

if($result)

Спустя 4 минуты, 18 секунд (5.04.2011 - 14:03) Игорь_Vasinsky написал(а):
Цитата
Да, совсем забыл, в коде та есть ошибка?


и ошибка и вообще сама логика, т.е не совсем логика - лигика твоего представления.

При этом ты не задумываешься о безопатности - ты отправляешь данные примяком из формы в БД.... Это оч. плохо.

Во первых:

if (isset($_POST['id'])) {$id = $_POST['id'];}
if (isset($_POST['title'])) {$title = $_POST['title'];}
if (isset($_POST['meta_d'])) {$meta_d = $_POST['meta_d'];}
if (isset($_POST['meta_k'])) {$meta_k = $_POST['meta_k'];}
if (isset($_POST['date'])) {$date = $_POST['date'];}
if (isset($_POST['opisanie'])) {$opisanie = $_POST['opisanie'];}
if (isset($_POST['text'])) {$text = $_POST['text'];}
if (isset($_POST['author'])) {$author = $_POST['author'];}


Я тоже так гогда то начинал, и Попо Женя тут ни причём..
Потом я прочитал про тернарный оператор

А чтоб ID - не вводить руками - при создании таблицы в phpmyadmin (а можно и щас исправить) - укажи - auto_increment для поля ID

Спустя 2 минуты, 53 секунды (5.04.2011 - 14:06) Игорь_Vasinsky написал(а):
Так же синтаксис твой....
$result = mysql_query ("INSERT INTO novosti_saita (id,title,meta_d,meta_k,date,opisanie,text,author) VALUES
('
$id','$title','$meta_d','$meta_k','$date','$opisanie','$text','$author')");

а нужно:
$result = mysql_query ("INSERT INTO novosti_saita (id,title,meta_d,meta_k,date,opisanie,text,author) VALUES
('"
.$idю"','".$title."','".$meta_d."','".$meta_k."','".$date."','".$opisanie."','".$text."','".$author."')");


и опять же, нельзя данные без проверки сразу в БД сувать.

SQL-инъекции (mysql_escape_string();) // прочитай про них
Скрытый текст

Спустя 3 минуты, 26 секунд (5.04.2011 - 14:09) alex12060 написал(а):
$result = mysql_query ("INSERT INTO novosti_saita (id,title,meta_d,meta_k,date,opisanie,text,author) VALUES
('
$id','$title','$meta_d','$meta_k','$date','$opisanie','$text','$author')");


Так можно

if (isset($title) && isset($meta_d) && isset($meta_k) && isset($title) && isset($date) && isset($opisanie) && isset($text) && isset($author)) 


Тут 2 раза проверяется одно и то же.

Спустя 4 минуты, 59 секунд (5.04.2011 - 14:14) Игорь_Vasinsky написал(а):
И опять же смотри:

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


ты проверяешь - переданны ли данные, а если прилетит пустой POST?

может так:

if (!empty($_POST['id'])) {$id = $_POST['id'];}

Спустя 1 час, 6 минут, 51 секунда (5.04.2011 - 15:21) ИНСИ написал(а):
-reanimator- в следующий раз оформляйте код в специальные теги, пожалуйста. Так будет понятнее и красивее smile.gif

Спустя 16 минут, 12 секунд (5.04.2011 - 15:37) twin написал(а):

Спустя 1 час, 43 минуты, 57 секунд (5.04.2011 - 17:21) Guest написал(а):
Цитата
- а у тебя получается что ты сравнивает (на идентичность) запрос в БД с строкой 'true', нельзя же так

вот попробуй:



я бы рад знать, что можно, а что нельзя - для того чтоб делать свои выводы, нужно еще опыта понабраться немного) - коего у меня мало, что делает Попова - моим богом и наставников и без моей воли.

Цитата
и опять же, нельзя данные без проверки сразу в БД сувать.
SQL-инъекции (mysql_escape_string();) // прочитай про них


я делаю свой проект на локальной машине. - безопастность это то, чем я займусь в самом конце, даже после наполнения контентом.... пока все это не влезает в мой мозг одновременно(((.

Цитата
А чтоб ID - не вводить руками - при создании таблицы в phpmyadmin (а можно и щас исправить) - укажи - auto_increment для поля ID


да, спасибо, указал. странно, но я действительно не заметил поначалу.. ((


$result = mysql_query ("INSERT INTO novosti_saita (id,title,meta_d,meta_k,date,opisanie,text,author) VALUES
('
$id','$title','$meta_d','$meta_k','$date','$opisanie','$text','$author')");


эм - так это нормальный код? тут ниче править не надо? или сделать так, как сказал Игорь Vasinsky?

Цитата

if (isset($title) && isset($meta_d) && isset($meta_k) && isset($title) && isset($date) && isset($opisanie) && isset($text) && isset($author)) 


Тут 2 раза проверяется одно и то же.


все по образцу... что тут не так?
Сори, как я и говорил логика некоторых вещей в програмировании мне пока не совсем понятно и для исправления кода мне нужно пользоваться готовыми образцами, либо необходимо чтоб меня тыкнули носом в мою же ошибку.
Цитата

-reanimator- в следующий раз оформляйте код в специальные теги, пожалуйста. Так будет понятнее и красивее smile.gif


Хорошо, спасибо, я постараюсь учесть...

Все спасибо за ответы. Пожалуй начну с того, что бы исправить таблицы и поставить в оных auto_increment, а из кода удалю все, что касается поля id ..

Спустя 3 минуты, 2 секунды (5.04.2011 - 17:24) -reanimator- написал(а):
Оу, сори, опять я код не занес в окно... - исправлять сообщения гости вроде как не могут.
сеня зарегистрируюсь.

Спустя 3 минуты, 17 секунд (5.04.2011 - 17:27) inpost написал(а):
if(isset($_POST['title'],$_POST['meta_d']))
{
mysql_query("INSERT INTO `table` SET
`title` = '"
.mysql_real_escape_string($_POST['title'])."',
`meta_d` = '"
.mysql_real_escape_string($_POST['meta_d'])."'
"
);
}

Спустя 1 час, 48 минут, 39 секунд (5.04.2011 - 19:16) -reanimator- написал(а):
Вставил я increment .
Пробовал
'true'
- убирать. и
!empty
ставить вместо
isset


ничего не помогает. не могу понять. может кто сможет мне по аське растолковать что к чему? не хочется форум захламлять...

Спустя 24 минуты, 55 секунд (5.04.2011 - 19:41) -reanimator- написал(а):
Полностью убрал всю проверку оставил тока

<?php 
$result = mysql_query ("INSERT INTO novosti_saita (title,meta_d,meta_k,date,opisanie,text,author) VALUES ('$title','$meta_d','$meta_k','$date','$opisanie','$text','$author')");

?>


и все стало работать. только вот поля meta_d и meta_k не заполняет...

и понял., что причина была именно в этих полях. теперь остается понять, что с meta полями не так.

Спустя 8 минут, 47 секунд (5.04.2011 - 19:50) -reanimator- написал(а):
Всем спасибо. Касяк был настолько прост, что просто смешно, причем касяк я сделал не в php коде, а в html форме.

<input type="text" name="meta_k" id="meta_k">
- имя и id были проставлены большими буквами Meta_k и Meta_d

Все сори за отвлеченное время и спабо за доп. советы.
Быстрый ответ:

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