Jump to content
  • 0

Подскажите, переменные get


woofs
 Share

Question

Добрый вечер.

Не знаю как правильно задать вопрос, но постараюсь.

Вот умею делать вот такие вещи http://test.test/view_post.php?id=*

http://test.test/view_cat.php?cat=*, и так далее, а как делать вот такое например, как задавать второй параметр:

http://test.test/test.php?rub=1&id=145, чтобы через один файл можно было сформировать и категорию, и id.

Спасибо.

Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

Проблема в том что я незнаю как подкрутить эту вторую переменную, вот с одной переменной я формирую так:

Код:

do 


{
printf ("
<a href='teast.php?id=%s'></a>
",$myrow["id"]);
}
while ($myrow = mysql_fetch_array ($result));
}

A как с двумя? там же как то по другому надо чуть

Link to comment
Share on other sites

  • 0

Ага, половина ясна, а как правильно в этом случает написать обрабатывающие файлы

если на странице http://test.test/test.php?rub=1 у меня выводятся ссылки такого типа http://test.test/test.php?rub=1&id=145

http://test.test/test.php?rub=1&id=144

....

А в свою очередь на

ttp://test.test/test.php?rub=1&id=*

выводится текст полный

Link to comment
Share on other sites

  • 0

раньше то я это через 2 файла делал в первом извлекал поля выводил цикл, а во втором файле извлекал и выводил полую, а как теперь это все в одном записать?

Link to comment
Share on other sites

  • 0

if ($_GET['id'] == '*') ShowResult('all');

else ShowResult((int)$_GET['id']);

А уж внутри функции ShowResult делать обработку параметров.

Или проблема в том, что передаются два параметра? Так ещё один if или case.

Edited by Int
Link to comment
Share on other sites

  • 0

Правильноли я реализовал?

<? include("bloks/bd.php"); 
if (isset($_GET['cat'])) {$cat = $_GET['cat'];}


if (isset($_GET['id'])) {$id = $_GET['id'];}
if (!isset($id)) {$id = 1;}

if (!preg_match("|^[\d]+$|", $id)) {
exit ("<p>Неверный формат запроса! Проверьте URL!");
}

[b]if (isset($cat)) [/b]

{

[b]$result = mysql_query ("SELECT * FROM catigories WHERE id='$cat' ", $db);[/b]

if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом админу <br/><strong>Код ошибки</strong> </p>"
;
exit (mysql_error());
}

if (mysql_num_rows ($result) > 0)

{
$myrow = mysql_fetch_array ($result);
}

[b]else [/b]
{
echo "<p>Информация не может быть извлечена, <a href='index.php'>На главную</a></p>";
exit ();
}

}
[b]else{
if (isset($id)) {
$result = mysql_query ("SELECT * FROM data WHERE id='$id' ", $db);
[/b]
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом админу <br/><strong>Код ошибки</strong> </p>"
;
exit (mysql_error());
}

if (mysql_num_rows ($result) > 0)

{
$myrow = mysql_fetch_array ($result);
$new_wiev = $myrow["wiev"] +1;
$updaye = mysql_query ("UPDATE data SET wiev = '$new_wiev' WHERE id='$id'", $db);
}

else
{
echo "<p>Информация не может быть извлечена, перепроверьте адресную строку, или вернитесь назад. <a href='index.php'>На главную</a></p>";
exit ();
}
}
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<meta name="description" Content="<? echo $myrow["meta_d"] ?>">
<meta name="keywords" content="<? echo $myrow["meta_k"] ?>" />
<title><? echo $myrow["title"] ?></title>



</head>


<body>

<table cellpadding=0 cellspacing=0 border=0 width=100%>
<tr>
<?php include "bloks/left.php";?>
<td id="centertd">

<?
[b] if (isset($_GET['id']))
{
$id = $_GET['id'];[/b]

$result2 = mysql_query ("SELECT * FROM data WHERE id='$id' ", $db);
if (!$result2)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом админу <br/><strong>Код ошибки</strong> </p>"
;
exit (mysql_error());
}

if (mysql_num_rows ($result2) > 0)

{
$myrow2 = mysql_fetch_array ($result2);
$new_wiev = $myrow2["wiev"] +1;
$updaye = mysql_query ("UPDATE data SET wiev = '$new_wiev' WHERE id='$id'", $db);
}


if ($myrow2 < $id)

{
echo "<p>Неверный формат запроса! Проверьте URL! </p>"
;
exit (mysql_error());
}


