151

Re: Подскажите с РНР, учу по книжке...

Здравствуйте, уважаемый Hanut...
Вопрос вроде бы элементарный, но ошибку никак не могу найти...
1. Новости, например, выводятся по ссылке http://.../index.php?action=e_new&id_news=52
2. Пытаюсь сделать добавление комментариев, комментарии в базу заносятся, но с 0 идентификатором... Никак не могу указать скрытому полю чёткое Get['id_news'], код проверки кода не ругается, в базу заносится, но с 0:

function is_valid_id_comm($id_comm){
    if(!$id_comm || empty ($id_comm)){
        $_GET['$err']='Не проходит переменная ID_COMMENT';
        echo "<meta http-equiv='refresh' content='3;URL=$_SERVER[HTTP_REFERER]'>";exit ("<div align='center'><div>Отсутствует переменная ID_COMMENT</div></div>");
        return false;
    }
    return true;
}

Если сталкивались с данным, может подскажите, куда думать?..
Спасибо...

152 (изменено: DmitryV, 2011-01-26 22:03:47)

Re: Подскажите с РНР, учу по книжке...

В форме на странице сделайте поле невидимое с именем id_news например:

<input type="hidden" name="id_news" value="<?php echo $_GET['id_news']; ?>"

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

153

Re: Подскажите с РНР, учу по книжке...

Freeware сказал:

Никак не могу указать скрытому полю чёткое Get['id_news']

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

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

Пустое значение в параметре action передаст текущий урл вместе с GET значениями.

154

Re: Подскажите с РНР, учу по книжке...

Здравствуйте, уважаемый Hanut...
Не выходит передать переменную, у меня получается, что функция вывода статьи выводит статью и ещё подключает файл вывода комментов, который подключает файл формы, в файле формы снова указана функция (обработки) которая использует другой файл... И вот я думаю, что из-за этой цепочки файлов, форма не определяет переменную...
И вот не пойму, почему форма получает 0 ?.. (Или, почему база прописывает себе ноль?.. Может с полями где-то косяк?..) Хотя выводятся (если прописать номер вручную) все комменты правильно...
Спасибо...

155

Re: Подскажите с РНР, учу по книжке...

Поробуйте отследить передачу переменной выведя для отладки её в скрипте который её принимает через

echo $переменная_имя;

Просто и понятно будет приходит она или нет из формы если нет смотрите что не так.
Так же очень удобна среда разработки PHP Development Tools + отладчик к ней например Xdebug.
Статья и рускоязычный сайт: http://www.xdebug.ru/otladka-php-prilozhenij-s-xdebug

156

Re: Подскажите с РНР, учу по книжке...

А, ну вот нашёл прописные истины:

(http://info-pages.com.ua/e/101)
Переменные в PHP существуют только на время выполнения пользователем одного запроса к серверу. Это означает, что когда пользователь заходит на главную страничку сайта, а с нее переходит на внутреннюю страничку, то все переменные. которые были созданы при создании главной странички не передаются дальше, а при новом запросе создаются заново.

Следовательно, у меня возник вопрос, как правильно по моей цепочке подключаемых файлов (один из них форма ХТМЛ) передать значение $_GET[id_news];, например?.. Может его вписать в базу как-то и из неё извлечь до формы?.. А потом сделать выборку и вывод значения в форму?.. Или это трудоёмкий процесс?..

На всякий случай цепочка: функция вывода статьи -- в неё подключается файл вывода комментов -- который обрабатывается другим (1) файлом -- в файл вывода комментов подключается файл формы в которой скрытое поле -- и форма обрабатывается другим файлом (2) и часть функций (проверка на валидность) берёт из (1)...((( Ого...))) Как всё запутано...)))

157

Re: Подскажите с РНР, учу по книжке...

Могу ли я таким образом передать переменную от файла к файлу?..

if (!empty($_GET["id"])) {
    $_GET["id"]=$_GET["id"];
    }

158

Re: Подскажите с РНР, учу по книжке...

Давайте с самого начала.

