Я абсолютно начинающий программист. Написал программку в целях обучения по созданию БД.
Прошу проверить и высказать свои замечания
<?php
$connect = mysql_connect('localhost', 'root', '') or die("Ошибка соединения с сервером");
$namedb = !empty($_POST['namedb']) ? $_POST['namedb'] : NULL;
?>
<form method="POST">
Введите название создоваемой БАЗЫ ДАННЫХ <br>
<input name="namedb" type="text"/><br>
<input name="knopka" type="submit" value="Создать"/><br>
</form>
<?php
if(!empty($_POST['knopka']))
{
if(!$namedb)
{
echo 'Не введено название базы данных';
}
elseif(mysql_select_db($namedb, $connect))
{
echo 'База данных с таким именем уже есть';
}
else
{
$query = "CREATE DATABASE $namedb";
$rezult = mysql_query($query);
mysql_select_db($namedb, $connect);
echo "База данных $namedb создана";
}
}
mysql_close($connect);
?>
Заранее спасибо
Спустя 3 минуты, 40 секунд (3.10.2012 - 10:17) Игорь_Vasinsky написал(а):
для чего??? есть PMA етсь просто Mysql_query()
Спустя 20 минут, 50 секунд (3.10.2012 - 10:38) foton написал(а):
Я же написал, что учусь. И мне сейчас главное проверить правильность. Естественно что этот код не пригодится
Спустя 2 минуты, 19 секунд (3.10.2012 - 10:40) Игорь_Vasinsky написал(а):
Цитата |
if(!empty($_POST['knopka'])) |
if(isset($_POST['knopka']))
Спустя 6 минут, 51 секунда (3.10.2012 - 10:47) foton написал(а):
Спасибо!
Спустя 19 минут, 37 секунд (3.10.2012 - 11:07) m4a1fox написал(а):
foton
ИМХО! Лучше весь php код выносить наверх файла... еще лучше выделять его в отдельный документ и подключать в голове файла.
ИМХО! Лучше весь php код выносить наверх файла... еще лучше выделять его в отдельный документ и подключать в голове файла.
Спустя 4 часа, 13 минут, 30 секунд (3.10.2012 - 15:20) Zzepish написал(а):
m4a1fox
согласен. Но это относится к коду, который ничего выводить не будет)
согласен. Но это относится к коду, который ничего выводить не будет)
Спустя 19 часов, 17 минут, 4 секунды (4.10.2012 - 10:37) foton написал(а):
Вот скрипт по созданию и занесению в БД статей. Через форму
Проблема, при обновлении браузера одна и таже статья ещё раз записывается в БД. При написании заголовка
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\halihalo\www\sozd_article.php:1) in Z:\home\halihalo\www\sozd_article.php on line 27
include './tpl/sozd_article/post.tpl';вносятся название статьи и её текст.
Проблема, при обновлении браузера одна и таже статья ещё раз записывается в БД. При написании заголовка
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);выходит ошибка
exit();
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\halihalo\www\sozd_article.php:1) in Z:\home\halihalo\www\sozd_article.php on line 27
<?php
$name_article = isset($_POST['name_article']) ? $_POST['name_article'] : NULL;
$text_article = isset($_POST['text_article']) ? $_POST['text_article'] : NULL;
$info = array(
);
if(isset($_POST['save']))
{
if(!$name_article)
{
$info[] = 'Не введено название статьи';
}
if(!$text_article)
{
$info[] = 'Не введён текст статьи';
}
if(count($info) == 0)
{
include 'db.php';
$queri = "INSERT INTO articles (name_article,text_article) VALUES ('$name_article','$text_article')";
$result = mysql_query($queri) or die("Ошибка при выполнении запроса". mysql_error());
echo "Статья успешно добавлена в БД";
}
}
include './tpl/head.tpl';
include './tpl/menunav.tpl';
include './tpl/sozd_article/post.tpl';
echo implode('<br>', $info) .'<br>';
include './tpl/leftblock.tpl';
include './tpl/footer.tpl';
Спустя 6 минут, 21 секунда (4.10.2012 - 10:44) m4a1fox написал(а):
foton
Давай те сразу определимся. Так как кто то на форуме ляпнул... и понеслось. Итак. Идем мануал. и читаем, да (как я, не опозорится в диалоге с друзьями-программистами).
В частности я про
Давай те сразу определимся. Так как кто то на форуме ляпнул... и понеслось. Итак. Идем мануал. и читаем, да (как я, не опозорится в диалоге с друзьями-программистами).
В частности я про
exit();
Цитата |
exit - это конструкция языка, и она может быть вызвана без круглых скобок если не передается параметр status. |
Это значит, что правильнее писать именно так
exit;
при условии, что вы не будете выводить сообщения при экстренном завершении работы скрипта.
А насчет вашей ошибки -
Цитата |
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\halihalo\www\sozd_article.php:1) in Z:\home\halihalo\www\sozd_article.php on line 27 |
это значит, что перед header'om не должно быть никакого вывода... вообще ничего, ни пробела ни символа - тогда он отрабатывает.
Спустя 2 минуты, 13 секунд (4.10.2012 - 10:46) m4a1fox написал(а):
m4a1fox
Дальше... перейдем к html.... по хорошему, тег <br> должен, как и любой порядочный тэг, закрываться... но вот незадача... закрытого то тега, </br> не существует. поэтому он закрывает сам себя вот так - <br />.... кстати, тэгов не имеющих двойников закрытия - не много. Навскидку могу назвать пожалуй 4. Это
Если кто дополнит, будет здорово.
Идем к php
Попытайтесь пояснить, для чего вам тут эти 2 строчки....
P.S. Лучше приведите код файла целиком, ибо не совсем понятна общая картина....
Дальше... перейдем к html.... по хорошему, тег <br> должен, как и любой порядочный тэг, закрываться... но вот незадача... закрытого то тега, </br> не существует. поэтому он закрывает сам себя вот так - <br />.... кстати, тэгов не имеющих двойников закрытия - не много. Навскидку могу назвать пожалуй 4. Это
<br />
<hr />
<img />
<input />
Если кто дополнит, будет здорово.
Идем к php
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
exit();
Попытайтесь пояснить, для чего вам тут эти 2 строчки....
P.S. Лучше приведите код файла целиком, ибо не совсем понятна общая картина....
Спустя 5 минут, 7 секунд (4.10.2012 - 10:51) foton написал(а):
Эти 2 строчки вроде как должны сброс пост параметров сделать (насколько я понял). Иначе как тогда при F5 сделать, чтобы повторной записи введённых данных в БД не было?
Спустя 2 минуты, 12 секунд (4.10.2012 - 10:53) m4a1fox написал(а):
foton
Цитата |
Эти 2 строчки вроде как должны сброс пост параметров сделать (насколько я понял) |
нет. Ты не верно понял. header не делает сброс.... читаем, понимаем, исправляем... если поймешь, буду дальше помогать, если будет впадлу, то и мне соответственно будет впадлу.
Спустя 56 минут, 13 секунд (4.10.2012 - 11:49) foton написал(а):
Спасибо! Только там по английски написано, к сожалению, для меня это проблемка. Ладно, сейчас поищу подобное на русском.
Спустя 10 минут, 53 секунды (4.10.2012 - 12:00) m4a1fox написал(а):
foton
Цитата |
Спасибо! Только там по английски написано, к сожалению, для меня это проблемка. Ладно, сейчас поищу подобное на русском. |
Тебе 11 лет?! Ты не знаешь как пользоваться переводчиками...?
Спустя 12 минут, 31 секунда (4.10.2012 - 12:13) foton написал(а):
Чё Вы грамотные всё с мелкими подъёбками отвечаете? Знаю, как пользоваться. 36 лет мне, 3-й месяц как php увлёкся. Просто на работе сейчас и нет возможности ими воспользоваться, сисадмины блокируют. Я уже покаялся, что помощи попросил
Спустя 8 минут, 43 секунды (4.10.2012 - 12:21) m4a1fox написал(а):
foton
Злые сисадмины. Тогда так - header делает переадресацию. То есть по сути отправляет запрос на загрузку страницы. Насчет подколов простите, поторопился с выводом. и еще. Вот тут - http://www.phpfaq.ru/headers написано как с ошибкой бороться.
Злые сисадмины. Тогда так - header делает переадресацию. То есть по сути отправляет запрос на загрузку страницы. Насчет подколов простите, поторопился с выводом. и еще. Вот тут - http://www.phpfaq.ru/headers написано как с ошибкой бороться.
Спустя 1 минута, 14 секунд (4.10.2012 - 12:23) Zzepish написал(а):
$namedb = !empty($_POST['namedb']) ? mysql_real_escape_string($_POST['namedb']) : NULL;
Спустя 3 минуты, 14 секунд (4.10.2012 - 12:26) m4a1fox написал(а):
Zzepish
Извиняюсь! Поторопился.
Извиняюсь! Поторопился.
Спустя 17 минут, 50 секунд (4.10.2012 - 12:44) foton написал(а):
Спасибо всем. Буду разбираться
Спустя 41 минута, 25 секунд (4.10.2012 - 13:25) foton написал(а):
Да, и в свою очередь тоже извиняюсь за резкость со своей стороны.
Проблему свою пока решил посредствам метатегов + Refresh. С хедерами пока не всё понятно, вернее практически ни чего не понятно.
Проблему свою пока решил посредствам метатегов + Refresh. С хедерами пока не всё понятно, вернее практически ни чего не понятно.
Спустя 19 часов, 47 минут, 4 секунды (5.10.2012 - 09:12) foton написал(а):
В книге М. Кузнецова есть такой код файла addpart.php. Файл config.php - подключение к бд
Данные в пост попадают из формы
Проблема в том, что данные заносятся в бд, но в тоже время выходит ошибка функции links. Где здесь может быть ошибка
<?php
require_once '../config.php';
if(empty($_POST['name']))
{
links("Введите название раздела!");
}
$name = str_replace("'","`",$_POST['name']);
$query = "INSERT INTO section VALUES (NULL,'$name')";
if (mysql_query($query))
{
echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0,
URL = index.php'/></HEAD></HTML>";
}
else puterror ("Ошибка при обращении к разделу статей");
function links ($msg)
{
echo "<p>".$msg."</p>";
echo "<p><a href=# onClick='history.back()'>Вернуться к правке раздела</a></p>";
echo "<p><a href=index.php>Администрирование статей</a></p>";
exit;
}
?>
Данные в пост попадают из формы
<div class="post">
<div class="entry">
<a href="javascript:history.back()">Назад</a>
<form action="addpart.php" method="post">
Название:
<input type="text" name="name"/>
<input type="submit" value="Добавить"/>
</form>
</div>
</div>
Проблема в том, что данные заносятся в бд, но в тоже время выходит ошибка функции links. Где здесь может быть ошибка