{
[b]printf ("<h1>%s</h1><p>%s</p>", $myrow2["title"], $myrow2["text"]);[/b]

}
[b]else{


if (isset($_GET['cat'])){ [/b]
if (!preg_match("|^[\d]+$|", $cat)) {
exit ("<p>Неверный формат запроса! Проверьте URL!");
}
[b]$result2 = mysql_query ("SELECT * FROM data WHERE cat='$cat'", $db);[/b]
if (!$result2)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом админу <br/><strong>Код ошибки</strong> </p>"
;
exit (mysql_error());
}

if (mysql_num_rows ($result2) > 0)

{
[b]$myrow2 = mysql_fetch_array ($result2);[/b]




echo "<p>{$myrow['text']}</p>";




do


{

p[b]rintf ("
<a href='articles.php?cat=%s&id=%s'><img src='%s' /></a>

</div>",$myrow2['cat'],$myrow2['id'],$myrow2['title']);[/b]


}
while ($myrow2 = mysql_fetch_array ($result2));
}

else
{
echo "<p>Информация не может быть извлечена, <a href='index.php'>На главную</a></p>";
exit ();
}
}


else{$result2 = mysql_query ("SELECT * FROM data", $db);
$myrow2 = mysql_fetch_array($result2);


do


{
echo "<a href='articles.php?cat={$myrow2['cat']}&id={$myrow2['id']}'>{$myrow2['title']}</a><br />";
}
while ($myrow2 = mysql_fetch_array ($result2));}
}
?>
</td>

</tr>
<tr>
<?php include "bloks/footer.php";?>
</tr>
</table>
</body>
</html>

Link to comment
Share on other sites

  • 0

Не осилил просмотреть всё, напишу о том, что осилил:

preg_match("|^[\d]+$|", $id)

замени на is_int($id), не мучайся, а то и просто делай $id=(int)$_GET['id'], тогда он всё, что не число, заменит на ноль.

WHERE id='$cat'

Пропусти $cat через mysql_real_escape_string(), и $id аналогично.

А ещё, если делаешь UPDATE, то можно никому не присваивать значение функции, просто писать mysql_query(); Да и $db указывать не обязательно если работаешь с одной базой :rolleyes:

И ещё, чтобы не плодить лишние скобки, можно вместо else{if (isset($id)) { писать просто elseif ()

Ну и, судя по подсветке синтаксиса у меня, скобки закрыты не все.

//wiev должно было быть view? =)) Или это нарочно так написано?

Edited by Int
Link to comment
Share on other sites

  • 0

Нет, не нарочно, ошибся.

Насчет elseif () спасибо, про mysql_real_escape_string() посчитаю, за $id=(int)$_GET['id'] тоже спасибо,

ну а значит что if...else... правильный способ реализации вывода и заметок категории и самой заметки, спасибо за помощь

Link to comment
Share on other sites

  • 0

Не знаю на счёт правильности, смотря что нужно получить. В той реализации, которая сейчас есть, это выглядит так:

Если указан cat, то берётся категория.

Если cat не указан, но указан id, выоводится заметка.

В противном случае ничего не выводится.

А если тебе нужно выводить и то и то, надо делать без else

if (isset($_GET['cat']) {}
if (isset($_GET['id'])) {}

Edited by Int
Link to comment
Share on other sites

  • 0
Не знаю на счёт правильности, смотря что нужно получить. В той реализации, которая сейчас есть, это выглядит так:

Если указан cat, то берётся категория.

Если cat не указан, но указан id, выоводится заметка.

В противном случае ничего не выводится.

А если тебе нужно выводить и то и то, надо делать без else

if (isset($_GET['cat']) {}
if (isset($_GET['id'])) {}

if (isset($_GET['cat']) {}

if (isset($_GET['id'])) {}

Ссылка на полную заметку формируется так: page.php?cat=*&id=*

т.е. программа будет на странице заметки будет читать: ага есть переменная кат(page.php?cat=*&id=*) значит выводим краткие описания по данной кат, идет дальше, ага есть id(page.php?cat=*&id=*) еще значит выводим полную, и таким образом выведутся краткие описания и полное по данному индефекатору, ну а так же мне не надо

Link to comment
Share on other sites

  • 0
Если нужно и то и то, значит предложенный мной вариант подойдёт

Нет и то и другое на одной страничке не надо надо отдельно, значит через else, спасибо, Int, за всю помощь.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy