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.