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

Форум PHP

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

 

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

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

тема: Нужна подсказка
 
 автор: OREX13   (08.09.2009 в 02:06)   письмо автору
 
 

Здравствуйте , вот пишу я скрипт - каталог .

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

Скринт работает следующим образом . При добавлении всех данных на сервере создаётся каталог , куда копируются файл админки ну и создаётся ещё несколько файлов ( база данных не используется ) .

И вот в результате встала проблема - этих самых товаров очень много и надо сделать постраничный вывод ( по 10 товаров , например , на страницу ) Вроде вывод по страницам я сделал , но тут встала ещё одна проблема . Если есть всего 5 записей , а не 10 или , скажем , 12 записей , то создаются 2 страницыкак и надо , но на второй ( если брать , что страниц 12 ) только 2 записи , а остальные 8 полный бред . Просто циклица таблица до 10 пунктов и всё

Index.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML><HEAD><TITLE>Камень</TITLE>
<META http-equiv=Content-Type content="text/css; charset=windows-1251">

<script language="JavaScript">

function Show(fname, width, height) {
    if (screen.height<=550 && screen.width<=700) { 
        document.location = fname;
    } else {
        if(!height) height = 800;
        if(!width) width = 600;        
        newHeight = height + 20;
        PopupWin = window.open(fname, "_blank", "height="+newHeight+",width="+width+",menubar=no,status=no,titlebar=no,toolbar=no,location=no,resizable=no,scrollbars=yes"); }
    return false;
}
</script>

<?
include ('config.txt');
print 
"<table align=\"center\" width=400 border=1>
           <tr>
              <td><div align=\"center\">Внешний вид </div></td>
              <td><div align=\"center\">Наименование</div></td>
              <td><div align=\"center\">Цена</div></td>
           </tr>
           <tr>
"
;
$i 0;
$title=$izvest[$q] ;
$handle opendir ('.');
while(
$file readdir($handle))
{
  if (
$file != '.' && $file != '..' && $file != 'index.php' && $file != 'redaction.php' && $file != 'tovar_prog.php' && $file != 'admin.php' && $file != 'config.txt' && $file != 'redaction_prog.php' && $file != '2.php')
  {
    
$func[$i] = $file;    //формируем массив названий файлов с функциями
    
$i++;
  }
}
sort ($func);





if (isset(
$_GET["page"])) $page $_GET["page"];



else 
$page 1;


for (
$q = ($page-1)*10$q $page*10$q++)
{
print 
"<td align=\"center\" width=100><a href=# target=_self
onclick=\"Show('
$func[$q]?title=$izvest[$q]',400,300); return false;\">
<img  src=
$func[$q]/1.jpg alt=\"Дополнительная информация\"  width=70 height=70 border=0 ></td><td align=\"center\" width=300>
<a href=# target=_self 
onclick=\"Show('
$func[$q]?title=$izvest[$q]',400,300); return false;\"> 
$izvest[$q]</td>
<td> "
;
include (
"$func[$q]/2.txt");
print 
"</td></tr></a>";
}
print 
"  </table>";

$q count($func);
print 
"Колличество элементов $q ";


if ( 
$q 10 )


print 
"Страницы: ";



for (
$i=0$i $q/10$i++)
 
{

echo 
"<a href='".$_SERVER['PHP_SELF']."?page=".($i+1)."'>".($i+1)."</a> ";

}





?>


ну , впринципе остальные файлы никак на вывод не влияют . Если надо будет - выложу всё . Ребят , помогите , не к кому обратиться больше !

  Ответить  
 
 автор: Trianon   (08.09.2009 в 02:15)   письмо автору
 
   для: OREX13   (08.09.2009 в 02:06)
 

Ошибка (краевой эффект), очевидно, здесь: for ($q = ($page-1)*10; $q < $page*10; $q++)
И чтобы подобраться к ней, стоит сперва упростить строку хотя бы так:
$q = $q = ($page-1)*10;
$r = $page*10;
for (; $q < $r; $q++)

  Ответить  
 
 автор: Trianon   (08.09.2009 в 02:21)   письмо автору
 
   для: OREX13   (08.09.2009 в 02:06)
 

