Waarde string in loop if loopt door
1 - NTSC
2 - NTSC <- Deze waarde hoort er niet maar wordt wel getoond.
3 - NTSC
4 - NTSC
5 - NTSC
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
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
<?php
else
{
$i = '0';
while($arow = mysql_fetch_array($ares))
{
$i++;
if(strlen($i) == 2){ $i = '0'.$i; } else if(strlen($i) == 1){ $i = '00'.$i; }
$dbcodes = explode(', ', $arow['codes']);
echo '<li>'.$i.' - '.$arow['titel'];
for ($q = 0; $q <= count($dbcodes); $q++)
{
$dbcode[$q] = substr($dbcodes[$q], 7, 3);
$palbcodes = array('NOE', 'FRA', 'EEC', 'ESP', 'FRG', 'SCN', 'HOL', 'FAH');
$palacodes = array('UKV', 'GBR', 'ITA', 'AUS');
$ntsccodes = array('USA', 'CAN');
for ($b = 0; $b < count($palbcodes); $b++)
{
if($dbcode[$q] == $palbcodes[$b])
{
if($sortregio == 'PALB')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else if($sortregio == 'ALL')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else
{
$showregiob = '<span class="code">PAL B</span>';
}
//echo $dbcode[$q].' is PAL B.<br />';
}
}
for ($a = 0; $a < count($palacodes); $a++)
{
if($dbcode[$q] == $palacodes[$a])
{
if($sortregio == 'PALA')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else if($sortregio == 'ALL')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else
{
$showregioa = '<span class="code">PAL A</span>';
}
//echo $dbcode[$q].' is PAL A.<br />';
}
}
for ($n = 0; $n < count($ntsccodes); $n++)
{
if($dbcode[$q] == $ntsccodes[$n])
{
if($sortregio == 'NTSC')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else if($sortregio == 'ALL')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else
{
$showregion = '<span class="code">NTSC</span>';
}
//echo $dbcode[$q].' is NTSC.<br />';
}
}
}
echo $showregiob.''.$showregioa.''.$showregion.'</li>';
}
}
?>
else
{
$i = '0';
while($arow = mysql_fetch_array($ares))
{
$i++;
if(strlen($i) == 2){ $i = '0'.$i; } else if(strlen($i) == 1){ $i = '00'.$i; }
$dbcodes = explode(', ', $arow['codes']);
echo '<li>'.$i.' - '.$arow['titel'];
for ($q = 0; $q <= count($dbcodes); $q++)
{
$dbcode[$q] = substr($dbcodes[$q], 7, 3);
$palbcodes = array('NOE', 'FRA', 'EEC', 'ESP', 'FRG', 'SCN', 'HOL', 'FAH');
$palacodes = array('UKV', 'GBR', 'ITA', 'AUS');
$ntsccodes = array('USA', 'CAN');
for ($b = 0; $b < count($palbcodes); $b++)
{
if($dbcode[$q] == $palbcodes[$b])
{
if($sortregio == 'PALB')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else if($sortregio == 'ALL')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else
{
$showregiob = '<span class="code">PAL B</span>';
}
//echo $dbcode[$q].' is PAL B.<br />';
}
}
for ($a = 0; $a < count($palacodes); $a++)
{
if($dbcode[$q] == $palacodes[$a])
{
if($sortregio == 'PALA')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else if($sortregio == 'ALL')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else
{
$showregioa = '<span class="code">PAL A</span>';
}
//echo $dbcode[$q].' is PAL A.<br />';
}
}
for ($n = 0; $n < count($ntsccodes); $n++)
{
if($dbcode[$q] == $ntsccodes[$n])
{
if($sortregio == 'NTSC')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else if($sortregio == 'ALL')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else
{
$showregion = '<span class="code">NTSC</span>';
}
//echo $dbcode[$q].' is NTSC.<br />';
}
}
}
echo $showregiob.''.$showregioa.''.$showregion.'</li>';
}
}
?>
Hoe kan ik er nu voor zorgen dat als PALA 4 keer wordt gevonden hij het maar 1 keer laat echoën.
Dus regel 52
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
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
<?php
else
{
$i = '0';
while($arow = mysql_fetch_array($ares))
{
$i++;
if(strlen($i) == 2){ $i = '0'.$i; } else if(strlen($i) == 1){ $i = '00'.$i; }
$dbcodes = explode(', ', $arow['codes']);
echo '<li>'.$i.' - '.$arow['titel'];
for ($q = 0; $q <= count($dbcodes); $q++)
{
$dbcode[$q] = substr($dbcodes[$q], 7, 3);
$palbcodes = array('NOE', 'FRA', 'EEC', 'ESP', 'FRG', 'SCN', 'HOL', 'FAH');
$palacodes = array('UKV', 'GBR', 'ITA', 'AUS');
$ntsccodes = array('USA', 'CAN');
for ($b = 0; $b < count($palbcodes); $b++)
{
if($dbcode[$q] == $palbcodes[$b])
{
if($sortregio == 'PALB' || $sortregio == 'ALL')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else
{
echo '<span class="code">PAL B</span>';
}
//echo $dbcode[$q].' is PAL B.<br />';
}
}
for ($a = 0; $a < count($palacodes); $a++)
{
if($dbcode[$q] == $palacodes[$a])
{
if($sortregio == 'PALA' || $sortregio == 'ALL')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else
{
echo '<span class="code">PAL A</span>';
}
//echo $dbcode[$q].' is PAL A.<br />';
}
}
for ($n = 0; $n < count($ntsccodes); $n++)
{
if($dbcode[$q] == $ntsccodes[$n])
{
if($sortregio == 'NTSC' || $sortregio == 'ALL')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else
{
echo '<span class="code">NTSC</span>';
}
//echo $dbcode[$q].' is NTSC.<br />';
}
}
}
echo '</li>';
}
}
?>
else
{
$i = '0';
while($arow = mysql_fetch_array($ares))
{
$i++;
if(strlen($i) == 2){ $i = '0'.$i; } else if(strlen($i) == 1){ $i = '00'.$i; }
$dbcodes = explode(', ', $arow['codes']);
echo '<li>'.$i.' - '.$arow['titel'];
for ($q = 0; $q <= count($dbcodes); $q++)
{
$dbcode[$q] = substr($dbcodes[$q], 7, 3);
$palbcodes = array('NOE', 'FRA', 'EEC', 'ESP', 'FRG', 'SCN', 'HOL', 'FAH');
$palacodes = array('UKV', 'GBR', 'ITA', 'AUS');
$ntsccodes = array('USA', 'CAN');
for ($b = 0; $b < count($palbcodes); $b++)
{
if($dbcode[$q] == $palbcodes[$b])
{
if($sortregio == 'PALB' || $sortregio == 'ALL')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else
{
echo '<span class="code">PAL B</span>';
}
//echo $dbcode[$q].' is PAL B.<br />';
}
}
for ($a = 0; $a < count($palacodes); $a++)
{
if($dbcode[$q] == $palacodes[$a])
{
if($sortregio == 'PALA' || $sortregio == 'ALL')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else
{
echo '<span class="code">PAL A</span>';
}
//echo $dbcode[$q].' is PAL A.<br />';
}
}
for ($n = 0; $n < count($ntsccodes); $n++)
{
if($dbcode[$q] == $ntsccodes[$n])
{
if($sortregio == 'NTSC' || $sortregio == 'ALL')
{
echo '<span class="code">'.$dbcode[$q].'</span>';
}
else
{
echo '<span class="code">NTSC</span>';
}
//echo $dbcode[$q].' is NTSC.<br />';
}
}
}
echo '</li>';
}
}
?>
Gewijzigd op 28/08/2014 19:03:36 door Ferdi R
Door er een var van te maken en dan controleren of deze hetzelfde is als de volgende? Snap niet precies wat je wilt.
Ik moet zeg maar hebben
1 - NOE FRA FAH PALA NTSC
2 - NOE FRA FAH PALA
3 - NOE FRA FAH PALA NTSC
4 - NOE FRA FAH NTSC
Maar het script laat de waardes doorlopen zoals
1 - NOE FRA FAH PALA NTSC
2 - NOE FRA FAH PALA NTSC
3 - NOE FRA FAH PALA NTSC
4 - NOE FRA FAH PALA NTSC
Wij weten niet wat je uit je database krijgt, dus ook niet wat je aan het vergelijken bent.
Overigens is het als je een explode moet doen op een waarde uit een kolom een teken van een niet genormaliseerde database
Mijn tabel met games is:
ID - TITEL - CODES
1 - Naam van game - NES-F5-NOE, NES-F5-FRA, NES-B5-UKV, NES-B5-USA
2 - Naam van game - NES-BS-NOE, NES-BS-FRA, NES-BS-UKV
3 - Naam van game - NES-ML-NOE, NES-ML-FRA, NES-ML-USA
De laatste 3 letters van de codes zeggen iets over de regio van de game, die wil ik dus ophalen en dat gaat verder goed.
PALB, PALA en NTSC zijn de regio's en daarom heb ik codes in array's geplaatst zodat je weet welke code welke regio is.
Dan wil ik als er gesorteerd wordt op regio PALB dat je alle PALB codes ziet en niet alle PALA en NTSC maar alleen de woorden PALA en NTSC. (als er PALA en NTSC code bestaat van de game)
In de 2de code die ik heb geplaatst gaat het goed maar in de output wordt 3 x PALA getoond omdat er 3 PALA codes in de database staat.
Output 2de code
1 - NOE FRA FAH PALA PALA PALA NTSC
2 - NOE FRA FAH PALA
3 - NOE FRA FAH PALA PALA NTSC NTSC
4 - NOE FRA FAH NTSC
Bij de eerste code laat de output PALA 1 keer zien wat ik wil maar dan wordt de waarde van de string doorgegeven als de string eigenlijk leeg is. want ID 2 heeft geen NTSC en ID 4 heeft geen PALA
Output code 1
1 - NOE FRA FAH PALA NTSC
2 - NOE FRA FAH PALA NTSC
3 - NOE FRA FAH PALA NTSC
4 - NOE FRA FAH PALA NTSC
Maar wat ik juist moet hebben is:
1 - NOE FRA FAH PALA NTSC
2 - NOE FRA FAH PALA
3 - NOE FRA FAH PALA NTSC
4 - NOE FRA FAH NTSC
Ik hoop dat dit wat duidelijker is.
Gewijzigd op 28/08/2014 22:26:04 door Ferdi R
Als je binnen de while, maar voor de buitenste for-loop $dbcode leegmaakt ($dbcode=array() of zoiets) dan zou het goed moeten gaan.
Overigens zie ik niet hoe je 15 kolommen kunt krijgen als je dit gaat normaliseren...
Code (php)
kun je dit doen:
@Willem, de array leeg maken helpt niet, die heb ik in de for loops nodig, ook in en if/else
Als ik je code goed lees, gebruik je $dbcode om per record te bepalen welke codes van toepassing zijn. Dat betekent dus, dat je hem bij elk nieuw record moet leegmaken, omdat je anders de waardes van je oude record erin blijven staan. En laat dat nu precies zijn wat er gebeurt... ;-)
Let wel: je moet $dbcode leegmaken op regel 14 en niet later, want dan gaat het wel mis.
De laatste strings die ik aanmaak moeten eerst leeg gemaakt worden. het is opgelost nu.
Nog even over het normaliseren, hoe zouden jullie het doen dan?
Gewijzigd op 29/08/2014 15:51:19 door Ferdi R