[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: я вообще запутался
Зарегестрирований
Предусловие: у меня есть как-бе форум где есть темы при клике на заглавие темы ссылка приобретает вид ../forum/index.php?idcat=1 и на этой странице происходит магия Мускула Заглавие Текст и все Комментарии что хранятся в БД forum в таблице comments где в самом запросе если оно находит в таблице comments за тем в столбце idtf правильный ИД (тот что на странице отображается ?idcat=1) то выводятся комментарии.
Я пошел дальше начал писать форму для оставления комментариев выглядит она так:

<form method="post" action="../forum/index.php">

<
span>Оставить коммент</span>

<
p><textarea name="coment" wrap="virtual" id="ffcomment" cols="68" rows="8"></textarea>

<
input type="submit" name="ok" value="Отправить" id="oki"/>
</
p>
</
form>

ВОТ обработка запроса:

 <?
if (isset ($_POST['coment'])) {
$_POST['coment'] == $coment;
}
mysql_query("INSERT INTO `comments` (`idtemi`,`koment`) VALUES (".$idcat.", ".$coment.")",$bdf or die(mysql_error()));
}
?>


Но это дело гиблое нечего не происходит просто происходит переадресация на главную и в БД нечего не появляется
Так как мне сделать так что бы всё правильно вставлялось в БД



Спустя 2 минуты, 11 секунд (28.12.2010 - 21:07) sharki написал(а):
Ты неправильное имя передал или присвоил
сравни $_POST['coment'] и name="comm"

И еще запрос у тебя кривой совсем, старайся так писать



<?
if (isset ($_POST['coment'])) {
$coment = $_POST['coment'] ;


$sql = "INSERT INTO `comments` (`idtemi`,`koment`)
VALUES ('"
.$idcat."', '".$coment."')";
$result = mysql_query($sql) or die(mysql_error());
}
?>

Спустя 7 минут, 43 секунды (28.12.2010 - 21:15) sharki написал(а):
Чет я сам наделал ошибок, вроде всё исправил

Спустя 9 минут, 16 секунд (28.12.2010 - 21:24) quickxyan написал(а):
а я вообще не понимаю зачем эта строчка?


$_POST['coment'] == $coment;


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

Спустя 3 минуты, 36 секунд (28.12.2010 - 21:27) quickxyan написал(а):
теперь понял когда пересмотрел код, но все равно что-то немогу додуть зачем это)

ты проверяешь определена ли переменная и если да, то ты ей присваиваешь ее же, а потом даже не используешь. или я я чего не понимаю или .... smile.gif

Спустя 2 минуты, 56 секунд (28.12.2010 - 21:30) quickxyan написал(а):
$bdf - что это за переменная и почему она стоит там где стоит?

Спустя 3 минуты, 53 секунды (28.12.2010 - 21:34) amazing написал(а):

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

Наверное так Автор хотел сделать, а дальше уже запрос.

Спустя 5 минут, 50 секунд (28.12.2010 - 21:40) quickxyan написал(а):
все равно как-то глупо) если переменная будет тут $_POST['coment'], то она точно уже будет и тут $coment


Спустя 23 минуты, 40 секунд (28.12.2010 - 22:04) amazing написал(а):
Не факт, это уже от конфигурации сервера зависит. Но в этом случае она там я думаю уже будет. Тогда запрос внутрь if засунуть. Тогда хоть смысл появится smile.gif

Спустя 6 минут, 50 секунд (28.12.2010 - 22:11) quickxyan написал(а):
я себе так это представляю


<?
if (!empty($coment)
{
$sql = "INSERT INTO `comments` (`idtemi`,`koment`) VALUES ('".$idcat."', '".$coment."')";
$result = mysql_query($sql) or die(mysql_error());
}
?>



Спустя 3 минуты, 10 секунд (28.12.2010 - 22:14) hellmin написал(а):
Цитата
на этой странице происходит магия Мускула Заглавие Текст и все Комментарии

Следовательно комментарии как-то попадали в базу.
Используется уже готовый движок форума или самописный?

Спустя 5 минут, 52 секунды (28.12.2010 - 22:20) inpost написал(а):
quickxyan
Мою подпись и последний урок (id6 or 7), там про register_globals =)

