[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по добавлению в БД
veolancer
В общем дело такое. Выложу сначало код


<div id="right">
<?php

if(isset($_POST)){

}
else{
echo '
<form method="post" action="">
<p>Категория<br>
<select name="rub" id="rub">'
;
if(mysql_num_rows($query_rub) > 0){
while($row_rub = mysql_fetch_assoc($query_rub)){
echo '<option value="'. (int)$row_rub['id'] .'">'. htmlspecialchars($row_rub['title']) .'</option>';
}
}

echo '</select>
</p>
<p>Название(Теги)<br><input type="text" align="left" size="50" name="title" id="title"></p>
<p>Превью<br><input type="text" align="left" size="50" name="preview" id="preview"></p>
<p>Картинка<br><input type="text" align="left" size="50" name="img" id="img"></p>
<input type="submit" value="Добавить">
</form>
'
;
}

?>
/div>


Так вот, что то в тупик зашёл. Хочу сделать в доном файле чтоб была и форма добавления картинки и обработчик. Тоесть нужно типо если глоб. массив Пост есть то добавлятькартинку в базу, а ести нет то выводить форм. Сверху я накидал код, поправьте его, а дальше я уже буду разбираться



Спустя 7 минут, 1 секунда (30.01.2012 - 13:54) bob marley написал(а):
<?php

if(isset($_POST)){ ///Укажи конкретно например: $_POST['img']

}else{
echo '
<form method="post" action="">
<p>Категория<br>
<select name="rub" id="rub">'
;
if(mysql_num_rows($query_rub) > 0){
while($row_rub = mysql_fetch_assoc($query_rub)){
echo '<option value="'. (int)$row_rub['id'] .'">'. htmlspecialchars($row_rub['title']) .'</option>';
}
}

echo '</select>
</p>
<p>Название(Теги)<br><input type="text" align="left" size="50" name="title" id="title"></p>
<p>Превью<br><input type="text" align="left" size="50" name="preview" id="preview"></p>
<p>Картинка<br><input type="text" align="left" size="50" name="img" id="img"></p>
<input type="submit" value="Добавить">
</form>
'
;
}

?>


Где переменная $query_rub ?

Спустя 7 минут, 33 секунды (30.01.2012 - 14:02) bob marley написал(а):
Цитата (hamado @ 30.01.2012 - 10:47)
    if(isset($_POST)){
   
    }else{
        echo '
          <form method="post" action="">
              <p>Категория<br>

Зачем писать так?измени условие просто да и все!

Спустя 2 минуты, 37 секунд (30.01.2012 - 14:04) veolancer написал(а):
bob marley
Цитата
Где переменная $query_rub ?

Она выше, тут не всё написано.


Цитата
if(isset($_POST)){ ///Укажи конкретно например: $_POST['img']

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

В этом виде(который в описании темы) он мне выдаёт пустоту, тобишь ни форму и ничего

Спустя 32 секунды (30.01.2012 - 14:05) veolancer написал(а):
Цитата (bob marley @ 30.01.2012 - 10:54)
Зачем писать так?измени условие просто да и все!

В смысле?

Спустя 3 минуты, 30 секунд (30.01.2012 - 14:08) veolancer написал(а):
Скажу проще -> Мне нужно сделать форму и обработчик в одном файле а не в 2х

Спустя 1 минута, 48 секунд (30.01.2012 - 14:10) bob marley написал(а):
hamado
зачем ты пишешь:
если есть г.массив,то пустота,а если нет код!
нельзя сделать если нет г.массива,то код?
я конечно не знаю противоположного isset(), и пишу так if($_POST == '') не знаю верно это или нет!
Покажи переменную $query_rub!

Спустя 4 минуты, 41 секунда (30.01.2012 - 14:15) inpost написал(а):
bob marley
Отрицания условия - восклицательный знак.
if(!isset())

hamado
Накидал, молодец. Осталось заполнить оба условия. Только в чём конкретно проблема?
Кстати, для вывода формы не надо писать else. wink.gif

Спустя 1 минута, 56 секунд (30.01.2012 - 14:17) nugle написал(а):
bob marley
Цитата
я конечно не знаю противоположного isset(), и пишу так if($_POST == '') не знаю верно это или нет!

if(empty($_POST['ta']))

hamado,
я бы проверял не пустоту пост данных, а нажатие кнопки

Спустя 1 минута, 33 секунды (30.01.2012 - 14:18) bob marley написал(а):
hamado
inpost прав.можно просто если нет г.массива то остановить выполнение скрипта exit(); к примеру.А форму за <?php ?>
Вы же об этом,Стас?

Спустя 1 минута, 23 секунды (30.01.2012 - 14:20) inpost написал(а):
nugle
Админка? Не вопрос, а если паблик... подделки данных вызовут ошибки.

bob marley
Никаких exit smile.gif
Я не люблю сочинять чего-то от себя. Пусть человек напишет скрипт, сделает всё, а уже потом, если будут проблемы, и разберём ошибки. Мне так удобнее.

Спустя 4 минуты, 9 секунд (30.01.2012 - 14:24) bob marley написал(а):
inpost
ладно,пусть без меня ошибки делает=Ъ
А то сейчас на подсказываю всякой фигни biggrin.gif
Меня ещё потом как обычно во всех грехах своих винить будут biggrin.gif

Спустя 6 часов, 28 минут, 3 секунды (30.01.2012 - 20:52) veolancer написал(а):
bob marley inpost

Скрипт примерно будет выглядеть так(просто вы не до поняли)

<?php

#По идее можно иссет не указывать, от в любом случае вернёт или фолс или труе(если я конечно прав)
if($_POST){
#Здесь код чтоб добавить картинку в базу
}else{
#А здесь если вернётся фолс, то выводить форму
}

?>



Так примерно?

Вопрос в том как мне вывести форму чтобы в ней цыкл работал для вывода рубрик?

Спустя 4 минуты, 54 секунды (30.01.2012 - 20:57) veolancer написал(а):
bob marley
Ты хотел $query_rub увидеть


<?php

#Выборка категорий картинок
$query_rub = mysql_query("
SELECT *
FROM `rub`
ORDER BY `title`"
)
or die(mysql_error());


?>

Спустя 6 минут, 25 секунд (30.01.2012 - 21:03) inpost написал(а):
hamado
Не понял я тебя. Увы.
Потому что ты показываешь отрывок кода, который по своей природе правильный частично, но хочешь где-то там в глубине души нечто иное, которое не объясняешь.

Если у тебя не 2, а 3 варианта, то делай разные условия.

Спустя 12 минут, 39 секунд (30.01.2012 - 21:16) veolancer написал(а):
inpost Окай, весь код страницы брошу

<?php

#Показ всех ошибок в php документе
error_reporting(E_ALL);

#Подключаем файл конфигураций
include './includes/config.php';

#Подключаемся к БД
include './includes/db.php';

#Авторизация
include './includes/lock.php';

#Выборка категорий картинок
$query_rub = mysql_query("
SELECT *
FROM `rub`
ORDER BY `title`"
)
or die(mysql_error());

if(isset($_POST)){
#Перевод из массива POST в переменную
if (!empty($_POST['rub'])) $rub = $_POST['rub'];
if (!empty($_POST['title'])) $title = $_POST['title'];
if (!empty($_POST['preview'])) $preview = $_POST['preview'];
if (!empty($_POST['img'])) $img = $_POST['img'];
}

?>
<!DOCTYPE HTML>
<
html>
<
head>
<
title></title>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<
link href="./style.css" rel="stylesheet" type="text/css">
<
link rel="icon" href="./favicon.ico" type="image/x-icon">
<
link rel="shortcut icon" href="./favicon.ico" type="image/x-icon">
</
head>
<
body>

<
div id="wrapper">
<?php include './includes/blocks/header.php'; ?>
<div id="content">
<?php include './includes/blocks/left.php'; ?>
<div id="right">
<?php

if(isset($_POST)){
#Здесь будет код добавления в БД
}else{
echo '
<form method="post" action="">
<p>Категория<br>
<select name="rub" id="rub">'
;
if(mysql_num_rows($query_rub) > 0){
while($row_rub = mysql_fetch_assoc($query_rub)){
echo '<option value="'. (int)$row_rub['id'] .'">'. htmlspecialchars($row_rub['title']) .'</option>';
}
}

echo '</select>
</p>
<p>Название(Теги)<br><input type="text" align="left" size="50" name="title" id="title"></p>
<p>Превью<br><input type="text" align="left" size="50" name="preview" id="preview"></p>
<p>Картинка<br><input type="text" align="left" size="50" name="img" id="img"></p>
<input type="submit" value="Добавить">
</form>'
;
}

?>

</div>
<
div class="clear"></div>
</
div>
<?php include './includes/blocks/footer.php'; ?>
</div>

</
body>
</
html>



Спустя 8 минут, 10 секунд (30.01.2012 - 21:24) nugle написал(а):
Если я правильно понял, то:
<?php

#Показ всех ошибок в php документе
error_reporting(E_ALL);

#Подключаем файл конфигураций
include './includes/config.php';

#Подключаемся к БД
include './includes/db.php';

#Авторизация
include './includes/lock.php';

#Выборка категорий картинок
$query_rub = mysql_query("
SELECT *
FROM `rub`
ORDER BY `title`"
)
or die(mysql_error());


#Перевод из массива POST в переменную

$rub = !empty($_POST['rub']) ? $_POST['rub'] : null;
$title = !empty($_POST['title']) ? $_POST['title'] : null;
$preview = !empty($_POST['preview']) ? $_POST['preview'] : null;
$img = !empty($_POST['img']) ? $_POST['img'] : null;

?>
<!DOCTYPE HTML>
<
html>
<
head>
<
title></title>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<
link href="./style.css" rel="stylesheet" type="text/css">
<
link rel="icon" href="./favicon.ico" type="image/x-icon">
<
link rel="shortcut icon" href="./favicon.ico" type="image/x-icon">
</
head>
<
body>

<
div id="wrapper">
<?php include './includes/blocks/header.php'; ?>
<div id="content">
<?php include './includes/blocks/left.php'; ?>
<div id="right">
<?php

if(isset($_POST['sub'])){
$query_rub = mysql_query("
SELECT *
FROM `rub`
ORDER BY `title`"
)
or die(mysql_error());
}else{
echo '
<form method="post" action="">
<p>Категория<br>
<select name="rub" id="rub">'
;
if(mysql_num_rows($query_rub) > 0){
while($row_rub = mysql_fetch_assoc($query_rub)){
echo '<option value="'. (int)$row_rub['id'] .'">'. htmlspecialchars($row_rub['title']) .'</option>';
}
}

echo '</select>
</p>
<p>Название(Теги)<br><input type="text" align="left" size="50" name="title" id="title"></p>
<p>Превью<br><input type="text" align="left" size="50" name="preview" id="preview"></p>
<p>Картинка<br><input type="text" align="left" size="50" name="img" id="img"></p>
<input type="submit" value="Добавить" name="sub">
</form>'
;
}

?>

</div>
<
div class="clear"></div>
</
div>
<?php include './includes/blocks/footer.php'; ?>
</div>

</
body>
</
html>

Спустя 9 минут, 30 секунд (30.01.2012 - 21:33) veolancer написал(а):
Цитата (hamado @ 30.01.2012 - 18:16)
$rub = !empty($_POST['rub']) ? $_POST['rub'] : null;

Точно ж можно так сделать, что то из головы вылетело, но только чуть изменить
$rub = !empty($_POST['rub']) ? $_POST['rub'] : ''; (null убрать, от не нужен, т.к. иначе сделать пустоту, тобишь ничего не делать. Так вроди правельней)

Цитата (hamado @ 30.01.2012 - 18:16)
if(isset($_POST['sub'])){

А что за sub ?

Спустя 9 минут, 20 секунд (30.01.2012 - 21:43) veolancer написал(а):
Можно же указать заместо этого
Цитата (nugle @ 30.01.2012 - 18:24)
if(isset($_POST['sub'])){

Вот это
Цитата
if(isset($rub, $title, $preview, $img)){


unsure.gif

Спустя 2 минуты, 25 секунд (30.01.2012 - 21:45) veolancer написал(а):
Опять же форма всё ровно не выводиться(

Спустя 3 минуты, 32 секунды (30.01.2012 - 21:49) nugle написал(а):
Цитата
А что за sub ?

<input type="submit" value="Добавить" name="sub">
Смотришь нажата ли кнопка

Цитата
Опять же форма всё ровно не выводиться(

это
if(isset($_POST['sub'])){
$query_rub = mysql_query("
SELECT *
FROM `rub`
ORDER BY `title`"
)
or die(mysql_error());
}else{
echo '
<form method="post" action="">
<p>Категория<br>
<select name="rub" id="rub">'
;
if(mysql_num_rows($query_rub) > 0){
while($row_rub = mysql_fetch_assoc($query_rub)){
echo '<option value="'. (int)$row_rub['id'] .'">'. htmlspecialchars($row_rub['title']) .'</option>';
}
}

echo '</select>
</p>
<p>Название(Теги)<br><input type="text" align="left" size="50" name="title" id="title"></p>
<p>Превью<br><input type="text" align="left" size="50" name="preview" id="preview"></p>
<p>Картинка<br><input type="text" align="left" size="50" name="img" id="img"></p>
<input type="submit" value="Добавить" name="sub">
</form>'
;
}

поменяй на
if(isset($_POST['sub'])){
$query_rub = mysql_query("
SELECT *
FROM `rub`
ORDER BY `title`"
)
or die(mysql_error());
}
echo '
<form method="post" action="">
<p>Категория<br>
<select name="rub" id="rub">'
;
if(mysql_num_rows($query_rub) > 0)
while($row_rub = mysql_fetch_assoc($query_rub))
echo '<option value="'. (int)$row_rub['id'] .'">'. htmlspecialchars($row_rub['title']) .'</option>';
echo '</select>
</p>
<p>Название(Теги)<br><input type="text" align="left" size="50" name="title" id="title"></p>
<p>Превью<br><input type="text" align="left" size="50" name="preview" id="preview"></p>
<p>Картинка<br><input type="text" align="left" size="50" name="img" id="img"></p>
<input type="submit" value="Добавить" name="sub">
</form>'
;

Спустя 7 минут, 49 секунд (30.01.2012 - 21:56) veolancer написал(а):
Цитата (hamado @ 30.01.2012 - 18:45)
это

Цитата (hamado @ 30.01.2012 - 18:45)
поменяй на


А в чём отличие? То что скобки убрал чтоли

Спустя 2 минуты, 34 секунды (30.01.2012 - 21:59) inpost написал(а):
Вообще это делается так, без условий ELSE.
<?php
if(isset($_POST['sub']))
{
// действие по нажатию на кнопку
header("Location: url");
}
?>
<form>
</
form>

Спустя 1 минута, 37 секунд (30.01.2012 - 22:01) nugle написал(а):
ты попробовал?

Спустя 3 минуты, 37 секунд (30.01.2012 - 22:04) veolancer написал(а):
inpost

тоесть после
Цитата (hamado @ 30.01.2012 - 18:56)
header("Location: url");
Я указываю
что нужно сделать?

Спустя 1 минута, 21 секунда (30.01.2012 - 22:06) nugle написал(а):
я же дал тебе готовый код, только вставить тебе осталось

Спустя 27 секунд (30.01.2012 - 22:06) inpost написал(а):
hamado
Почему после него ты должен что-то указывать? Что вообще за функция такая? smile.gif

Спустя 1 минута, 55 секунд (30.01.2012 - 22:08) veolancer написал(а):
Цитата (inpost @ 30.01.2012 - 18:59)
Вообще это делается так, без условий ELSE.
<?php
if(isset($_POST['sub']))
{
// действие по нажатию на кнопку
header("Location: url");
}
?>
<form>
</
form>

Так всё выводиться, остальсь проверить на добавление)

Спустя 8 минут, 7 секунд (30.01.2012 - 22:16) veolancer написал(а):
А как правильно занести в базу данные с учётом защиты от иньекция и т.п. пакастей?

примерно

<?php

mysql_query("INSERT INTO pic (`rub`, `title`, `preview`, `img`) VALUES ($rub, $title, $preview, $img));


Я как то раз делат так, и у меня возникали проблемы по этому.

Если отфильтровки делать типа int() htmlspesialchars()Б то они на вывод вроди. А если mysql_real_escape_string() тоже не совсем хорошо

Спустя 6 минут, 22 секунды (30.01.2012 - 22:22) nugle написал(а):
Цитата
int()

когда успел такую функцию придумать?
дальше тебе сюда
http://phpforum.su/index.php?showtopic=21213
а почему
mysql_real_escape_string() тоже не совсем хорошо?

Спустя 3 минуты, 38 секунд (30.01.2012 - 22:26) veolancer написал(а):
Цитата (hamado @ 30.01.2012 - 19:16)
int()
Имею ввиду на отсев числа.


Цитата (hamado @ 30.01.2012 - 19:16)
а почему
mysql_real_escape_string() тоже не совсем хорошо?

В прошлый раз у меня после занесения инфы в базу добавлялся гиганский пробел в начало каждой строки.

Делал по уроку ирбис, в разделе исправления попова вроди
http://irbis-team.com/15/10/4

Спустя 2 минуты, 59 секунд (30.01.2012 - 22:29) nugle написал(а):
hamado
Цитата
В прошлый раз у меня после занесения инфы в базу добавлялся гиганский пробел в начало каждой строки.

скорее всего это было связано с тем. что в переменной были пробелы. обрезай с помощью trim

Спустя 3 минуты, 3 секунды (30.01.2012 - 22:32) Игорь_Vasinsky написал(а):
Цитата
int()

может всё же

(int)


или уж (но медленнее)

intval()

Спустя 1 минута, 32 секунды (30.01.2012 - 22:34) veolancer написал(а):
Тьфу блин не так написал, вот (int) biggrin.gif

Да да я тока вспомнил

Спустя 1 минута, 5 секунд (30.01.2012 - 22:35) veolancer написал(а):
Цитата (hamado @ 30.01.2012 - 19:26)
обрезай с помощью trim

А где её прописывать в коде?

Спустя 1 минута, 52 секунды (30.01.2012 - 22:37) Игорь_Vasinsky написал(а):
Цитата
hamado
Цитата
В прошлый раз у меня после занесения инфы в базу добавлялся гиганский пробел в начало каждой строки.

скорее всего это было связано с тем. что в переменной были пробелы. обрезай с помощью trim

совершенно согласен.

mysql_real_escape_string(trim($_POST['any_key']));


или можно ко всему массиву $_POST (если не критично)

array_map("trim", $_POST);

Спустя 4 минуты, 25 секунд (30.01.2012 - 22:41) Игорь_Vasinsky написал(а):
вообще смотри - можно функцию "обёртку" написать

function safe($var)
{
return mysql_real_escape_string(trim($var));
}


использовать так

safe($_POST['any_key']);


или же всё скопом

$_POST = array_map("safe", $_POST);

Спустя 24 минуты, 2 секунды (30.01.2012 - 23:05) veolancer написал(а):
Игорь_Vasinsky Блин я с функциями не умею работать, как то на третьи сутки дошёл до функций, смотрел уроки Специалист, и меня вырубило. Надо восстанавливать и заново просматривать это. Вообще сколько не видел, функции удобная "вещь", надо только понят, а желание уж более чем придостаточно smile.gif Видел как то раз CLASS ohmy.gif Как включил, так и выключил biggrin.gif

Спустя 9 минут, 53 секунды (30.01.2012 - 23:15) Игорь_Vasinsky написал(а):
на классы пока не отвлекайся, когда поймёшь зачем они нужны - тогда и изучай как сними работать и как их писать.. (открою секрет - класс - это не просто класс wink.gif )

Спустя 7 минут, 19 секунд (30.01.2012 - 23:22) veolancer написал(а):
Цитата (hamado @ 30.01.2012 - 20:05)
(открою секрет - класс - это не просто класс)

biggrin.gif

Спустя 12 минут, 12 секунд (30.01.2012 - 23:34) veolancer написал(а):
А так как переменная rub числовая то её фильтровать так (int)$rub заместо mysql_real_escape_string unsure.gif
Быстрый ответ:

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