простите.
Вот тут ( include ("$func[$q]/2.txt"); ) ... хм... маленький дяденька с грустными глазами.... который, как известно, не лечится.

  Ответить  
 
 автор: OREX13   (08.09.2009 в 02:40)   письмо автору
 
   для: Trianon   (08.09.2009 в 02:21)
 

Извините . не понял , где там ошибка )

  Ответить  
 
 автор: Trianon   (08.09.2009 в 08:52)   письмо автору
 
   для: OREX13   (08.09.2009 в 02:40)
 

$r не всегда равно $page*10

  Ответить  
 
 автор: ride   (08.09.2009 в 08:48)   письмо автору
 
   для: OREX13   (08.09.2009 в 02:06)
 

for ($q = ($page-1)*10; $q < $page*10; $q++)
к условию $q < $page*10; вам надо еще добавить $q <count($func) (только так в цикле* не проверяйте)

  Ответить  
 
 автор: OREX13   (08.09.2009 в 13:26)   письмо автору
 
   для: ride   (08.09.2009 в 08:48)
 

Спасибо огромное всем , вот так выкрутился

for ($q = ($page-1)*10; $q < $page*10; $q++)

if ($q < $page*10) {




{

    if ($q < count ($func))  {

print "<td align=\"center\" width=100><a href=# target=_self
onclick=\"Show('$func[$q]?title=$izvest[$q]',400,300); return false;\">
<img  src=$func[$q]/1.jpg alt=\"Дополнительная информация\"  width=70 height=70 border=0 ></td><td align=\"center\" width=300>
<a href=# target=_self 
onclick=\"Show('$func[$q]?title=$izvest[$q]',400,300); return false;\"> 
$izvest[$q]</td>
<td> ";
include "$func[$q]/2.txt";
print "</td></tr></a>";

}
}}



Вроде всё работает , правильно ?

  Ответить  
 
 автор: ride   (08.09.2009 в 17:05)   письмо автору
 
   для: OREX13   (08.09.2009 в 13:26)
 


<?php
$r
=$page*10;
$cnt=count($func);
for (
$q =$r-10$q $r,$q<$cnt$q++){
     print 
"<td align=\"center\" width=100><a href=# target=_self
onclick=\"Show('
$func[$q]?title=$izvest[$q]',400,300); return false;\">
<img  src=
$func[$q]/1.jpg alt=\"Дополнительная информация\"  width=70 height=70 border=0 ></td><td align=\"center\" width=300>
<a href=# target=_self 
onclick=\"Show('
$func[$q]?title=$izvest[$q]',400,300); return false;\"> 
$izvest[$q]</td>
<td> "
;
include 
"$func[$q]/2.txt";
print 
"</td></tr></a>"
}

  Ответить  
 
 автор: Trianon   (08.09.2009 в 17:21)   письмо автору
 
   для: ride   (08.09.2009 в 17:05)
 

$q < $r && $q<$cnt

  Ответить  
 
 автор: ride   (08.09.2009 в 17:33)   письмо автору
 
   для: Trianon   (08.09.2009 в 17:21)
 

а запятая чем плоха?

  Ответить  
 
 автор: Trianon   (08.09.2009 в 17:48)   письмо автору
 
   для: ride   (08.09.2009 в 17:33)
 

Проверьте.

Запятая очень хороша. Только на своем месте.
Это разные операции, и результаты вычисления выражений будут разные.

  Ответить  
 
 автор: ride   (08.09.2009 в 18:37)   письмо автору
 
   для: Trianon   (08.09.2009 в 17:48)
 

//
<?php
$j
=3;
for(
$i=0;$i<4,$i<$j;$i++){
    echo
$i."<br>";
}
?>


<?php
$j
=3;
for(
$i=0;$i<4&&$i<$j;$i++){
    echo
$i."<br>";
}
?>

  Ответить  
 
 автор: Trianon   (08.09.2009 в 19:17)   письмо автору
 
   для: ride   (08.09.2009 в 18:37)
 

Зачем Вы это написали?
Напишите $j = 7;

  Ответить  
 
 автор: ride   (09.09.2009 в 09:12)   письмо автору
 
   для: Trianon   (08.09.2009 в 19:17)
 

согласен, был не прав.

  Ответить  
 
 автор: !   (08.09.2009 в 19:24)
 
   для: ride   (08.09.2009 в 18:37)
 

ride, это доказывает общий случай? бугага!

  Ответить  
Rambler's Top100
вверх

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