Урл страницы новостей такой: http://.../index.php?action=e_new&id_news=52
На странице новостей расположена форма комментариев, которая записывает комментарии в БД.
Необходимо передать скрипту добавления комментария идентификатор статьи из урла id_news=52.

Если все правиьлно, то покажите тег <form> формы комментариев.

159

Re: Подскажите с РНР, учу по книжке...

Вот он:
<form action="index.php?action=commbook" method="POST">
(через функцию commbook, которая подключает файл обработки post.php)...

160

Re: Подскажите с РНР, учу по книжке...

Внутрь тега <form> добавьте строку:

<form action="index.php?action=commbook" method="POST">
  <input type="hidden" name="id_news" value="<?php echo (isset($_GET['id_news'])) ? $_GET['id_news'] : ''; ?>" />

И в скрипте index.php?action=commbook проверяйте наличие переменной в глобальном массиве $_POST['id_news'].

161

Re: Подскажите с РНР, учу по книжке...

Ничего что-то не получается у меня...
Если ставлю цифры вместо <?php echo (isset($_GET['id_news'])) ? $_GET['id_news'] : ''; ?>, то работает, а так нет...
Если пробую вывести echo $_POST['num'], то выводит всю эту строку буквами, то есть значение не получается...
Вопрос: Почему в форме ХТМЛ не производится замена команд ПХП на цифру (значение)?..

162 (изменено: DmitryV, 2011-02-06 17:56:21)

Re: Подскажите с РНР, учу по книжке...

Вопрос: Почему в форме ХТМЛ не производится замена команд ПХП на цифру (значение)?..

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

Внимательно изучите код формы и метод которым Вы из формы передаете данные, если Вы используете метод GET то переменные доступны через массив $_GET а если POST то через $_POST также есть общий массив который содержит все передаваемые данные $_REQUEST - массив содержащий внутри себя массивы $_GET, $_POST и $_COOKIE

163

Re: Подскажите с РНР, учу по книжке...

Вот код формы:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Передача переменных методом POST</title>
</head>
<body>
<hr>
<form action="index.php?action=commbook" method="POST">
<table background-color:#F5F5DC; width="75%" border="0" summary="" align="center">
    <tr>
        <td><span class="p">Nick:</span></td>
        <td align="center"><input type="text" name="nick" size="30" maxlength="256"></td>
        <td><span class="p">E-mail:</span></td>
        <td align="right"><input type="text" name="email" size="30" maxlength="256"></td>
    </tr>
    <tr>
        <td><span class="p">WWW:</span></td>
        <td align="center"><input type="text" name="www" size="30" maxlength="256"></td>
        <td><span class="p">ICQ:</span></td>
        <td align="right"><input type="text" name="icq" size="30" maxlength="256"></td>
    <tr>    
        <td align="center" colspan="4">        
        <textarea name="message" cols="60" rows="15" class="gb"></textarea>        
        </td>
    </tr>
    <tr>
        <td align="center" colspan="4">
        <input type="hidden" name="num" value="<?php echo (isset($_GET['id'])) ? $_GET['id'] : ''; ?>" >
        <input type="submit" value="Оставить заметку">
        <input type="reset" value="Сброс">        
        </td>
        
    </tr>
</table>
</form>
</body>
</html>

164 (изменено: DmitryV, 2011-02-06 18:30:45)

Re: Подскажите с РНР, учу по книжке...

Надеюсь имя файла у вас с php расширением а не html, и покажите ссылку по какой этот файл открываеться в ней есть передача методом GET переменных?

в эту строку у Вас от куда передаються переменные?

<?php echo (isset($_GET['id'])) ? $_GET['id'] : ''; ?>

165

Re: Подскажите с РНР, учу по книжке...

Расширение стоит ХТМЛ, блин, точно... Сейчас исправил, но открывается форма не по ссылке, а через : $tpl['form']=file_get_contents('comment/templates/form.php');
Запутался тут совсем... У меня она пару раз работала и с расширением ХТМЛ, но потом я что-то подправил, а что сам забыл...)))

166 (изменено: DmitryV, 2011-02-06 21:20:59)

