Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: закладки - невсегда работает скрипт
 
 автор: vadimtur   (02.06.2008 в 18:59)   письмо автору
 
 

Здравствуйте!

while($book = mysql_fetch_array($result55))
    {
      $link5[$book['name']]['link'] = "dom.php?id_product=".$book[id_product]."&id_catalog=".$book[id_catalog]."&doma_id=".$book[doma_id]."";

    }
foreach($link5 as $name1 => $url)
  {
   if (strpos($_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'], $url['link']) == true)
   {
        echo $name1;

    } else {
        echo "<a   href=".$url['link'].">".$name1."</a>";
    }
  }

такой код в большинстве случаев работает корректно, но иногда он глючит, т.е. если в ссылке id_doma=140 то этот код прихватывает и нетолько id_doma=149, но и id_doma=14
Пример:
[url]
http://www.vadimtur.com.ua/dom.php?id_product=1&id_catalog=1&doma_id=149
[/url]

   
 
 автор: SiM(R)   (03.06.2008 в 03:26)   письмо автору
 
   для: vadimtur   (02.06.2008 в 18:59)
 

А в БД ошибки быть не может??

   
 
 автор: vadimtur   (03.06.2008 в 10:03)   письмо автору
 
   для: SiM(R)   (03.06.2008 в 03:26)
 

в каком смысле?

   
 
 автор: SiM(R)   (03.06.2008 в 10:54)   письмо автору
 
   для: vadimtur   (03.06.2008 в 10:03)
 


<?php
strpos
($_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'], $url['link'])
?>


Получается что функции strpos ищет вхождение подстроки в строку. Соответсвенно при поиске "doma_id=14" будет подходить и "doma_id=14" и "doma_id=140". Вхождение подстроки ведь есть.

PS: а в первом топике я имел в виду, вдруг в БД в поле doma_id вместо 14 расположен 149. Всякое ведь бывает )

   
 
 автор: vadimtur   (03.06.2008 в 11:32)   письмо автору
 
   для: SiM(R)   (03.06.2008 в 10:54)
 

блин! А как решить сию проблему?

   
 
 автор: SiM(R)   (03.06.2008 в 12:40)   письмо автору
 
   для: vadimtur   (03.06.2008 в 11:32)
 

Ну можно несколькими способами:

1) использовать только трехзначные doma_id )
2) впринципе можно поменять местам (если id_catalog не больше 10 ):

$link5[$book['name']]['link'] = "dom.php?id_product=".$book[id_product]."&doma_id=".$book[doma_id]."&id_catalog=".$book[id_catalog].""; // непонятно зачем в конце "" - ведь это ничего не дает, ничего не делает!


3) ну а можно так, чтобы ни от чего не зависело:

<?php
foreach($link5 as $name1 => $url
  { 
   if (
$_SERVER['REQUEST_URI']=='/'.$url['link']) //сравниваем УРЛ, без домена
   

        echo 
$name1

    } else { 
        echo 
"<a   href=".$url['link'].">".$name1."</a>"
    } 
  } 
?>

   
 
 автор: vadimtur   (03.06.2008 в 13:58)   письмо автору
 
   для: SiM(R)   (03.06.2008 в 12:40)
 

Большое спасибо за помощь!!!!
1) трехзначные нельзя - база набита данными 1-99;
2) если поменять местами то закладка не работает если прийти с другой страницы, но работает если клацать по закладкам;
3) 3 вариант - работает!
Спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования