PHP functies en mysql_fetch_assoc
ik was bezig met het maken van een overzicht van verschillende waardes voor een spel.
De waardes moesten verticaal opgesteld worden, er moet dus steeds voor elke waarde een tabel cel aangemaakt worden.
Dit doe ik door middel van de functie information().
Helaas werkt dit niet, ik denk dat dit komt omdat mysql_fetch_assoc() maar één keer kan worden aangeroepen.
Heeft iemand hier ervaring mee of een oplossing voor?
NOTE: de HTML is verkort!
Code (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
132
133
134
135
136
137
138
139
140
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
132
133
134
135
136
137
138
139
140
<?php
function resources()
{
$con = mysql_connect('localhost', 'root', 'password') or die(mysql_error());
mysql_select_db('matman_test', $con) or die(mysql_error());
$query = mysql_query("SELECT * FROM resources");
if(mysql_num_rows($query) != 0)
{
session_start();
$_SESSION['count'] = 0;
function information($query)
{ $data = null;
$dataa = array('Currency', 'Iron', 'Iron2', 'Grain', 'Grain2', 'WQ1(LC)', 'WQ1(G)', 'WQ2(LC)', 'WQ2(G)', 'WQ3(LC)', 'WQ3(G)', 'WQ4(LC)', 'WQ4(G)', 'WQ5(LC)', 'WQ5(G)', 'GQ1(LC)', 'GQ1(G)', 'GQ2(LC)', 'GQ2(G)', 'GQ3(LC)', 'GQ3(G)', 'GQ4(LC)', 'GQ4(G)', 'GQ5(LC)', 'GQ5(G)', 'FQ1(LC)', 'FQ1(G)', 'FQ2(LC)', 'FQ2(G)', 'FQ3(LC)', 'FQ3(G)', 'FQ4(LC)', 'FQ4(G)', 'FQ5(LC)', 'FQ5(G)');
$word = $dataa[$_SESSION['count']];
while($data = mysql_fetch_assoc($query))
{
if($data[$word] == "" || $data[$word] == 0)
{
echo '<td class="empty"> </td>';
}
else
{
echo '<td class="full">'.$data[$word].'</td>';
}
$_SESSION['count']++;
}
return;
}
echo '
<table cellspacing="0" border="0" class="content">
<tr>
<td colspan="3">Land:</td>';
while($data2 = mysql_fetch_assoc($query))
{
echo '<td class="full">'.$data2['Country'].'</td>';
}
echo '
</tr>
<tr>
<td align="center">Currency</td>
<td colspan="2">LC in G</td>';
information($query);
echo '
</tr>
<tr>
<td rowspan="2">Iron:</td>
<td> </td>
<td>LC</td>';
information($query);
echo '
</tr>
<tr>
<td> </td>
<td>G</td>';
information($query);
echo '
</tr>
<tr>
<td align="center" rowspan="10">Weapons</td>
<td rowspan="2">Q1</td>
<td>LC</td>';
information($query);
echo '
</tr>
<tr>
<td>G</td>';
information($query);
echo '
</tr>
<tr>
<td rowspan="2">Q2</td>
<td>LC</td>';
information($query);
echo '
</tr>
<tr>
<td>G</td>';
information($query);
echo '
</tr>
<tr>
<td rowspan="2">Q3</td>
<td>LC</td>';
information($query);
echo '
</tr>
<tr>
<td>G</td>';
information($query);
echo '
</tr>
<tr>
<td rowspan="2">Q4</td>
<td>LC</td>';
information($query);
echo '
</tr>
<tr>
<td>G</td>';
information($query);
echo '
</tr>
<tr>
<td rowspan="2">Q5</td>
<td>LC</td>';
information($query);
echo '
</tr>
<tr>
<td>G</td>';
information($query);
echo '
</tr>
</table>
';
//$_SESSION['count'] = 0;
}
else
{
die('Er staat niks in de database!');
}
}
?>
<html>
<head>
<title>e-sim resources module</title>
<link rel="stylesheet" href="css/stylesheet.css" media="screen" />
</head>
<body>
<?php
resources();
?>
<br />
<a href="insert.php">Invoegen</a>
</body>
</html>
function resources()
{
$con = mysql_connect('localhost', 'root', 'password') or die(mysql_error());
mysql_select_db('matman_test', $con) or die(mysql_error());
$query = mysql_query("SELECT * FROM resources");
if(mysql_num_rows($query) != 0)
{
session_start();
$_SESSION['count'] = 0;
function information($query)
{ $data = null;
$dataa = array('Currency', 'Iron', 'Iron2', 'Grain', 'Grain2', 'WQ1(LC)', 'WQ1(G)', 'WQ2(LC)', 'WQ2(G)', 'WQ3(LC)', 'WQ3(G)', 'WQ4(LC)', 'WQ4(G)', 'WQ5(LC)', 'WQ5(G)', 'GQ1(LC)', 'GQ1(G)', 'GQ2(LC)', 'GQ2(G)', 'GQ3(LC)', 'GQ3(G)', 'GQ4(LC)', 'GQ4(G)', 'GQ5(LC)', 'GQ5(G)', 'FQ1(LC)', 'FQ1(G)', 'FQ2(LC)', 'FQ2(G)', 'FQ3(LC)', 'FQ3(G)', 'FQ4(LC)', 'FQ4(G)', 'FQ5(LC)', 'FQ5(G)');
$word = $dataa[$_SESSION['count']];
while($data = mysql_fetch_assoc($query))
{
if($data[$word] == "" || $data[$word] == 0)
{
echo '<td class="empty"> </td>';
}
else
{
echo '<td class="full">'.$data[$word].'</td>';
}
$_SESSION['count']++;
}
return;
}
echo '
<table cellspacing="0" border="0" class="content">
<tr>
<td colspan="3">Land:</td>';
while($data2 = mysql_fetch_assoc($query))
{
echo '<td class="full">'.$data2['Country'].'</td>';
}
echo '
</tr>
<tr>
<td align="center">Currency</td>
<td colspan="2">LC in G</td>';
information($query);
echo '
</tr>
<tr>
<td rowspan="2">Iron:</td>
<td> </td>
<td>LC</td>';
information($query);
echo '
</tr>
<tr>
<td> </td>
<td>G</td>';
information($query);
echo '
</tr>
<tr>
<td align="center" rowspan="10">Weapons</td>
<td rowspan="2">Q1</td>
<td>LC</td>';
information($query);
echo '
</tr>
<tr>
<td>G</td>';
information($query);
echo '
</tr>
<tr>
<td rowspan="2">Q2</td>
<td>LC</td>';
information($query);
echo '
</tr>
<tr>
<td>G</td>';
information($query);
echo '
</tr>
<tr>
<td rowspan="2">Q3</td>
<td>LC</td>';
information($query);
echo '
</tr>
<tr>
<td>G</td>';
information($query);
echo '
</tr>
<tr>
<td rowspan="2">Q4</td>
<td>LC</td>';
information($query);
echo '
</tr>
<tr>
<td>G</td>';
information($query);
echo '
</tr>
<tr>
<td rowspan="2">Q5</td>
<td>LC</td>';
information($query);
echo '
</tr>
<tr>
<td>G</td>';
information($query);
echo '
</tr>
</table>
';
//$_SESSION['count'] = 0;
}
else
{
die('Er staat niks in de database!');
}
}
?>
<html>
<head>
<title>e-sim resources module</title>
<link rel="stylesheet" href="css/stylesheet.css" media="screen" />
</head>
<body>
<?php
resources();
?>
<br />
<a href="insert.php">Invoegen</a>
</body>
</html>
Gewijzigd op 11/11/2011 19:33:54 door Non Actief
Zet je script a.u.b. even tussen code-tags.
Toevoeging op 11/11/2011 18:15:18:
Matthijs Veldhuizen op 11/11/2011 18:02:47:
... ik denk dat dit komt omdat mysql_fetch_assoc() maar één keer kan worden aangeroepen
Dat is niet waar.
Jij roept mysql_fetch_assoc() (door jouw onlogische constructie) misschien wel honderden keren aan. Dat houdt in dat ie allang geen records meer heeft.
Toevoeging op 11/11/2011 18:19:19:
Ik hoop ook dat dit ('WQ1(LC)', 'WQ1(G)', 'WQ2(LC)') geen veldnamen zijn in de database.
- SanThe - op 11/11/2011 18:10:41:
Volgens mij is je script zeer onlogisch opgebouwd.
Toevoeging op 11/11/2011 18:15:18:
Dat is niet waar.
Jij roept mysql_fetch_assoc() (door jouw onlogische constructie) misschien wel honderden keren aan. Dat houdt in dat ie allang geen records meer heeft.
Toevoeging op 11/11/2011 18:19:19:
Ik hoop ook dat dit ('WQ1(LC)', 'WQ1(G)', 'WQ2(LC)') geen veldnamen zijn in de database.
Toevoeging op 11/11/2011 18:15:18:
Matthijs Veldhuizen op 11/11/2011 18:02:47:
... ik denk dat dit komt omdat mysql_fetch_assoc() maar één keer kan worden aangeroepen
Dat is niet waar.
Jij roept mysql_fetch_assoc() (door jouw onlogische constructie) misschien wel honderden keren aan. Dat houdt in dat ie allang geen records meer heeft.
Toevoeging op 11/11/2011 18:19:19:
Ik hoop ook dat dit ('WQ1(LC)', 'WQ1(G)', 'WQ2(LC)') geen veldnamen zijn in de database.
SanThe,
noem a.u.b. ook verbeteringen i.p.v. alleen kritiek
the $dataa array zijn wel veldnamen in de database.
Gewijzigd op 11/11/2011 19:01:55 door Non Actief
Klinkt als een slecht opgestelde (genormaliseerde) database...
- Aar - op 11/11/2011 19:10:46:
WQ1(LC)', 'WQ1(G)', 'WQ2(LC)
Klinkt als een slecht opgestelde (genormaliseerde) database...
Klinkt als een slecht opgestelde (genormaliseerde) database...
wat zou er speciaal aan moeten zijn dan? :P
btw: heeft iemand ook een eventuele oplossing voor mn probleem? :P
$word komt uit het array met de veldnamen. Dus in onderstaand stukje kijk je alleen naar één veld. Dit terwijl je met de while alle records ophaalt. Na de allereerste keer dat je dit doet zijn alle records reeds opgehaald. Dus de tweede keer dat je in deze loop komt zullen er geen records meer zijn. Je zal dat moeten resetten om nognaals alle records op te halen. Maar je begrijpt dat dit een zware belasting gaat worden voor de server. Verzin een andere methode. Misschien moet je eerst alle records in een array zetten en daar verder mee werken.
Code (php)
Toevoeging op 11/11/2011 19:23:22:
Zo te zien trekt deze regel al alle records weg waardoor je daarna niets meer over zal hebben.
while($data2 = mysql_fetch_assoc($query))
Gewijzigd op 11/11/2011 19:14:56 door - SanThe -
horizontaal was geen probleem, maar dat is onduidelijker.
Omdat ik in html geen enkele manier ken om zomaar een hele kolom toe te voegen raakte ik een beetje in de knoop.
Zou iemand mij eventueel kunnen helpen met een manier om een hele kolom toe te voegen, zonder 35 keer de functie information() te moeten herhalen?
Of kan ik dit toch beter horizontaal doen?
Als ik zo tel wil jij 14 keer alle records ophalen. Duidelijk geval van overkill.
maar in mijn eerste post vertelde ik ook: "NOTE: de HTML is verkort!"
In totaal is het dus 36 keer, inderdaad overkill.
Ik zal de horizontale manier wel toepassen, dan hoef ik het maar 1 keer op te vragen.
Zou het volgens jullie wel mogelijk kunnen zijn om dit überhaupt verticaal te doen?
Toevoeging op 11/11/2011 19:58:15:
Gooi niet gelijk je eigen script weg want ik heb niks kunnen testen.
Je moet zelf bij elke information(...); even de juiste parameter neerzetten.
En dat kan zo:
information($field_array[0]);
of de veldnaam:
information('Currency');
Ik hoop dat het werkt.
Code (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
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
<?php
function information($field)
{
global $records_array;
foreach($records_array as $record)
{
if($record[$field] == "" || $record[$field] == 0)
{
echo '<td class="empty"> </td>';
}
else
{
echo '<td class="full">'.$record[$field].'</td>';
}
}
}
function resources()
{
global $records_array;
$field_array = array('Currency', 'Iron', 'Iron2', 'Grain', 'Grain2', 'WQ1(LC)', 'WQ1(G)', 'WQ2(LC)', 'WQ2(G)', 'WQ3(LC)', 'WQ3(G)', 'WQ4(LC)', 'WQ4(G)', 'WQ5(LC)', 'WQ5(G)', 'GQ1(LC)', 'GQ1(G)', 'GQ2(LC)', 'GQ2(G)', 'GQ3(LC)', 'GQ3(G)', 'GQ4(LC)', 'GQ4(G)', 'GQ5(LC)', 'GQ5(G)', 'FQ1(LC)', 'FQ1(G)', 'FQ2(LC)', 'FQ2(G)', 'FQ3(LC)', 'FQ3(G)', 'FQ4(LC)', 'FQ4(G)', 'FQ5(LC)', 'FQ5(G)');
$con = mysql_connect('localhost', 'root', 'password') or die(mysql_error());
mysql_select_db('matman_test', $con) or die(mysql_error());
$query = mysql_query("SELECT * FROM resources");
if(mysql_num_rows($query) != 0)
{
$records_array = array();
while($data = mysql_fetch_assoc($query))
{
$records_array[] = $data;
}
echo '
<table cellspacing="0" border="0" class="content">
<tr>
<td colspan="3">Land:</td>';
foreach($records_array as $record)
{
echo '<td class="full">'.$record['Country'].'</td>';
}
echo '
</tr>
<tr>
<td align="center">Currency</td>
<td colspan="2">LC in G</td>';
information($field_array[0]);
echo '
</tr>
<tr>
<td rowspan="2">Iron:</td>
<td> </td>
<td>LC</td>';
information($field_array[1]);
// enzovoort
?>
function information($field)
{
global $records_array;
foreach($records_array as $record)
{
if($record[$field] == "" || $record[$field] == 0)
{
echo '<td class="empty"> </td>';
}
else
{
echo '<td class="full">'.$record[$field].'</td>';
}
}
}
function resources()
{
global $records_array;
$field_array = array('Currency', 'Iron', 'Iron2', 'Grain', 'Grain2', 'WQ1(LC)', 'WQ1(G)', 'WQ2(LC)', 'WQ2(G)', 'WQ3(LC)', 'WQ3(G)', 'WQ4(LC)', 'WQ4(G)', 'WQ5(LC)', 'WQ5(G)', 'GQ1(LC)', 'GQ1(G)', 'GQ2(LC)', 'GQ2(G)', 'GQ3(LC)', 'GQ3(G)', 'GQ4(LC)', 'GQ4(G)', 'GQ5(LC)', 'GQ5(G)', 'FQ1(LC)', 'FQ1(G)', 'FQ2(LC)', 'FQ2(G)', 'FQ3(LC)', 'FQ3(G)', 'FQ4(LC)', 'FQ4(G)', 'FQ5(LC)', 'FQ5(G)');
$con = mysql_connect('localhost', 'root', 'password') or die(mysql_error());
mysql_select_db('matman_test', $con) or die(mysql_error());
$query = mysql_query("SELECT * FROM resources");
if(mysql_num_rows($query) != 0)
{
$records_array = array();
while($data = mysql_fetch_assoc($query))
{
$records_array[] = $data;
}
echo '
<table cellspacing="0" border="0" class="content">
<tr>
<td colspan="3">Land:</td>';
foreach($records_array as $record)
{
echo '<td class="full">'.$record['Country'].'</td>';
}
echo '
</tr>
<tr>
<td align="center">Currency</td>
<td colspan="2">LC in G</td>';
information($field_array[0]);
echo '
</tr>
<tr>
<td rowspan="2">Iron:</td>
<td> </td>
<td>LC</td>';
information($field_array[1]);
// enzovoort
?>
Gewijzigd op 11/11/2011 20:41:46 door - SanThe -
Met code:
Code (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
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
<?php
function information($field)
{
global $records_array;
foreach($records_array as $record)
{
echo '<td class="full">'.$record['Country'].'</td>';
if($record[$field] == "" || $record[$field] == 0)
{
echo '<td class="empty"> </td>';
}
else
{
echo '<td class="full">'.$record[$field].'</td>';
}
}
}
function resources()
{
global $records_array;
$field_array = array('Currency', 'Iron', 'Iron2', 'Grain', 'Grain2', 'WQ1(LC)', 'WQ1(G)', 'WQ2(LC)', 'WQ2(G)', 'WQ3(LC)', 'WQ3(G)', 'WQ4(LC)', 'WQ4(G)', 'WQ5(LC)', 'WQ5(G)', 'GQ1(LC)', 'GQ1(G)', 'GQ2(LC)', 'GQ2(G)', 'GQ3(LC)', 'GQ3(G)', 'GQ4(LC)', 'GQ4(G)', 'GQ5(LC)', 'GQ5(G)', 'FQ1(LC)', 'FQ1(G)', 'FQ2(LC)', 'FQ2(G)', 'FQ3(LC)', 'FQ3(G)', 'FQ4(LC)', 'FQ4(G)', 'FQ5(LC)', 'FQ5(G)');
$con = mysql_connect('localhost', 'root', 'password') or die(mysql_error());
mysql_select_db('matman_test', $con) or die(mysql_error());
$query = mysql_query("SELECT * FROM resources");
if(mysql_num_rows($query) != 0)
{
$records_array = array();
while($data = mysql_fetch_assoc($query))
{
$records_array[] = $data;
}
echo '
<table cellspacing="0" border="0" class="content">
<tr>
<td colspan="3">Land:</td>';
foreach($records_array as $record)
{
echo '<td class="full">'.$record['Country'].'</td>';
}
echo '
</tr>
<tr>
<td align="center">Currency</td>
<td colspan="2">LC in G</td>';
information($field_array[0]);
echo '
</tr>
<tr>
<td align="center">Iron</td>
<td colspan="2">LC</td>';
information($field_array[1]);
echo '
</tr>
</table>';
// enzovoort
}
}
?>
<html>
<head>
<title>e-sim resources module</title>
<link rel="stylesheet" href="css/stylesheet.css" media="screen" />
</head>
<body>
<?php
resources();
?>
<br />
<a href="insert.php">Invoegen</a>
</body>
</html>
function information($field)
{
global $records_array;
foreach($records_array as $record)
{
echo '<td class="full">'.$record['Country'].'</td>';
if($record[$field] == "" || $record[$field] == 0)
{
echo '<td class="empty"> </td>';
}
else
{
echo '<td class="full">'.$record[$field].'</td>';
}
}
}
function resources()
{
global $records_array;
$field_array = array('Currency', 'Iron', 'Iron2', 'Grain', 'Grain2', 'WQ1(LC)', 'WQ1(G)', 'WQ2(LC)', 'WQ2(G)', 'WQ3(LC)', 'WQ3(G)', 'WQ4(LC)', 'WQ4(G)', 'WQ5(LC)', 'WQ5(G)', 'GQ1(LC)', 'GQ1(G)', 'GQ2(LC)', 'GQ2(G)', 'GQ3(LC)', 'GQ3(G)', 'GQ4(LC)', 'GQ4(G)', 'GQ5(LC)', 'GQ5(G)', 'FQ1(LC)', 'FQ1(G)', 'FQ2(LC)', 'FQ2(G)', 'FQ3(LC)', 'FQ3(G)', 'FQ4(LC)', 'FQ4(G)', 'FQ5(LC)', 'FQ5(G)');
$con = mysql_connect('localhost', 'root', 'password') or die(mysql_error());
mysql_select_db('matman_test', $con) or die(mysql_error());
$query = mysql_query("SELECT * FROM resources");
if(mysql_num_rows($query) != 0)
{
$records_array = array();
while($data = mysql_fetch_assoc($query))
{
$records_array[] = $data;
}
echo '
<table cellspacing="0" border="0" class="content">
<tr>
<td colspan="3">Land:</td>';
foreach($records_array as $record)
{
echo '<td class="full">'.$record['Country'].'</td>';
}
echo '
</tr>
<tr>
<td align="center">Currency</td>
<td colspan="2">LC in G</td>';
information($field_array[0]);
echo '
</tr>
<tr>
<td align="center">Iron</td>
<td colspan="2">LC</td>';
information($field_array[1]);
echo '
</tr>
</table>';
// enzovoort
}
}
?>
<html>
<head>
<title>e-sim resources module</title>
<link rel="stylesheet" href="css/stylesheet.css" media="screen" />
</head>
<body>
<?php
resources();
?>
<br />
<a href="insert.php">Invoegen</a>
</body>
</html>
De tabel wordt niet helemaal goed weergegeven,
hij zet steeds het land erbij? :S
Zou je ook eventueel een toelichting bij je code kunnen geven?
Aardig ingewikkeld :P
Deze dus:
echo '<td class="full">'.$record['Country'].'</td>';
Nu moet ik alleen nog wat van de code snappen;
zou je me kunnen helpen? :-)
Regel 37-40: Daar loop je door het array en echo je alleen de Country's.
Verder spring je naar de function information met de veldnaam als parameter. In de function loop je weer helemaal door het array, maar daar echo je alleen de waarden die bij de veldnaam horen.
Ik hoop dat je het een beetje snapt.
kwam een aantal dingen tegen die ik nog nooit heb gebruikt,
maar die ik zeker ga toepassen!
Hartstikke bedankt voor de hulp,
en een fijn weekend toegewenst!
Matthijs Veldhuizen op 11/11/2011 21:05:09:
en een fijn weekend toegewenst!
Jij ook en succes.