if - statement probleem
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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";
}
}
}
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.
Je kan ook zelf een beetje gaan debuggen eh?
Vervang bijvoorbeeld dit:
naar dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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>";
}
}
$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)
1
2
3
2
3
Geen match want dier = niet mens
Match want mens = mens
Geen match want alien = niet mens
Match want mens = mens
Geen match want alien = niet mens
Gewijzigd op 01/01/1970 01:00:00 door wolfje
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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>";
}
$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
wat wil jij met $line[64] waarom gebruik jij die?
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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>";
}
}
$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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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>";
}
}
$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?
echo $line[64] dan zie je wat daar in zit.
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?
str_replace
Gewijzigd op 01/01/1970 01:00:00 door wolfje
trim()
Ok, het is nu eindelijk gelukt, middels de trim functie. Iedereen in deze thread bedankt!