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

Форум PHP

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

 

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

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

тема: Некорректно работает скрипт: вместо 2-х таблиц - 4, вместо 3-х - 9.
 
 автор: Bubba   (28.12.2007 в 16:50)   письмо автору
 
 

Вот такой скрипт. Только он не правильно работает почему то... если надо 2 таблицы, он делает 4 (в парах таблиц одно и то же), если 3, он делает 9 (в тройках таблиц одно и то же). Что не так?!

<?php
if (!$_POST['razm'])
{
    echo 
"ПшёЛ!!!";
    exit();
}
$players $_POST['n'];  //массив с участниками
shuffle($players);
$tr $_POST['razm'];  //сколько участников в одной таблице
$m $_POST['how_g']; //количетсво участников
if (($m $tr) != 0)
{
    
$kolvo_gr $m $tr;
    
settype($kolvo_grinteger);
    
$kolvo_gr $kolvo_gr 1;
}
else 
$kolvo_gr $m $tr;
for (
$i 0$i <= $_POST['how_g'];)   //наполнитель
{
    for (
$o 1$o <= $kolvo_gr$o++)   //создает таблицы
    
{
        echo 
"<table border=1>";
        for (
$p 0$p <= $tr 1$p++)     //создаёт строки в таблицах
        
{
            echo 
"<tr><td>".$players[$i $p]."</td></tr>";
        }
        echo 
"</table><br><br>";
    }
    
$i $i +  $tr//срабатывает но не правильно
}
?>

   
 
 автор: Джэф   (28.12.2007 в 18:09)   письмо автору
 
   для: Bubba   (28.12.2007 в 16:50)
 

А если сделать так?


<?php

$players 
= array("первый","второй","третий","четвертый","пятый","шестой","седьмой","восьмой","девятый");  //массив с участниками
shuffle($players);
$tr 3;  //сколько участников в одной таблице
$m 9//количетсво участников
if (($m $tr) != 0)
{
    
$kolvo_gr $m $tr;
    
settype($kolvo_grinteger);
    
$kolvo_gr $kolvo_gr 1;
}
else 
$kolvo_gr $m $tr;
for (
$i 0$i $m;)   //наполнитель
{
    for (
$o 1$o <= $kolvo_gr$o++)   //создает таблицы
    
{
        echo 
"<table border=1>";
        for (
$p 0$p <= $tr 1$p++)     //создаёт строки в таблицах
        
{
            echo 
"<tr><td>".$players[$i $p]."</td></tr>";
        }
        echo 
"</table><br><br>";
        
$i $i +  $tr//срабатывает но не правильно
    
}

}
?>

   
 
 автор: Drago   (28.12.2007 в 18:16)   письмо автору
 
   для: Джэф   (28.12.2007 в 18:09)
 

вот этот кусок

<?
if (($m $tr) != 0

    
$kolvo_gr $m $tr
    
settype($kolvo_grinteger); 
    
$kolvo_gr $kolvo_gr 1

else 
$kolvo_gr $m $tr;
?>


можно заменить одной строчкой

<?
//округление в большую сторону
$kolvo_gr ceil($m $tr); 
?>

   
 
 автор: Bubba   (28.12.2007 в 19:33)   письмо автору
 
   для: Drago   (28.12.2007 в 18:16)
 

О, спасибо большое. ты мне только объясни, в чём разница, где у меня была ошибка?

   
 
 автор: Джэф   (28.12.2007 в 19:53)   письмо автору
 
   для: Bubba   (28.12.2007 в 19:33)
 


<?
for ($i 0$i <= $_POST['how_g'];)
?>


Если так сделать, то код выполнится на 1 раз больше чем надо. Ну и $i ты позже увеличивал ;)

   
 
 автор: Drago   (28.12.2007 в 20:28)   письмо автору
 
   для: Bubba   (28.12.2007 в 19:33)
 

Вообще, у вас там лишний цикл. Лучше будет сделать так:

<?php
$players 
= array("первый","второй","третий","четвертый","пятый","шестой","седьмой","восьмой","девятый");  //массив с участниками
shuffle($players);
$tr 5//сколько участников в одной таблице
$m 9//количетсво участников
$kolvo_gr ceil($m $tr);
for (
$i=1$i <= $kolvo_gr$i++)
    {
    echo 
"<table border=1>";
    for (
$p 0$p $tr$p++) //создаёт строки в таблицах
        
{
        if (
$p $tr * ($i 1) < $m)
            echo 
"<tr><td>".$players[$p $tr * ($i 1)]."</td></tr>";
        }
    echo 
"</table><br><br>";
    }
?>

   
Rambler's Top100
вверх

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