Waarde string in loop if loopt door

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ferdi R

Ferdi R

27/08/2014 17:02:58
Quote Anchor link
Ik haal gegevens uit de database die ik match met een array en dat werk goed, alleen als ik de if else statements gebruik lopen de waardes door.

1 - NTSC
2 - NTSC <- Deze waarde hoort er niet maar wordt wel getoond.
3 - NTSC
4 - NTSC
5 - NTSC

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
            
        }
        
    }

?>
 
PHP hulp

PHP hulp

24/04/2024 17:11:24
 
Ferdi R

Ferdi R

28/08/2014 19:02:43
Quote Anchor link
Als ik op Google zoek kom ik op mijn eigen post uit op PHPHulp.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
            
        }
        
    }

?>
Gewijzigd op 28/08/2014 19:03:36 door Ferdi R
 
Gerhard l

gerhard l

28/08/2014 19:38:31
Quote Anchor link
Door er een var van te maken en dan controleren of deze hetzelfde is als de volgende? Snap niet precies wat je wilt.
 
Ferdi R

Ferdi R

28/08/2014 20:35:45
Quote Anchor link
Dat heb ik gedaan in de eerste code maar dan wordt elke rij gevuld met een waarde wat juist niet moet.

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
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

28/08/2014 20:43:08
Quote Anchor link
Dit zegt ons nog niets, je geeft niet anders dan zoekplaatjes.
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
 
Ferdi R

Ferdi R

28/08/2014 22:23:33
Quote Anchor link
Tja wat is normaliseren. Als ik het niet op deze manier in de database plaats dan moet ik 15 kolommen en een tabel erbij maken.

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
 
Willem vp

Willem vp

28/08/2014 23:59:54
Quote Anchor link
Volgens mij is het probleem dat $dbcode niet gereset wordt.

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...
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/08/2014 13:00:44
Quote Anchor link
in plaats van dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
           if(strlen($i) == 2){ $i = '0'.$i; } else if(strlen($i) == 1){ $i = '00'.$i; }
?>

kun je dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$i
= str_pad($i, 3, '0', STR_PAD_LEFT);
?>
 
Ferdi R

Ferdi R

29/08/2014 14:12:19
Quote Anchor link
@Frank, bedankt

@Willem, de array leeg maken helpt niet, die heb ik in de for loops nodig, ook in en if/else
 
Willem vp

Willem vp

29/08/2014 14:59:22
Quote Anchor link
> 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.
 
Ferdi R

Ferdi R

29/08/2014 15:28:00
Quote Anchor link
@Willem, Dat werkte niet maar dit wel.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
            $showregion
= '';
            $showregiob = '';
            $showregioa = '';
?>


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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.