Forum Webscript.Ru
		Программирование => PHP => Тема начата: 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 "
 ";
 }
- 
				Ээээ... Объясни тупому мне, что должна делать вот эта конструкция
 function number ($begin, $end) {
 for (; $i < 1; $i++) {
 $nums = rand ($begin, $end);
 return $nums;
 }
 }
 
 
- 
				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.
- 
				Аааа... Слушай, а нельзя сразу генерить число в диапазоне от 10000000 до 99999999?
 Во-вторых, конструкция
 $arr = explode(" ", $nums_blocks); бессмыслена т.к. у тебя числа слиты цельно-едино без пробелов.
- 
				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.