[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Рандомные переменные
Andrey65
Проблемка в том, что не могу одновременно всем скопом добавить в БД 21 человека с разными параметрами, которые генерируются случайно в массивы следующим образом:


<?php
$db = mysql_connect("localhost","root","");
mysql_select_db("banka_manager",$db);

// Создаем случайные имена и фамилии //
$mas = file('names.txt');//массив файла имен
$fam = file('family.txt');//массив файла фамилий

for ($i=1;$i<=21;$i++) {
$rand = rand(0, count($mas) - 1);//случайное число
$rand_fam = rand(0, count($fam) - 1);//случайное число для фамилии
$family = ucfirst(strtolower($fam[$rand_fam]));//регистр букв Pupkin
$name = $mas[$rand];//находим случайное имя
$fname[] = $name.$family;//$fname[0]='Vasya Pupkin'.....$fname[128]='Vasya Pupkin128'
}
// end //




// вычисляем рандомные числа //


$max_tech = 7; // макс. число для технических данных.
$max_psi = 10; // макс. число для психологических данных.
$max_fys = 9; // макс. число для физических данных.
$max_age = 23; // макс. возраст
for ($i=1;$i<=14;$i++)

{
$params[] = rand(1,$max_tech);//массив случайных чисел от 1 до 7 для технических данных
$psi[] = rand(1,$max_psi); //массив случайных чисел от 1 до 10 для психологических данных
}

for ($i=1;$i<=7;$i++)

{
$fys[] = rand(1,$max_fys);//массив случайных чисел от 1 до 9 для для физических данных.

}
// end //
// Получаем возраст и харрактер

$age= rand(15,$max_age);
if ($psi[13] > 6 && $psi[7] < 5) {$haract = "Холерик";}
if ($psi[1] > 6 && $psi[11] < 5) {$haract = "Холерик";}
if ($psi[1] > 6 && $psi[11] > 5) {$haract = "Сангвинник";}
if ($psi[1] < 6 && $psi[8] < 5){$haract = "Флегматик";}
if ($psi[1] > 6 && $psi[8] < 5){$haract = "Меланхолик";}

// end //


// Добавление в базу данных 21 чел-ка



if (!empty($_POST['ok'])){

for ($j=0;$j<=20;$j++) { //Как сделать разные разные значения каждому человеку?


$query = mysql_query("INSERT INTO attributes (name,throwing, long_kick, dribling, over_attack, play_head, free_kick, Mounted_kick, keeping, picking, Pass, penalty, first_tuch, technics, corner, authority, aggression, select_position, Playing_bez_ball, improvisation, intuition, teamplay, concentration, decisionmaking, durability, flatness, self_possession, creation, bravery,endurance, coordination, agility, natural_data, strength, spring_ability, acceleration,age,haract)
VALUES ('
$fname[$j]','$params[0]','$params[1]','$params[2]','$params[3]','$params[4]','$params[5]','$params[6]','$params[7]','$params[8]','$params[9]','$params[10]','$params[11]','$params[12]','$params[13]','$psi[0]','$psi[1]','$psi[2]','$psi[3]','$psi[4]','$psi[5]','$psi[6]','$psi[7]','$psi[8]','$psi[9]','$psi[10]','$psi[11]','$psi[12]','$psi[13]','$fys[0]','$fys[1]','$fys[2]','$fys[3]','$fys[4]','$fys[5]','$fys[6]','$age','$haract')");
}
header("Location:gen.php");
}
?>
</div>

<
form action="" method="post">
<
input name="ok" type="submit" value="Сохранить">
</
form>
</
body>
</
html>



Как сделать разные разные значения каждому человеку?


Дамп таблицы



CREATE TABLE IF NOT EXISTS `attributes` (
`id` int(6) NOT NULL AUTO_INCREMENT,
`name` varchar(450) NOT NULL,
`throwing` int(2) NOT NULL,
`long_kick` int(2) NOT NULL,
`dribling` int(2) NOT NULL,
`over_attack` int(2) NOT NULL,
`play_head` int(2) NOT NULL,
`free_kick` int(2) NOT NULL,
`Mounted_kick` int(2) NOT NULL,
`keeping` int(2) NOT NULL,
`picking` int(2) NOT NULL,
`Pass` int(2) NOT NULL,
`penalty` int(2) NOT NULL,
`first_tuch` int(2) NOT NULL,
`technics` int(2) NOT NULL,
`corner` int(2) NOT NULL,
`authority` int(2) NOT NULL,
`aggression` int(2) NOT NULL,
`select_position` int(2) NOT NULL,
`Playing_bez_ball` int(2) NOT NULL,
`improvisation` int(2) NOT NULL,
`intuition` int(2) NOT NULL,
`teamplay` int(2) NOT NULL,
`concentration` int(2) NOT NULL,
`decisionmaking` int(2) NOT NULL,
`durability` int(2) NOT NULL,
`flatness` int(2) NOT NULL,
`self_possession` int(2) NOT NULL,
`creation` int(2) NOT NULL,
`bravery` int(2) NOT NULL,
`endurance` int(2) NOT NULL,
`coordination` int(2) NOT NULL,
`agility` int(2) NOT NULL,
`natural_data` int(2) NOT NULL,
`strength` int(2) NOT NULL,
`spring_ability` int(2) NOT NULL,
`acceleration` int(2) NOT NULL,
`age` int(2) NOT NULL,
`haract` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=204 ;





Спустя 40 минут, 5 секунд (17.03.2011 - 03:33) Invis1ble написал(а):
Формируй эти значения внутри цикла, в котором идет запись в БД

Спустя 19 минут, 33 секунды (17.03.2011 - 03:52) Andrey65 написал(а):
Пробовал, все-равно не получается.

if (!empty($_POST['ok'])){

for ($j=1;$j<=20;$j++) { //вот тут добавление
for ($i=1;$i<=14;$i++)

{
$params[] = rand(1,$max_tech);//массив случайных чисел от 1 до 7 для технических данных
$psi[] = rand(1,$max_psi); //массив случайных чисел от 1 до 10 для психологических данных
}

$query = mysql_query("INSERT INTO attributes (name,throwing, long_kick, dribling, over_attack, play_head, free_kick, Mounted_kick, keeping, picking, Pass, penalty, first_tuch, technics, corner, authority, aggression, select_position, Playing_bez_ball, improvisation, intuition, teamplay, concentration, decisionmaking, durability, flatness, self_possession, creation, bravery,endurance, coordination, agility, natural_data, strength, spring_ability, acceleration,age,haract)
VALUES ('
$fname[$j]','$params[0]','$params[1]','$params[2]','$params[3]','$params[4]','$params[5]','$params[6]','$params[7]','$params[8]','$params[9]','$params[10]','$params[11]','$params[12]','$params[13]','$psi[0]','$psi[1]','$psi[2]','$psi[3]','$psi[4]','$psi[5]','$psi[6]','$psi[7]','$psi[8]','$psi[9]','$psi[10]','$psi[11]','$psi[12]','$psi[13]','$fys[0]','$fys[1]','$fys[2]','$fys[3]','$fys[4]','$fys[5]','$fys[6]','$age','$haract')");
}
header("Location:gen.php");
}


Invis1ble Можно поподробней, пробовал уже и все брать в цикл записи, во время 1-го цикла нормально, а вот последующие берут не рамдомные переменные, а одни и те же, хотя они в своих циклах должны генерироваться вроде.
Нужно как-то сделать в цикле чтобы генерировалась новая случайная переменная с каждым его витком, уже мозг сломал.

Спустя 19 минут, 5 секунд (17.03.2011 - 04:11) Invis1ble написал(а):
Andrey65
Что конкретно ты хочешь сделать? Просто вставить несколько записей со случайными данными?

Спустя 1 минута, 54 секунды (17.03.2011 - 04:13) Andrey65 написал(а):
Да, чтобы не повторялись значения людей, пока только с именами $fname[$j] прокатывает, остальное пишется одинаковое

в этом цикле 
for ($j=1;$j<=20;$j++)
чтобы на каждом витке заносило заново сгенерированые данные
'$params[0]','$params[1]','$params[2]','$params[3]' и т.д.

Спустя 31 минута, 27 секунд (17.03.2011 - 04:45) Invis1ble написал(а):
for ($j = 0; $i <= 20; $i ++)
{
$param = rand(1, 7);
$psi = rand(1, 10);
$fys = rand(1, 9);

if ($psi > 6 && $psi < 5) {$haract = "Холерик";}
if ($psi > 6 && $psi < 5) {$haract = "Холерик";}
if ($psi > 6 && $psi > 5) {$haract = "Сангвинник";}
if ($psi < 6 && $psi < 5){$haract = "Флегматик";}
if ($psi > 6 && $psi < 5){$haract = "Меланхолик";}

$query =
"INSERT INTO `attributes` SET
`name`='"
. $mas[array_rand($mas)] . ' ' . ucfirst(strtolower($mas[array_rand($fam)])) . "',
`throwing`="
. $param . ",
`long_kick`="
. $param . ",
`dribling`="
. $param . ",
`over_attack`="
. $param . ",
`play_head`="
. $param . ",
`free_kick`="
. $param . ",
`Mounted_kick`="
. $param . ",
`keeping`="
. $param . ",
`picking`="
. $param . ",
`Pass`="
. $param . ",
`penalty`="
. $param . ",
`first_tuch`="
. $param . ",
`technics`="
. $param . ",
`corner`="
. $param . ",
`authority`="
. $psi . ",
`aggression`="
. $psi . ",
`select_position`="
. $psi . ",
`Playing_bez_ball`="
. $psi . ",
`improvisation`="
. $psi . ",
`intuition`="
. $psi . ",
`teamplay`="
. $psi . ",
`concentration`="
. $psi . ",
`decisionmaking`="
. $psi . ",
`durability`="
. $psi . ",
`flatness`="
. $psi . ",
`self_possession`="
. $psi . ",
`creation`="
. $psi . ",
`bravery`="
. $psi . ",
`endurance`="
. $fys . ",
`coordination`="
. $fys . ",
`agility`="
. $fys . ",
`natural_data`="
. $fys . ",
`strength`="
. $fys . ",
`spring_ability`="
. $fys . ",
`acceleration`="
. $fys . ",
`age`="
. rand(15, 23) . ",
`haract`='"
. $haract . "'";

mysql_query($query) or die(mysql_error());
}

Спустя 18 минут, 30 секунд (17.03.2011 - 05:03) Andrey65 написал(а):
ругается на ф-ю array_rand(),
Warning: array_rand() [function.array-rand]: First argument has to be an array in Z:\home\code\www\gen.php on line 19


и заносит одинаковые значения $param $psi и $fys, имена $mas[array_rand($mas)] пустые, а вот сравнения работают, все-равно спасибо, уже близко!

Спустя 46 минут, 9 секунд (17.03.2011 - 05:49) Invis1ble написал(а):
так ты вначале (перед циклом) считай файлы в массивы $mas и $fam
$mas = file('names.txt');
$fam = file('family.txt');

Цитата
одинаковые значения $param $psi и $fys

а тебе какие нужны? я исходил из твоего кода

Спустя 6 часов, 57 минут, 19 секунд (17.03.2011 - 12:47) Andrey65 написал(а):
Invis1ble Спасибо за помощь.+1


_____________
Цитата
Не стоит недооценивать предсказуемость моей тупизны
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.