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

Форум PHP

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

 

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

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

тема: обрывается while
 
 автор: ШИМ   (25.05.2007 в 21:38)   письмо автору
 
 


if(!isset($_GET['id_otdel'])) $id_otdel=0;
else
$id_otdel=$_GET['id_otdel'];

$query="SELECT * FROM otdel ";

$sql=mysql_query($query);
if(!$sql) echo "Ошибка при выполнении запроса";

    while($otdel=mysql_fetch_array($sql))
    {
        if($id_otdel==$otdel['id_otdel'])
        {
        echo "<center>";
        echo " <h1>".$otdel['name']."</h1>";
        include "contacts.php";
        }
        else
        {
            echo "<li><a href=index.php?page=contacts&id_otdel=".$otdel['id_otdel'].">".$otdel['name']."</a>";
        }
    }


Нипойму почему while выводит все до первой истины блока if


if($id_otdel==$otdel['id_otdel'])
        {
        echo "<center>";
        echo " <h1>".$otdel['name']."</h1>";
        include "contacts.php";
        }

Т.Е если выбран 5 отдел выводит первые 4 и подключает contacts, если выбран 2 отдел , выводит только 1 и подключает contacts.php!
По логике неважно какой выбран должно выводить все а под выбранным выводить contacts.php. Почему while обрывается???

   
 
 автор: DEM   (25.05.2007 в 21:58)   письмо автору
 
   для: ШИМ   (25.05.2007 в 21:38)
 

Покажите что у вас в файле contacts.php

   
 
 автор: Trianon   (25.05.2007 в 22:00)   письмо автору
 
   для: ШИМ   (25.05.2007 в 21:38)
 

Наверное в contacts стоит break, return, exit либо die.
Оператор include всего лишь помещает текстовое содержимое указываемого файла в поток кода. Вы его помещаете внутрь тела цикла.

   
 
 автор: ШИМ   (25.05.2007 в 22:20)   письмо автору
 
   для: Trianon   (25.05.2007 в 22:00)
 

вот я тоже об этом думал а там ничего подобного нет.
сontacts.php

<?
$query
="SELECT * FROM contacts 
WHERE id_otdel=
$id_otdel";
$sql=mysql_query($query);
if(!
$sql) echo "Ошибка при запросе к таблице КОНТАКТЫ";

if(
mysql_num_rows($sql)>0)
{
    while(
$cont=mysql_fetch_array($sql))
    {
                                            echo 
"<table>";
            if(!empty(
$otdel['name']))        echo "<tr class=cont><td colspan=2><b>".$cont['name'].
"</b></td></tr>";
            if(!empty(
$cont['address']))        echo "<tr align=left ><td>адрес</td><td>".$cont['address'].
"</td></tr>";
            if(!empty(
$cont['phone']))        echo "<tr align=left ><td>Контактный телефон</td><td>".
$cont['phone']."</td></tr>";
            if (!empty(
$cont['picture']) && $cont['picture']!="-")
            {
            
$picture="<img height=100 
width=125 src=admin/contacts/picture/"
.
$cont['picture'].">";
            }
            echo 
"</table>";
            echo 
"<table width=50%
></tr><td>
$picture</td></tr></table>";
    }
}
?>

Что еще может быть?

   
 
 автор: Unkind   (25.05.2007 в 22:23)   письмо автору
 
   для: ШИМ   (25.05.2007 в 22:20)
 

У Вас названия идентификаторов запроса одинаковые ($sql), след. один цикл мешает другому. Придумайте 2 различных названия.

   
 
 автор: ШИМ   (25.05.2007 в 22:28)   письмо автору
 
   для: Unkind   (25.05.2007 в 22:23)
 

Точно, спасиба! Можно было самому додуматься!

   
Rambler's Top100
вверх

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