Зарегестрирований
Все правильно в последнем запросе quickxyan, кроме: необходима инициализация, как была у тебя.
Сначала все переменные инициализируй ($id = $_POST['id']) и т.д, а потом:
if(!empty($comment))
{
$sql = "INSERT INTO `comments` (`idtemi`,`koment`) VALUES ('".$id."', '".$comment."')";
$result = mysql_query($sql) or die(mysql_error());
}

Спустя 4 минуты, 8 секунд (28.12.2010 - 22:24) quickxyan написал(а):
ууууу) да мы ж уже это обсуждали - работает и без инициализации, я конечно понимаю, что лучше самому сделать чем возлагать надежды на php, но все равно хочу делать так smile.gif

Спустя 2 минуты, 34 секунды (28.12.2010 - 22:26) inpost написал(а):
quickxyan
Что значит работает без инициализации? На моём хостинге выключен регистер_глобалс + попытка его изменить карается 500 ошибкой.
А с выключенным - не работает.
UPDATE: и как говорит твин: скрипт не должен зависить от настроек сервера!

Спустя 3 минуты, 50 секунд (28.12.2010 - 22:30) quickxyan написал(а):
ясно, но где тогда возьмется значение в $_POST если лобальные переменные отключены?

Спустя 2 минуты (28.12.2010 - 22:32) inpost написал(а):
Register_globals это именно связь между $_POST и обычной переменной, я писал у себя =)
Если они отключены, то $_POST['id'] & $id - разные переменные, а если включены - то в начале скрипта проходит: $id = $_POST['id'], и они становятся равными.
Поэтому, для того, чтобы везде работало, надо обращаться непосредственно к $_POST & $_GET, или же самому вручную инициализировать их.

Спустя 1 минута, 59 секунд (28.12.2010 - 22:34) quickxyan написал(а):
эх, ясно - вобщем я валянок и еще упертый)

Спустя 10 часов, 16 минут, 5 секунд (29.12.2010 - 08:50) Зарегестрирований написал(а):
hellmin обижаеш сам писал для себя делаю на счет того что они туда попадали - да но через ПХПМАЙАДМИН
2. попробовал зделать как было написано више НО тот же результат страница просто переадресовуется на главную а в базу нечего не вставляется
Вот есче интерестний факт в коде прописано
or die(mesql_error())

Ошибка: mysql_query() expects parameter 2 to be resource, boolean given
Я уже и пробовал подставлять БД
(INSERT INTO `forum`.`comments`)

Непомогает

Спустя 3 минуты, 9 секунд (29.12.2010 - 08:53) Зарегестрирований написал(а):
По ходу второй параметр не заполняется Но Как если есть форма МЕТОД ПОСТ и имена правильно написаны м вроде фрагмент кода которий обрабативает все это дело правильный хз

Спустя 45 минут, 35 секунд (29.12.2010 - 09:39) jumper_dev написал(а):
Можно еще и так =)

$coment = isset($_POST['comment']) ? $_POST['comment'] : null;
if(!empty($coment)) mysql_query("INSERT INTO `comments` (`idtemi`,`koment`) VALUES (".$idcat.", ".$coment.")",$bdf) or die(mysql_error());

Спустя 3 часа, 15 минут, 24 секунды (29.12.2010 - 12:54) hellmin написал(а):
Вот запрос... (я взял из ответа jumper_dev)
mysql_query("INSERT INTO `comments` (`idtemi`,`koment`) VALUES (".$idcat.", ".$coment.")",$bdf)

В нем всё хорошо(ну если все заранее прослешить и в базу записать в кавычках).
А вот если взять самое первое сообщение Зарегестрирований и посмотреть html код... Тут четко написано, перейти на страницу ../forum/index.php
<form method="post" action="../forum/index.php">

Следовательно переменная $idcat вообще отсутствует. И наверное по этому поводу выдается сообщение об ошибке.
Цитата
Ошибка: mysql_query() expects parameter 2 to be resource, boolean given

Либо переменную передавать через форму
<input type="hidden" name="idcat" value="$idcat">

Либо форма пусть переходит обратно на ту страницу с которой отправлены данные
<form method="post" action="">

Спустя 3 часа, 5 минут, 14 секунд (29.12.2010 - 16:00) Зарегестрирований написал(а):
Ладно нечего непомогает может копнуть выше нужно?
<tr>
<
td border="0" class="novosti">
<?
if (isset ($_GET['id']))
{
$idcat = $_GET['id'];

include '../bd.php';
$myrow = mysql_query("SELECT * FROM tema" ,$bdf);
$sqlrow = mysql_num_rows($myrow);

$fmasiv2 = mysql_query("SELECT * FROM tema WHERE id = $idcat" ,$bdf);
$fresult2 = mysql_fetch_assoc($fmasiv2);
?> <div class="ntitle"> <?print ('<p>'.$fresult2['title'].'<br></p>'); ?></div><?
?>
<div class="ntext"> <? print ('<p>'.$fresult2['text'].'<br></p>');?> </div> <?

$id = 0;
$myrow3 = mysql_query("SELECT * FROM comments WHERE idtemi = $idcat" ,$bdf);
$fkomentn = mysql_num_rows($myrow3);

while (++$id <= $fkomentn)
{

$fcomment = mysql_fetch_assoc($myrow3);

?> <div class="ncomment"> <? print ('<p>'.$fcomment['koment'].'<br></p>');?> </div> <?
}

?><div class="bfcomment" id="bfcomment" align="center">

<
form method="post" action="">

<
span>После ввода нажмите Отправить</span>

<
p><textarea name="comm" wrap="virtual" id="comm" cols="68" rows="8"></textarea>
<
input type="hidden" name="idsh" value="$idcat"/>

<
input type="submit" name="ok" value="Отправить" id="otpravitel"/>
</
p>
</
form>
</
div><?
$coment = $_POST['coment'];
$idsh = $_POST['idsh'];
if (!empty($coment)) {

mysql_query("INSERT INTO `comments` (`idtemi`,`koment`) VALUES (".$idsh.", ".$coment.")",$bdf);

}}
else {
include '../bd.php';
$myrow = mysql_query("SELECT * FROM tema" ,$bdf);
$sqlrow = mysql_num_rows($myrow);

$id = 0;

while (++$id <= $sqlrow)
{
$fmasiv = mysql_query("SELECT * FROM tema WHERE id = $id" ,$bdf);
$fresult = mysql_fetch_assoc($fmasiv);
?> <div class="ntitle"> <?echo "<p><a href=\"index.php?id={$fresult['id']}\">{$fresult['title']}</a></p>\n"; ?></div><?
?>
<div class="ntext"> <? print ('<p>'.$fresult['text'].'<br></p>');?> </div> <?
}
}

?>
</td>
</
tr>

У меня все работает кроме этой формы

Спустя 2 минуты, 43 секунды (29.12.2010 - 16:02) Зарегестрирований написал(а):
И кстате Слешить и обрабативать с помощию (mysql_escape_string) потом буду мне хоть бы движок накидать

Спустя 19 минут, 8 секунд (29.12.2010 - 16:21) hellmin написал(а):
<textarea name="comm" wrap="virtual" id="comm" cols="68" rows="8"></textarea>

Может тут ошибка? Должно быть $_POST['comm']
$coment = $_POST['coment'];

Спустя 37 минут, 20 секунд (29.12.2010 - 16:59) inpost написал(а):
hellmin
Тоже самое и с именем ID =((( Куда глаза только смотрят автора...

Зарегестрирований
Почитай про $_POST & $_GET в интернете. Кругом полно справочников, а ты такой мелочи не понимаешь...

Спустя 3 часа, 47 минут, 34 секунды (29.12.2010 - 20:46) Stell написал(а):
а нчего, что у тебя в форме экшн чтоит index.php, вот собственно он тебя и перебрасывает на главную сайта...
и вообще, если ты в одном файле рисуешь форму и пишешь обработчик, то экшн у тебя должен быть собственно сам файл, а в строке, где ты проверяешь существование переменной $_POST['comment'] вместо написанного должно быть:
if (isset($_POST['ok']))
{action}
else
{oops, error}


в общем код должен быть такой:
форма
<form method="post" action="[файл где находится обработчик]">

<span>
Оставить коммент</span>

<p><textarea
name="coment" wrap="virtual" id="ffcomment" cols="68" rows="8"></textarea>

<input
type="submit" name="ok" value="Отправить" id="oki"/>
</p>
</form>

далее по тексту обработчик:

if (isset ($_POST['ok'])) {
$_POST['coment'] == $coment;
}
твой запрос
}

ну или я чего-то недопонял в вопросе...

Спустя 2 часа, 38 минут, 50 секунд (29.12.2010 - 23:25) glock18 написал(а):
А ничего что строковые значения нужно в запросе в кавычки брать?

quickxyan
смирись, register_globals это не только некошерно, но и представляет собой одну большую дыру в твоем проекте.

Спустя 10 часов, 27 минут, 48 секунд (30.12.2010 - 09:53) Зарегестрирований написал(а):
Да спасибо за критику но в тексте сообщения опечатка сорри name="coment"
Я выдернул страницу с резервного хранилиша ИБО так наексперементировалса что запорол всю страницу а на старом стоит переменная name"comm"
Проверил ета переменная создаетса и она непустая проблема в запросе самом но какая сам не знаю
И не нада $idcat передаетса ИБО она на этой странице висит потому что без неё не пошлаб переменная ИД в ссылке и глобальная переменная $_POST['coment'] тоже есть а запроса нет sad.gif

Спустя 10 минут, 51 секунда (30.12.2010 - 10:04) hellmin написал(а):
Есть такая строка
mysql_query("INSERT INTO `comments` (`idtemi`,`koment`) VALUES (".$idsh.", ".$coment.")",$bdf);

Запиши ее так
$sql = "INSERT INTO `comments` (`idtemi`,`koment`) VALUES (".$idsh.", ".$coment.");";
echo $sql;
mysql_query($sql, $bdf);

То что покажет echo в студию, на размышление.

Спустя 1 час, 27 минут, 56 секунд (30.12.2010 - 11:32) Зарегестрирований написал(а):
Я подставил туда переменную $idcat вот код:
if (isset ($_POST['ok'])) {

$coment = $_POST['coment'];

$sql = "INSERT INTO `comments` (`idtemi`,`koment`) VALUES (".$idcat.", ".$coment.");";
echo $sql;
mysql_query($sql, $bdf);

}

А вот то что показует echo:

INSERT INTO `comments` (`idtemi`,`koment`) VALUES (1, erghthrhtrh45ht);

Спустя 1 минута, 10 секунд (30.12.2010 - 11:33) hellmin написал(а):
Ну а теперь с одинарными кавычками...
$sql = "INSERT INTO `comments` (`idtemi`,`koment`) VALUES (".$idcat.", '".$coment."');";

Спустя 25 минут, 55 секунд (30.12.2010 - 11:59) inpost написал(а):
hellmin
Я это ещё писал на первой странице... но автору по барабану.
В самом начале скрипта пишешь:
<?php error_reporting(E_ALL & ~E_NOTICE); ?>


Теперь саму вставку:
$result = mysql_query("INSERT INTO `comments` SET 
`idtemi`= "
.$idcat.",
`koment` = '"
.$coment."'
"
) or die(mysql_error());
if($result == true)
echo 'Запрос прошел успешно';
else
echo 'Запрос не прошел';


Результат сюда, или внимательно читаешь то, что тебе скрипт написал! На 99% он ответит, где у тебя была ошибка!

Спустя 6 часов, 52 минуты, 31 секунда (30.12.2010 - 18:51) Зарегестрирований написал(а):
Как убить переменную при обновлении страницы?

Спустя 4 минуты, 9 секунд (30.12.2010 - 18:55) kovaldm написал(а):
Какую переменную?

Спустя 11 минут, 39 секунд (30.12.2010 - 19:07) Зарегестрирований написал(а):
думаю что глобальную $_POST['coment'] и главное при обновлении страницы или уходе с неё

Спустя 15 минут, 56 секунд (30.12.2010 - 19:23) kovaldm написал(а):
Если тебе нужна защита от F5, то делай редирект после выполнения сценария.

Спустя 9 минут, 20 секунд (30.12.2010 - 19:32) inpost написал(а):
Зарегестрирований
В мою подпись, быстро (последняя ссылка - практика) =) Там про редирект и про структуру =)