Re: Подскажите с РНР, учу по книжке...

Изучите пожалуйста статьи http://www.ru-coding.com/php_25.php и http://phpway.h1.ru/u_passing.shtml если не сможете понять напишите, если Вы изучаете берите пошагово и делайте например так сперва добецйтесь чтобы у вас переменные приходили в ваш скрипт проверить это можно поместив с скрипт приема строки:

echo имя_вашей_переменной; // в зависимости от метода это будет массив $_GET['имя переменной']
                           // или $_POST['имя переменной'] или вообще все данные 
                           //$_REQUEST['имя переменной']

167

Re: Подскажите с РНР, учу по книжке...

В том-то и дело, что переменная $_GET['id'] не доходит до формы... Из формы все остальные переменные уходят нормально (которые вносятся в поля)... А как передать $_GET через file_get_contents для формы?..
Нашёл термин контексты потоковых операций, но ещё не сталкивался с такими способами...
Поэтому, даже не знаю, как записать... В смысле, из-за отсутствия знаний, в ход идёт метод научного тыка...)))

168

Re: Подскажите с РНР, учу по книжке...

Freeware сказал:

В том-то и дело, что переменная $_GET['id'] не доходит до формы..

Тогда попробуйте так:

$tpl['form']=file_get_contents('comment/templates/form.php?id=' . $_GET['id']);

169

Re: Подскажите с РНР, учу по книжке...

Не получается, думаю, потому что $_GET['id']=$_GET['id_news'] уже есть на этой странице(в файле comment.php), по $_GET['id_news'] мы пришли на эту страницу новости (e_new&id_news=".$_GET['id_news'].") и вывели новость из базы, а $_GET['id'] в файле comment.php, который по ней адекватно выводит несколько новостей из базы сюда же...
Но вот, когда подключается форма, форма эту переменную уже не видит... Т.е. форма выводится внизу страницы, id которой уже равен $_GET['id']=$_GET['id_news']

170

Re: Подскажите с РНР, учу по книжке...

Freeware сказал:

Не получается, думаю, потому что $_GET['id']=$_GET['id_news'] уже есть на этой странице(в файле comment.php)

Я не могу разобраться. Если мешает $_GET['id']=$_GET['id_news'], то не делайте так, заведите другую переменную.

171

Re: Подскажите с РНР, учу по книжке...

Здравствуйте, уважаемые Hanut и DmitryV...
При попытке создания голосования возникла необходимость идентифицировать, голосовал чел, или нет, не пойму, можно ли использовать Куки, если голосование находится в блоке и страница не переключается при нажатии кнопки, а просто перегружается?..
Или всё-таки придётся перейти на другую сек на 5, с надписью подождите... Чтобы потом вернуться назад и уведить index.php снова, но уже с результатами?..
Спасибо...

172

Re: Подскажите с РНР, учу по книжке...

Freeware сказал:

можно ли использовать Куки

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

173

Re: Подскажите с РНР, учу по книжке...

Здравствуйте, уважаемые...)))
с наступающими праздниками Вас!..

Правильна ли следующая запись (не работает):

    if (isset($_COOKIE["poll_voted_$poll"])){
    /* То выводим форму голосования. */       
        include_once('golos2/vote_form.php');
    }
    else{
        include_once('golos2/vote_tally.php');           
    }

Ощущение, что переменная не доходит сюда... И если включить отображение всех ошибок, ругается на переменную внутри куки... Можно ли как-то по-другому записать данное?.. Переменная $poll просто даёт номер темы голосования, можно ли внутри куки передавать методом $_GET, например?..

Спасибо...

174

Re: Подскажите с РНР, учу по книжке...

Freeware сказал:

Переменная $poll просто даёт номер темы голосования

Попробуйте так:

$_COOKIE["poll_voted_" . $poll]

175

Re: Подскажите с РНР, учу по книжке...

Здравствуйте, уважаемые Hanut и DmitryV...
Подскажите пожалуйста по вопросу:

Причина: ЯваСкрипт для визуального эффекта