1 / 1 / 0
Регистрация: 26.10.2012
Сообщений: 64
1

Перенос в базу данных

30.10.2012, 06:18. Показов 884. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток столкнулся с проблемой когда я начала переводить массив из
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Документ без названия</title>
</head>
 
<body>
<?php
/* Ввод переменных , точнее Имен с указанием оценок по предметам */
$marks = array(array('name'=>'Петров',
        'subjects'=>array(
            'math'=>4,
            'physics'=>3,
            'chemistry'=>3,
            'russian'=>5
        ),
    ),
    array(
        'name'=>'Иванов',
        'subjects'=>array(
            'math'=>4,
            'physics'=>5,
            'chemistry'=>4,
            'russian'=>5
        ),
    ),
       array(
        'name'=>'Сидоров',
        'subjects'=>array(
            'math'=>5,
            'physics'=>3,
            'chemistry'=>4,
            'russian'=>3
        ),
    ),
       array(
        'name'=>'Ветрова',
        'subjects'=>array(
            'math'=>2,
            'physics'=>3,
            'chemistry'=>3,
            'russian'=>4
        ),
    ),
       array('name'=>'Филатова',
        'subjects'=>array(
            'math'=>4,
            'physics'=>4,
            'chemistry'=>4,
            'russian'=>5
        ),
    ),
       array(
        'name'=>'Бубнов',
        'subjects'=>array(
            'math'=>4,
            'physics'=>3,
            'chemistry'=>3,
            'russian'=>4
        ),
    ),
       array(
        'name'=>'Пескова',
        'subjects'=>array(
            'math'=>5,
            'physics'=>5,
            'chemistry'=>4,
            'russian'=>2
        ),
    ),
       array(
        'name'=>'Ленинов',
        'subjects'=>array(
            'math'=>4,
            'physics'=>3,
            'chemistry'=>3,
            'russian'=>5
        ),
    ),
);
 
?>
<table>
    <thead>
<tr>
        <td>ФИО / Предметы</td>
        <td>математика</td>
        <td>физика</td>
        <td>химия</td>
        <td>русский</td>
        <td>средний бал</td>
</tr>
    </thead>
    <tbody>
<?php
$math = 0;
$physics = 0;
$chemistry = 0;
$russian = 0;
$all = 0;
/*Перебор всего массива FOREACH */
foreach ($marks as $student)
{
    $math += $student['subjects']['math'];
    $physics += $student['subjects']['physics'];
    $chemistry += $student['subjects']['chemistry'];
    $russian += $student['subjects']['russian'];
    $all += $n = array_sum($student['subjects']) / count($student['subjects']);
    echo '<tr>
             <td>'.$student['name'].'</td>
             <td>'.$student['subjects']['math'].'</td>
             <td>'.$student['subjects']['physics'].'</td>
             <td>'.$student['subjects']['chemistry'].'</td>
             <td>'.$student['subjects']['russian'].'</td>
             <td>'.$n.'</td>
    </tr>';
}
echo '<tr>
         <td>Средний бал</td>
         <td>'.($math / count($marks)).'</td>
         <td>'.($physics / count($marks)).'</td>
         <td>'.($chemistry  / count($marks)).'</td>
         <td>'.($russian  / count($marks)).'</td>
         <td>'.($all / count($marks)).'</td>
</tr>';
?>
    </tbody>
</table>
</body>
</html>


Получается так и ничего не работает , что я делаю не так?

Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Документ без названия</title>
</head>
 
<body>
<?php
 
 
$db = mysql_connect("localhost","table","table");
mysql_select_db("table",$db);
 
 
$result = mysql_query("SELECT * FROM table ",$db);
$subjects = mysql_fetch_array($result);
 
 ?>
 
<table>
    <thead>
<tr>
        <td>ФИО / Предметы</td>
        <td>математика</td>
        <td>физика</td>
        <td>химия</td>
        <td>русский</td>
        <td>средний бал</td>
</tr>
    </thead>
    <tbody>
<?php
/*Перебор всего массива FOREACH */
foreach ($marks as $student)
{
  ['subjects']['math'];
   ['subjects']['physics'];
  ['subjects']['chemistry'];
   ['subjects']['russian'];
  
    echo '<tr>
             <td>'.['name'].'</td>
             <td>'.['subjects']['math'].'</td>
             <td>'.['subjects']['physics'].'</td>
             <td>'.['subjects']['chemistry'].'</td>
             <td>'.['subjects']['russian'].'</td>
             <td>'.$n.'</td>
    </tr>';
}
echo '<tr>
         <td>Средний бал</td>
         <td>'.($math / count($marks)).'</td>
         <td>'.($physics / count($marks)).'</td>
         <td>'.($chemistry  / count($marks)).'</td>
         <td>'.($russian  / count($marks)).'</td>
         <td>'.($all / count($marks)).'</td>
</tr>';
?>
    </tbody>
</table>
</body>
</html>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2012, 06:18
Ответы с готовыми решениями:

Скопировать структуру базы данных в новую базу данных без самих данных
Здравствуйте! Подскажите пожалуйста, как более удобно скопировать всю базу данных в новую базу...

Где ошибка? (Запись данных из массива в базу данных mysql)
Массив, генерирующий данные: $data = array(); for($i = 0; $i &lt; 100; $i++){ ...

Добавление записи в базу данных и считывание из базы данных
Здравствуйте! Знаю, что эти вопросы поднимались уже тысячи раз, но помогите пожалуйста. Написала...

Добавление данных из нескольких текстовых полей в базу данных
Добрый день. С толкнулся со следующей проблемой: У меня есть форма в которой генерируется некое...

7
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
30.10.2012, 09:33 2
PHP
1
$student['subjects']['math'];
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
30.10.2012, 09:36 3
Цитата Сообщение от RaMsUs Посмотреть сообщение
PHP
1
2
3
4
5
6
foreach ($marks as $student)
{
* ['subjects']['math'];
* *['subjects']['physics'];
* ['subjects']['chemistry'];
* *['subjects']['russian'];
это что такое?
Вообще, что у Вас внутри foreach? почитайте про его использование - на офф сайте примеры внизу есть
Цитата Сообщение от RaMsUs Посмотреть сообщение
PHP
1
2
3
<td>Средний бал</td>
 * * * * <td>'.($math / count($marks)).'</td>
 * * * * <td>'.($physics / count($marks)).'</td>
откуда возьмутся эти переменные $math, $physics и т.д.? Зачем сто раз высчитывать count($marks)? она что, меняется? Высчитайте один раз, сохраните число в переменную и подставляйте его

Добавлено через 44 секунды
и вообще, откуда вдруг возьмется эта самая переменная $marks?
0
1 / 1 / 0
Регистрация: 26.10.2012
Сообщений: 64
30.10.2012, 16:55  [ТС] 4
переменный $name , $math , $physics $ chemisrty ,$ russian , берутся из базы через count находиться вроде бы если не ошибаюсь средний бал

Добавлено через 2 минуты
Цитата Сообщение от KOPOJI Посмотреть сообщение
и вообще, откуда вдруг возьмется эта самая переменная $marks?
переменный $name , $math , $physics $ chemisrty ,$ russian , берутся из базы через count находиться вроде бы если не ошибаюсь средний бал и он будет меняться потому что в последствие мне надо будет еще прикрутить ввод данных в базу , тобишь как я понимаю надо написать все заного через do { printf } while?
0
1 / 1 / 0
Регистрация: 26.10.2012
Сообщений: 64
30.10.2012, 18:45  [ТС] 5
Перевел более грамотно в базу нормально выдает результаты которые нужно , но не подсчитывает средний балл
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Документ без названия</title>
</head>
 
<body>
<?php
 
$db = mysql_connect("localhost","table","table");
mysql_select_db("table",$db);
 
 
$result = mysql_query("SELECT * FROM info",$db);
$myrow = mysql_fetch_array($result);
 
?>
<table>
    <thead>
<tr>
        <td>ФИО / Предметы</td>
        <td>математика</td>
        <td>физика</td>
        <td>химия</td>
        <td>русский</td>
        <td>средний балл</td>
</tr>
    </thead>
    <tbody>
<?php
$math = 0;
$physics = 0;
$chemistry = 0;
$russian = 0;
$all = 0;
/*Перебор всего массива FOREACH */
do
{
   $myrow['math'];
    $myrow['physics'];
   $myrow['chemistry'];
   $myrow['russian'];
   
    echo '<tr>
             <td>'.$myrow['name'].'</td>
             <td>'.$myrow['math'].'</td>
             <td>'.$myrow['physics'].'</td>
             <td>'.$myrow['chemistry'].'</td>
             <td>'.$myrow['russian'].'</td>
             <td>'.$n.'</td>
    </tr>';
}
 
while ($myrow = mysql_fetch_array($result));
echo '<tr>
         <td>Средний балл</td>
         <td>'.($math / count($myrow)).'</td>
         <td>'.($physics / count($myrow)).'</td>
         <td>'.($chemistry  / count($myrow)).'</td>
         <td>'.($russian  / count($myrow)).'</td>
         <td>'.($all / count($myrow)).'</td>
</tr>';
?>
    </tbody>
</table>
</body>
</html>
Перенос в базу данных
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
30.10.2012, 20:03 6
Цитата Сообщение от RaMsUs Посмотреть сообщение
переменный $name , $math , $physics $ chemisrty ,$ russian , берутся из базы
не вижу где вы это делаете.
Цитата Сообщение от RaMsUs Посмотреть сообщение
через count находиться вроде бы если не ошибаюсь средний бал
я вижу. но вы несколько раз высчитываете одно и тоже. Если Вам нужно узнать сколько будет 2+2 и подставить результат в нескольких местах, Вы что, везде будете заново высчитывать? Не проще и лучше ли будет чем сто раз напрягаться считать - один раз запомнить и подставлять уже высчитанный результат везде?
Цитата Сообщение от RaMsUs Посмотреть сообщение
/*Перебор всего массива FOREACH */
где?

Цитата Сообщение от RaMsUs Посмотреть сообщение
PHP
1
2
3
do
{
* *$myrow['math'];
даже забуду про использование do-while. Что делают эти действия до echo ?

Цитата Сообщение от RaMsUs Посмотреть сообщение
PHP
1
2
3
4
5
<td>'.($math / count($myrow)).'</td>
 * * * * <td>'.($physics / count($myrow)).'</td>
 * * * * <td>'.($chemistry */ count($myrow)).'</td>
 * * * * <td>'.($russian */ count($myrow)).'</td>
 * * * * <td>'.($all / count($myrow)).'</td>
Если ноль делить на любое число всегда будет ноль. За исключением случая, если второе число тоже ноль - тогда ошибка логики. А кроме присвоения нуля всем этим переменным вы их больше нигде не используете и не передекларируете.

Добавлено через 1 минуту
Работа с БД MySQL советую почитать, внимательно..
0
1 / 1 / 0
Регистрация: 26.10.2012
Сообщений: 64
30.10.2012, 20:24  [ТС] 7
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Документ без названия</title>
</head>
 
<body>
<?php
 
$db = mysql_connect("localhost","table","table");
mysql_select_db("table",$db);
 
 
$result = mysql_query("SELECT * FROM info",$db);
$myrow = mysql_fetch_array($result);
 
?>
<table border='1'>
    <thead>
<tr>
        <td>ФИО / Предметы</td>
        <td>математика</td>
        <td>физика</td>
        <td>химия</td>
        <td>русский</td>
        <td>средний балл</td>
</tr>
    </thead>
    <tbody>
<?php
$math = 0;
$physics = 0;
$chemistry = 0;
$russian = 0;
$all = 0;
$g=0;
$otl="";
 
do
{
$n = ($myrow['math']+$myrow['physics']+$myrow['chemistry']+$myrow['russian'])/4; 
$g++;
$math+=$myrow['math'];
$physics+=$myrow['physics'];
$chemistry+=$myrow['chemistry'];
$russian+=$myrow['russian'];
 
if($myrow['math']=="5" && $myrow['physics']=="5" && $myrow['chemistry']=="5" && $myrow['russian']=="5")
$otl+=1;
 
    echo '<tr>
             <td>'.$myrow['name'].'</td>
             <td>'.$myrow['math'].'</td>
             <td>'.$myrow['physics'].'</td>
             <td>'.$myrow['chemistry'].'</td>
             <td>'.$myrow['russian'].'</td>
             <td>'.$n.'</td>
    </tr>';
}
while ($myrow = mysql_fetch_array($result));
 
$all=($math+$physics+$chemistry+$russian)/(4);
 
echo '<tr>
         <td>Средний балл группы</td>
         <td>'.round($math/$g,1).'</td>
         <td>'.round($physics/$g,1).'</td>
         <td>'.round($chemistry/$g,1).'</td>
         <td>'.round($russian/$g,1).'</td>
         <td>'.round($all/$g,1).'</td>
</tr>';
?>
 
    </tbody>
</table>
 
<?php
 
if ($otl)
echo "Отличники $otl";
else 
echo "Отличников нету!";
?>
 
 
</body>
</html>


Перенос в базу данных


Все переделал теперь , помогите пожалуйста дописать

- не имеющих оценок 2 и 3;
- имеющих "неуды".
0
1 / 1 / 0
Регистрация: 26.10.2012
Сообщений: 64
30.10.2012, 21:11  [ТС] 8
сделал осталось только не имеющих 2 и 3 ,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Документ без названия</title>
</head>
 
<body>
<?php
/* Подключение к базе данных*/
$db = mysql_connect("localhost","table","table");
mysql_select_db("table",$db);
 
/* Вывод данных из базы */
$result = mysql_query("SELECT * FROM info",$db);
/* Вывод массива в переменную */
$myrow = mysql_fetch_array($result);
 
?>
<table border='1'>
    <thead>
<tr>
        <td>ФИО / Предметы</td>
        <td>математика</td>
        <td>физика</td>
        <td>химия</td>
        <td>русский</td>
        <td>средний балл</td>
</tr>
    </thead>
    <tbody>
<?php
$math = 0;
$physics = 0;
$chemistry = 0;
$russian = 0;
$all = 0;
$g=0;
$otl="";
/* Цикличность массива */
do
{
/* Ввод переменной среднего балла */ 
$n = ($myrow['math']+$myrow['physics']+$myrow['chemistry']+$myrow['russian'])/4; 
$g++;
/* Вывод из массива определенных данных */
$math+=$myrow['math'];
$physics+=$myrow['physics'];
$chemistry+=$myrow['chemistry'];
$russian+=$myrow['russian'];
/* Проверка на отличников */
if($myrow['math']=="5" && $myrow['physics']=="5" && $myrow['chemistry']=="5" && $myrow['russian']=="5")
$otl+=1;
/* Проверка на двоечников */
if($myrow['math']<"3" || $myrow['physics']<"3" || $myrow['chemistry']<"3" || $myrow['russian']<"3")
$neud+=1;
 
 
/* Вывод оценок и среднего балла */
    echo '<tr>
             <td>'.$myrow['name'].'</td>
             <td>'.$myrow['math'].'</td>
             <td>'.$myrow['physics'].'</td>
             <td>'.$myrow['chemistry'].'</td>
             <td>'.$myrow['russian'].'</td>
             <td>'.$n.'</td>
    </tr>';
}
/* Выполнять до тех пор пока соблюдается условие */
while ($myrow = mysql_fetch_array($result));
 
/* Ввыод переменной для подсчета среднего балла группы */
$all=($math+$physics+$chemistry+$russian)/(4);
 
echo '<tr>
         <td>Средний балл группы</td>
         <td>'.round($math/$g,1).'</td>
         <td>'.round($physics/$g,1).'</td>
         <td>'.round($chemistry/$g,1).'</td>
         <td>'.round($russian/$g,1).'</td>
         <td>'.round($all/$g,1).'</td>
</tr>';
?>
 
    </tbody>
</table>
 
<?php
 
if ($otl)
echo "Отличники $otl";
else 
echo "Отличников нету!";
 
if ($neud)
echo "<br>Ученики имеющие неуды $neud";
else 
echo "Учеников имеющих неуды нету";
 
?>
 
 
</body>
</html>
Добавлено через 20 минут
ахаха , спасибо , топик можно закрыть сам сделал)
0
30.10.2012, 21:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2012, 21:11
Помогаю со студенческими работами здесь

Добавление данных в базу данных во время функции printf()
Привет всем! У меня возникла проблема. Задача такая: нужно принять данные с одной таблицы в базе...

Добавление данных в базу данных из зависимых списков
Сделала зависимые списки, в которых берутся данные из базы. Нужно, чтобы выбранные данные...

Отправка данных в базу данных php+ajax
Здраствуйте, я хочу дание с двух полей форми обновлять в базе даних с помощью ajax, тоисть у меня...

При добавлении через форму в базу данных, в таблицу products генерировал ID - у которого тип данных CHAR. (БФ1, БФ2.)
Есть бд имя которой my_db в ней есть таблица products, При добавлении через форму в базу данных, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru