Forum Webscript.Ru

Программирование => PHP => Тема начата: Hong от 26 Февраля 2003, 13:50:31

Название: Pomogite... ya saputalsy v sobstvenom sintakse i nemogu proiti dalshe...
Отправлено: Hong от 26 Февраля 2003, 13:50:31
Privet vsem.

Pomogite pojaluista, ya ne mogu rasobratsya, ne poluchaetsya dalshe!
Ya napisal script kotoriy generiruet 8-snachnie chisla. Eti chisla sapominautsya v base dannih.
U menya nikak ne poluchaetsya napisat sleduysheu chast scripta, ya uje proboval raslichnimi metodami
(@ snak pered oshibkoi; raslichnie zikli for; i raslichnie zikli while), no ne kak ne dobilsy resultata.

Esli odno is sgenerirovanih chisel povtoritsy s chislom kotoroe uje sapomnino v base dannih,
ono doljno ne sapominatsy v basu dannih i ne vidavat oshibki,
a generirovat novie/novoe chisla/chislo dla povtornogo sapominaniya.
V etom sluchae doljno sapominatsy po 3 chisla.
Ya privoju sdes moi script s soedineniem s basoi dannih i tablizu v kotoroi vse sapominaetsya.

Jdu pomoshi, spasibo.

//Basa dannih
/*
CREATE TABLE tabelle_1 (
  id int(10) unsigned NOT NULL auto_increment,
  nums varchar(100) NOT NULL default \'\',
  aktiv varchar(7) NOT NULL default \'"no"\',
  date date NOT NULL default \'0000-00-00\',
  PRIMARY KEY  (id),
  UNIQUE KEY nums (nums)
) TYPE=MyISAM;
*/

class object {};
$CFG = new object;

   $CFG->dbhost = "";
   $CFG->dbname = "";
   $CFG->dbuser = "";
   $CFG->dbpass = "";

$link=mysql_connect($CFG->dbhost,$CFG->dbuser,$CFG->dbpass);
mysql_select_db($CFG->dbname) or die ("Error:");

function send_sql($sql)
{
 if (! $res=mysql_query($sql)){
    echo mysql_error();
   exit;
}
return $res;
}

// Funkziya dla generirovanya chisel.
   function number ($begin, $end) {
        for (; $i < 1; $i++) {
         $nums = rand ($begin, $end);
         return $nums;
      }
   }


   for (; $i < 3; $i++) {
   $begin = 10;
   $end = 99;
   $num_block_1=number($begin,$end);
   $num_block_2=number($begin,$end);
   $num_block_3=number($begin,$end);
   $num_block_4=number($begin,$end);
   $nums_blocks=$num_block_1.$num_block_2.$num_block_3.$num_block_4;    
   $arr = explode(" ", $nums_blocks);
   foreach ($arr as $nums_blocks)
    // Esli chisla kotorie budut generirovatsya mejdu soboi povtoryautsya ne pokasivat.
    if (!$cnt[$nums_blocks]++) {
        $sql = "insert into tabelle_1 values (\'\', \'$nums_blocks\', \'no\', \'$today\')";
         $res=send_sql($sql);
        echo "Start of Generator $nums_blocks.\\n
";
    }
    elseif ($cnt[$nums_blocks]++) {
             unset($nums_blocks);
            echo "";
     }
     echo "
";
   }
Название: Pomogite... ya saputalsy v sobstvenom sintakse i nemogu proiti dalshe...
Отправлено: Maniac от 26 Февраля 2003, 15:24:29
Ээээ... Объясни тупому мне, что должна делать вот эта конструкция
Цитировать
function number ($begin, $end) {
for (; $i < 1; $i++) {
$nums = rand ($begin, $end);
return $nums;
}
}
Название: Pomogite... ya saputalsy v sobstvenom sintakse i nemogu proiti dalshe...
Отправлено: Hong от 26 Февраля 2003, 16:05:19
eta funkziya generiruet odno dvoinoe chislo v diapasone ot 10 do 99, k primeru 55.
No t. k. funkziya visivaetsya 4 rasa poluchaetsy 8 snachnoe chislo, kstati sabil skasat, ismenyat funkziy ne jelatelno.
Название: Pomogite... ya saputalsy v sobstvenom sintakse i nemogu proiti dalshe...
Отправлено: Maniac от 26 Февраля 2003, 16:11:46
Аааа... Слушай, а нельзя сразу генерить число в диапазоне от 10000000 до 99999999?
Во-вторых, конструкция
$arr = explode(" ", $nums_blocks); бессмыслена т.к. у тебя числа слиты цельно-едино без пробелов.
Название: Pomogite... ya saputalsy v sobstvenom sintakse i nemogu proiti dalshe...
Отправлено: Hong от 26 Февраля 2003, 16:35:00
Chisla generirovat в диапазоне от 10000000 до 99999999 nelsya t.k budet legche rasgodat logicheskuyu zepochku.
A конструкция
$arr = explode(" ", $nums_blocks);
v prinzipe mojno ubrat, ona tolko nujna kogda eta chast pervii ras sosdaet chisla shtobi oni mejdu soboi ne povtoralis (v ne basi dannih): mojno i tak napisat:
   for (; $i < 3; $i++) {
   $begin = 10;
   $end = 99;
   $num_block_1=number($begin,$end);
   $num_block_2=number($begin,$end);
   $num_block_3=number($begin,$end);
   $num_block_4=number($begin,$end);
   $nums_blocks=$num_block_1.$num_block_2.$num_block_3.$num_block_4;    
        $sql = "insert into tabelle_1 values (\'\', \'$nums_blocks\', \'no\', \'$today\')";
         $res=send_sql($sql);
        echo "Start of Generator $nums_blocks.\\n
";
   echo "
";
   }

Glavnoe shtobi proishodil sapros posle sosdaniy chisel is basi dannih, net li odinakovih.