<?php
error_reporting(E_ALL);
$lines = file('http://nl2n.tribalwars.nl/map/tribe.txt');

echo '<table>';
echo '<tr>';
echo '<td>ID</td><td>Name</td><td>Ally</td><td>Villages</td><td>Points</td><td>Rank</td>';
echo '</tr>';

foreach($lines as $line) {
    list($id, $name, $ally, $villages, $points, $rank) = explode(',', $line);
	sort($points);
    if($ally == '7992') {
        echo '<tr>';
        echo '<td>'.$id.'</td>';
        echo '<td>'.$name.'</td>';
        echo '<td>'.$ally.'</td>';
        echo '<td>'.$villages.'</td>';
        echo '<td>'.$points.'</td>';
        echo '<td>'.$rank.'</td>';    
        echo '</tr>';
    }
}

echo '</table>';
?>


Dit is mijn code. Nu wil ik alles sorteren op $points, maar dit is geen array daardoor werkt de code [func]sort[/func] niet. Mijn vraag dus hoe kan je van gegevens een array kan maken zodat je ik hem dmv sort kan sorteren?

http://www.daanvd.nl//tribalwars.php

Hier kan je zien hoe het eruit komt. Hij pakt het is volgorde zoals het in het txt bestand staat.
Ik zou het importeren van dit bestand overlaten aan phpmyadmin. Je kunt dit via de IMPORT functie namelijk heel makkelijk importeren.

Het onderhouden van deze gegevens zou ik dan weer overlaten aan je php script...
Oké het ophalen kan ik dan zelf wel, maar ze staan nu in een database. Hoe zet ik dat UPDATE precies in het php script?
Op precies dezelfde plaats waar je nu je txt bestand update, neem je gewoon een UPDATE query in je script op. Met deze query update je de juiste records in de database...

ps. Ik weet niet precies hoe en wanneer je je txt bestand update, dus ik kan er ook niet echt een duidelijk voorbeeld bij geven.
Bij elke verandering in het spel wordt de lijst geupdate. Dus als je bij de pagina UPDATE doet word hij elke keer vernieuwd, maar dit is eigenlijk precies de zelfde manier als hiervoor alleen gaat nu alles eerst via een database.
Juist ja. Met het verschil dat een database juist voor dit soort doeleinden bedoeld is en een txt bestand eigenlijk niet!
@Blanche, ben je je ervan bewust dat dat .txt bestandje niet op Daan zijn host staat. En dat Daan niet dat .txt bestandje doet updaten maar de site: http://www.tribalwars.nl dat doet? In dat geval gaat dat dus niet werken omdat je elke seconde dan wel die .txt bestand moet importeren etc.

Onbegonnen werk? Weet ik niet, maar het gaat wel veel bandbreedte kosten.
Is dat zo? Daar heb ik nog helemaal niet aan gedacht.

Als je zelf niet de beheerder van de gegevens bent, is het gebruik van een database natuurlijk zinloos. Maar nu begrijp ik dus ook waarom er in het script
<?php
if($ally == '7992')
?>
staat. Je wilt zeker alleen je eigen gegevens ophalen?

In dat geval kun je het script vele malen sneller maken door eerst alleen je eigen gegevens te selecteren en dan pas te sorteren.

ps. Zoiets dus:
<?php
error_reporting(E_ALL);
$aLines = file('http://nl2n.tribalwars.nl/map/tribe.txt');

$aId = array();
$aName = array();
$aAlly = array();
$aVillages = array();
$aPoints = array();
$aRank = array();

$n = 0;
foreach($aLines as $sLine)
{
list($sId, $sName, $sAlly, $sVillages, $sPoints, $sRank) = explode(',', $sLine);
if($sAlly == '7792')
{
$aId[$n] = $sId;
$aName[$n] = $sName;
$aAlly[$n] = $sAlly;
$aVillages[$n] = $sVillages;
$aPoints[$n] = $sPoints;
$aRank[$n] = $sRank;

$n++;
}
}

array_multisort($aPoints, SORT_DESC, $aId, $aName, $aAlly, $aVillages, $aRank);


for($i = 0; $i < count($aId); $i++)
{
$aData[$i]['id'] = $aId[$i];
$aData[$i]['name'] = $aName[$i];
$aData[$i]['ally'] = $aAlly[$i];
$aData[$i]['villages'] = $aVillages[$i];
$aData[$i]['points'] = $aPoints[$i];
$aData[$i]['rank'] = $aRank[$i];
}

echo '<pre>'.print_r($aData ,true).'</pre>';
?>
Dankje, ik was er al uit omdat 50 dingen uit een txt document geen problemen mag veroorzaken in het geheugen. Nu minste jij dit wat daarjuist had verbeterd.
if($sAlly == '7992'),

Nu heb ik nog 1 vraag. Hoe verander je de + is een spatie?
<?php
$content = str_replace('+', ' ', $content);
?>
Ik zat weer heel moeilijk te denken :L Bedankt

Trouwens zit me net te bedenken dat het ook zo kan. Nu neemt hij ook meteen alle andere tekens mee :P:
$sName = urldecode($sName);
$sName = addslashes($sName);



EDITEDITEDIT:
Ik heb nu ook een rang meegegeven, maar niet begint bij 0??? Hoe kan ik die bij 1 laten beginnen?

Reageren