|
|
|
| Проблема такая: Если я делаю глобальной $page_id, запрос ее "не видит". Если $page_id вставляю непосредственно в функцию, то все нормально. Почему?
Другие же переменные, которые я получаю $_GET-методом, передаются (global $id,$offs_out)
И почему я не могу передать $page_id как аргумент функции? Тоже не работает.
<?php
$id = $_GET['id'] ? intval($_GET['id']) : false;
//$page_id = $_GET['page_id'] ? intval($_GET['page_id']) : false;
$offs_out = $_GET['offset'] ? intval($_GET['offset']) : false;
function offset($mod){
global $link,$id,$offs_out;
$page_id = $_GET['page_id'] ? intval($_GET['page_id']) : false;
$sql = "SELECT * FROM `texts` WHERE `id_mod` = " . $mod . " AND `page_id` = " . $page_id;
.....//работа функции...
}
//вызов функции
offset(11);
?>
|
| |
|
|
|
|
|
|
|
для: Лена
(31.01.2009 в 17:45)
| | приведенный текст не иллюстрирует ни один из вопросов.
В нем Вы не делаете $page_id глобальной.
И не пытаетесь передать её как аргумент. | |
|
|
|
|
|
|
|
для: Trianon
(31.01.2009 в 17:52)
| | >приведенный текст не иллюстрирует
Я показала код, когда все получается.
Иллюстрирую.
Делаем $page_id глобальной:
<?php
include("configs/dbopen.php");
$id = $_GET['id'] ? intval($_GET['id']) : false;
$page_id = $_GET['page_id'] ? intval($_GET['page_id']) : false;
$offs_out = $_GET['offset'] ? intval($_GET['offset']) : false;
function offset($mod){
global $link,$id,$offs_out,$page_id;
$sql = "SELECT * FROM `texts` WHERE `id_mod` = " . $mod . " AND `page_id` = " . $page_id;
//работа функции
}
//вызов функции
if($id){
offset(11);
}
|
Не работает. Пишет: Error in SELECT * FROM `texts` WHERE `id_mod` = 11 AND `page_id` = You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Если передавать $page_id как аргумент, получилось только что, поняла, в чем ошибка. | |
|
|
|
|
|
|
|
для: Лена
(31.01.2009 в 18:02)
| | попробуйте так:
<?
$sql = "SELECT * FROM `texts` WHERE `id_mod` = '" . $mod . "' AND `page_id` = '" . $page_id.'\'';
|
| |
|
|
|
|
|
|
|
для: Лена
(31.01.2009 в 18:02)
| | >$page_id = $_GET['page_id'] ? intval($_GET['page_id']) : false;
>Не работает. Пишет: Error in SELECT * FROM `texts` WHERE `id_mod` = 11 AND `page_id` = You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
это результат того, что false преобразуется к пустой строке в случае, когда get-аргумент не задан.
Ни с передачей параметров , ни с управлением областью видимости переменной это никак не связано.
Если Вы хотите по-другому сформировать запрос при отсутствии get-аргумента, то это надо явным образом написать (через условный оператор или условную операцию или еще как-то ... но как-то надо.) | |
|
|
|
|
|
|
|
для: Trianon
(31.01.2009 в 18:10)
| | Как у меня get-аргумент не задан, если он у меня задан.
Делаю вот так, привожу к числовому типу, если get-аргумент отсутствует:
$page_id = $_GET['page_id'] ? intval($_GET['page_id']) : 0;
Почему до функции значение приходит, а внутри функции пропадает?
Хоть убейте, не пойму. | |
|
|
|
|
|
|
|
для: Лена
(31.01.2009 в 18:36)
| | >$page_id = $_GET['page_id'] ? intval($_GET['page_id']) : 0;
>Делаю вот так, привожу к числовому типу, если get-аргумент отсутствует:
к числовому - если присутствует. Если отсутствует - здесь - просто заменяете на нуль.
в таком виде он, само собой вызывать ошибку синтаксиса не будет.
Но и данных запрос, вероятно, тоже никаких не выдаст, поскольку условие в запросе никогда выполнено не будет.
Если, конечно, у Вас нет записей с page_id =0 | |
|
|
|
|
|
|
|
для: Trianon
(31.01.2009 в 19:00)
| | >и данных запрос, вероятно, тоже никаких не выдаст
Выдает, ту же ошибку.
Делаю перед функцией print $page_id - выводится номер страницы. А внутри функции она не видна. | |
|
|
|
|
|
|
|
для: Лена
(31.01.2009 в 19:20)
| | А если типа так..
<?
$id = isset($_GET['id']) ? intval($_GET['id']) : '';
$page_id = isset($_GET['page_id'])? intval($_GET['page_id']) : '';
$offs_out = isset($_GET['offset']) ? intval($_GET['offset']) : '';
function offset($mod,$link,$id,$offs_out,$p_id)
{
$xx=!empty($p_id)? "AND `page_id` = '$_id'" :' ';
mysql_query("SELECT * FROM `texts` WHERE `id_mod` = '$mod' $xx ");
.....//работа функции...
}
//вызов функции
offset(11,$link,$id,$off,$page_id);
|
| |
|
|
|
|
|
|
|
для: serjinio
(31.01.2009 в 19:52)
| | Нет, так не идет. При клике на любую ссылку "висит" один и тот же текст. | |
|
|
|
|
|
|
|
для: Лена
(31.01.2009 в 19:20)
| | а строка
$page_id = $_GET['page_id'] ? intval($_GET['page_id']) : 0;
тоже в какой-то функции находится? | |
|
|
|
|
|
|
|
для: Trianon
(31.01.2009 в 20:40)
| | >тоже в какой-то функции находится?
Нет. В другом скрипте, к которому подключается данный.
Есть content.php - вывод контента.
Там и прописаны вот эти строки(попутный вопрос: может, это можно как-то покороче написать?)
<?php
if (isset($_GET['id'])&&isset($_GET['offset'])&&isset($_GET['page_id'])){
$id = $_GET['id'] ? intval($_GET['id']) : false;
$page_id = $_GET['page_id'] ? intval($_GET['page_id']) : 0;
$offs_out = $_GET['offset'] ? intval($_GET['offset']) : 0;
intval($_GET['id']) ? $mode = 2 : $err = 2;
intval($_GET['page_id']) ? $mode = 2 : $err = 2;
intval($_GET['offset']) ? $mode = 2 : $err = 2;
}
?>
|
В зависимости от режима, подключается определенный файл, в данном случае это ad_content.php:
<?php
if (!empty($err)) header("Location: moduls/errors.php?err=$err");
else {
switch ($mode) {
case 1 : include("moduls/gor_menu_content.php");
break;
case 2 : include("moduls/advices/ad_content.php");
break;
//ну и так дальше...
|
В ad_content.php и включается файл с функцией:
<?php
include("offset.php");
if($id){
offset(11,$id,$offs_out);
}
|
В offset.php определение и тело функции. | |
|
|
|
|
|
|
|
для: Лена
(31.01.2009 в 21:37)
| | if (isset($_GET['id'])&&isset($_GET['offset'])&&isset($_GET['page_id']))
для
$id = $_GET['id'] ? intval($_GET['id']) : false;
$page_id = $_GET['page_id'] ? intval($_GET['page_id']) : 0;
$offs_out = $_GET['offset'] ? intval($_GET['offset']) : 0;
странная запись.
Если эти три переменных определяются одним запросом, то какая-то из этих переменных является определяющей. Инициализация переменных $id, $page_id, $offs_out есть, и если определяющей является $id, то:
if($id) {
действия
}
Вот это вообще не понятное занятие:
intval($_GET['id']) ? $mode = 2 : $err = 2;
intval($_GET['page_id']) ? $mode = 2 : $err = 2;
intval($_GET['offset']) ? $mode = 2 : $err = 2;
То, что вы в конечном итоге вместо значения получаете "пусто" в MySQL-запросе, может связано с тем, что подключение файла происходит до того, как переменная была определена. | |
|
|
|
|
|
|
|
для: Лена
(31.01.2009 в 17:45)
| | можно использовать массив $GLOBALS | |
|
|
|