Спустя 42 минуты, 10 секунд (30.12.2010 - 20:15) Зарегестрирований написал(а):
Я уже нашол в Гугле :P
Кому интерестно

function reload() {location = 'http://site.com'}; setTimeout('reload()', 0);


kovaldmСпасибо за идейку
Вы все супер! :D

Спустя 3 минуты, 43 секунды (30.12.2010 - 20:18) inpost написал(а):
Зарегестрирований
Ха, а если JS отключен? Зачем делать на JS то, что можно делать и без него?! =) При этом JS нагружает систему пользователя больше.

Спустя 34 минуты, 57 секунд (30.12.2010 - 20:53) Зарегестрирований написал(а):
Сначала вопрос а потом я свои 5 коп вставлю
А как на PHP?
Кстате ты чё Днепропетровске живеш?
----------------------------------------------
Вот разобрался но мне не подходит

Спустя 2 минуты, 9 секунд (30.12.2010 - 20:55) inpost написал(а):
Я уже 2 или 3 раза отправлял на мой сайт, а ты даже не соизволил глянуть... Вот скрин-шот, хотя бы его посмотри:
http://my.jetscreenshot.com/demo/20101230-sgrm-6kb

UPDATE: да, в Днепропетровске

Спустя 4 минуты, 17 секунд (30.12.2010 - 21:00) Зарегестрирований написал(а):
Уже посморел и там узнал что ты с Днепра
--------------------------------------------------
А где домен регистрировал?

Спустя 6 минут, 32 секунды (30.12.2010 - 21:06) inpost написал(а):
Зарегестрирований
Странно, ну да ладно =)
А регистрирую: prohosting.com.ua , мне он нравится =)

Спустя 1 час, 1 минута, 42 секунды (30.12.2010 - 22:08) Зарегестрирований написал(а):
Епть
Опять же столкнулса с проблемой: КОД
if (isset ($_GET['id']))
{
$idcat = $_GET['id'];

include '../bd.php';
$myrow = mysql_query("SELECT * FROM tema" ,$bdf);
$sqlrow = mysql_num_rows($myrow);

$fmasiv2 = mysql_query("SELECT * FROM tema WHERE id = $idcat" ,$bdf);
$fresult2 = mysql_fetch_assoc($fmasiv2);
?> <div class="ntitle"> <?print ('<p>'.$fresult2['title'].'<br></p>'); ?></div><?
?> <div
class="ntext"> <? print ('<p>'.$fresult2['text'].'<br></p>');?> </div> <?

$id = 0;
$myrow3 = mysql_query("SELECT * FROM comments WHERE idtemi = $idcat" ,$bdf);
$fkomentn = mysql_num_rows($myrow3);

while (++$id <= $fkomentn)
{

$fcomment = mysql_fetch_assoc($myrow3);

?> <div class="ncomment"> <? print ('<p>'.$fcomment['koment'].'<br></p>');?> </div> <?
}

у меня новости послу вставления их в базу выводятса КАРЯВА! по серединке както
Как мне заставить их выводится наоборот в запросе while

Спустя 6 минут, 56 секунд (30.12.2010 - 22:15) inpost написал(а):
ORDER BY `id` DESC

Можешь поискать в справочниках про сортировку =) ASC -прямо, DESC - в обратном порядке.

Спустя 10 часов, 22 минуты, 19 секунд (31.12.2010 - 08:37) Зарегестрирований написал(а):
Блин спасибо так давно учил что забыл )
К стате сча приступаю к написания странички allusers.php нфверно опять будут вопросы так-что далеко не уходите))))))))

Спустя 5 часов, 33 минуты, 44 секунды (31.12.2010 - 14:11) Dron19 написал(а):
Цитата (quickxyan @ 28.12.2010 - 18:30)
$bdf - что это за переменная и почему она стоит там где стоит?

это скорей всего идентификатор подключения бд

Спустя 5 минут, 25 секунд (31.12.2010 - 14:16) Зарегестрирований написал(а):
ну да ты имеещ ввиду почему bdf а не bd?
ЗЫ этот вопрос закрыт.
Быстрый ответ:

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