if - statement probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Marco

Marco

07/05/2008 12:41:00
Quote Anchor link
Ik heb de volgende code:
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
        $file = file("D:\srcds\cstrike\cfg\mani_admin_plugin\data\mani_ranks.txt");
        
        for($i = 0; $i < count($file); $i++) {
            $line = explode(",", $file[$i]);
            echo $line[64];
            
            if($line[64] == $_GET['player']) {
                echo "Match";
            }
                        else {
                                echo "Geen match";
                        }
        }
    }


Via een formulier krijgt deze code een bepaalde naam ($_GET['player']). Daarnaast komt er een naam uit een array ($line[64]), die elke run veranderd. Op een bepaald punt moeten de twee namen hetzelfde zijn. Als dat gebeurd, moet de if-statement dat in de gaten krijgen en er 'Match' uitgooien. Toch krijg ik altijd een 'Geen match', ongeacht of de namen hetzelfde zijn of niet. Heeft iemand een idee hoe dat komt? Overigens heb ik deze setup ook met een 'foreach' loop geprobeerd, die hetzelfde doet.
 
PHP hulp

PHP hulp

22/11/2024 07:24:59
 
Cake Masher

Cake Masher

07/05/2008 12:52:00
Quote Anchor link
weet je egt zeker of de namen wel het zelfde zijn?

Je kan ook zelf een beetje gaan debuggen eh?

Vervang bijvoorbeeld dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "Geen match";


naar dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "Geen match, want '" . $_GET['player'] . "' is niet '" . $line[64] . "'";
 
Wolfje

wolfje

07/05/2008 13:05:00
Quote Anchor link
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
$file = file("test.txt");
$player = $_GET['player'];

        for($i = 0; $i < count($file); $i++) {
            $line = explode(",", $file[$i]);
            }

foreach ($line as $line2){
            if($line2 == $player) {
                echo "Match want $line2 = $player <br>";
            }
                        else {
                                echo "Geen match want $line2 = niet $player <br>";
                        }
        }


werkt bij mij goed (weet niet of het helemaal is wat je wil)
maar je kan het aanpassen

txt file = "dier,mens,alien"
url = index.php?player=mens
output =
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
Geen match want dier = niet mens
Match want mens = mens
Geen match want alien = niet mens
Gewijzigd op 01/01/1970 01:00:00 door wolfje
 
Marco

Marco

07/05/2008 13:39:00
Quote Anchor link
Ik heb de code nu aangepast naar het volgende:
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
        $file = file("D:\srcds\cstrike\cfg\mani_admin_plugin\data\mani_ranks.txt");
        $player_get = $_GET['player'];
        
        foreach($file as $key => $value) {
            $line = explode(",", $value);
            $player_array = $line[64];
            
            echo $player_get." - ".$player_array;
            
            if($player_get == $player_array) {
                echo " - Match<br>";
            }
            else {
                echo " - Geen match<br>";
            }


Hiermee kom ik op het volgende:
http://csjrl.metalhazards.nl/?player=eckes2
Gewijzigd op 01/01/1970 01:00:00 door Marco
 
Wolfje

wolfje

07/05/2008 13:51:00
Quote Anchor link
wat wil jij met $line[64] waarom gebruik jij die?
 
- SanThe -

- SanThe -

07/05/2008 15:01:00
Quote Anchor link
Zet dit bovenin je script.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
 
Marco

Marco

07/05/2008 15:17:00
Quote Anchor link
Mijn script begint met een bestand, waarin statistieken staan over srcds servers. Elke regel is een bepaalde player, waarin zijn gegevens staan. Elk gegeven is gescheiden met een komma. Met de file() functie maak ik een array van het bestand, waarin elk item een regel is. Elke regel splits ik dan op in gegevens met de explode() functie.

Aan het einde heb ik dus een array van 1 player, waarin elk item een bepaald gegeven is, zoals kills en deaths. Item nummer 65 (dus 64 in php) is de naam van de player. Ik wil door middel van een GET-formulier de info oproepen van één bepaalde player. Dit probeer ik te bereiken met het gegeven script. In dat script wordt de nickname uit het statistieken-bestand vergeleken met de nickname die de website-bezoeker opgeeft.

Inmiddels heb ik gevonden dat de informatie uit de array niet goed is:
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
        $file = file("D:\srcds\cstrike\cfg\mani_admin_plugin\data\mani_ranks.txt");
        $player_get = $_GET['player'];
        
        foreach($file as $key => $value) {
            $line = explode(",", $value);
            $player_array = $line[64];
            
            echo $player_get." - ".$player_array;
            
            if("The Mad Man [NL]" == $player_array) {
                echo " - Match<br>";
            }
            else {
                echo " - Geen match<br>";
            }
        }


Het bovenstaande geeft geen match, hierbij vergelijk ik de naam (hardcoded) met de array. Volgens php zijn de twee niet geijk.

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
        $file = file("D:\srcds\cstrike\cfg\mani_admin_plugin\data\mani_ranks.txt");
        $player_get = $_GET['player'];
        
        foreach($file as $key => $value) {
            $line = explode(",", $value);
            $player_array = $line[64];
            
            echo $player_get." - ".$player_array;
            
            if($player_get == "The Mad Man [NL]") {
                echo " - Match<br>";
            }
            else {
                echo " - Geen match<br>";
            }
        }


Deze code werkt wel. Hierin heb ik de naam gehardcode. PHP ziet de GET input als een goede match.

Conclusie: De array geeft niet precies de goede info. Zou het kunnen dat er bepaalde tags inzitten die je niet ziet maar wel aanwezig zijn?
 
- SanThe -

- SanThe -

07/05/2008 15:24:00
Quote Anchor link
echo $line[64] dan zie je wat daar in zit.
 
Marco

Marco

07/05/2008 15:43:00
Quote Anchor link
Ogenschijnlijk lijkt er een naam in $line[64] te zitten, als ik die echo. Maar ik zie nu dat er nog een spatie achter zit. Is er een functie waarmee ik die spatie van het woord af zou kunnen halen?
 
Wolfje

wolfje

07/05/2008 15:45:00
Quote Anchor link
str_replace
Gewijzigd op 01/01/1970 01:00:00 door wolfje
 
- wes  -

- wes -

07/05/2008 15:50:00
Quote Anchor link
trim()
 
Marco

Marco

07/05/2008 15:54:00
Quote Anchor link
Ok, het is nu eindelijk gelukt, middels de trim functie. Iedereen in deze thread bedankt!
 



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.