Начал делать админку для добавления информации в 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 написал(а):
вот смотри, трыпроверяешь что твой запрос в БД истенн?
- а у тебя получается что ты сравнивает (на идентичность) запрос в БД с строкой 'true', нельзя же так
вот попробуй:
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 написал(а):
Так же синтаксис твой....
а нужно:
и опять же, нельзя данные без проверки сразу в БД сувать.
SQL-инъекции (mysql_escape_string();) // прочитай про них
$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 написал(а):
И опять же смотри:
ты проверяешь - переданны ли данные, а если прилетит пустой POST?
может так:
if (isset($_POST['id'])) {$id = $_POST['id'];}
ты проверяешь - переданны ли данные, а если прилетит пустой POST?
может так:
if (!empty($_POST['id'])) {$id = $_POST['id'];}
Спустя 1 час, 6 минут, 51 секунда (5.04.2011 - 15:21) ИНСИ написал(а):
-reanimator- в следующий раз оформляйте код в специальные теги, пожалуйста. Так будет понятнее и красивее
Спустя 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- написал(а):
Полностью убрал всю проверку оставил тока
и все стало работать. только вот поля meta_d и meta_k не заполняет...
и понял., что причина была именно в этих полях. теперь остается понять, что с meta полями не так.
<?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
Все сори за отвлеченное время и спабо за доп. советы.