DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > PHP
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

PHP PHP aplikacije, Smarty, PEAR

Odgovori
 
Alati teme Način prikaza
Staro 28. 07. 2007.   #1
Nemanja Avramović
emperor Selassie
Grand Master
 
Avatar Nemanja Avramović
 
Datum učlanjenja: 20.10.2006
Lokacija: Mladenovac
Poruke: 754
Hvala: 361
576 "Hvala" u 88 poruka
Nemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoro
Pošaljite ICQ poruku za Nemanja Avramović Pošaljite poruku preko MSN za Nemanja Avramović Pošaljite poruku preko Yahoo za Nemanja Avramović
Default Dodati element u asocijativni niz ne prepisujući postojeći

Da li je ovo moguće?
Naime, pravim neku hall of fame listu ali bez baze podataka (sa bazom bih završio bez ikakvih problema). Evo kako sam ja to uradio:

Imam fajl rezultati.txt u kojem su zapisani razultati u formatu:
igrač:brojpoena

Znači:
Citat:
Avram:10000
Avram:9000
Avram:8000
Avram:7000
Avram:6000
Avram:5000
Avram:4000
Avram:3000
Avram:2000
Avram:1000
Sada treba napraviti da, kada se doda novi igrač sa recimo 5500 poena, on upadne između Avram:6000 i Avram:5000 a da Avram:1000 nestane sa liste.

Evo šta sam do sada uradio:

Kôd:
<?php
$lista = file('rezultati.txt');

$element = 'Nemanja:5500'; //ovo je samo za test

$delovi = explode(':',$element);
$imence = $delovi[0];
$poencici = $delovi[1];

$mojniz = array();

foreach ($lista as $stavka) {
	$p = explode(':',$stavka);
	$mojniz[trim($p[1])] = trim($p[0]);
}

$mojniz[$poencici] = $imence;
krsort($mojniz,SORT_NUMERIC);

print_r($mojniz);
?>
Ovo radi lepo, na kraju dobijem niz tipa:

Citat:
Array
(
[10000] => Avram
[9000] => Avram
[8000] => Avram
[7000] => Avram
[6000] => Avram
[5500] => Nemanja
[5000] => Avram
[4000] => Avram
[3000] => Avram
[2000] => Avram
[1000] => Avram
)
Lako ću da uzmem prvih 10 i da zapišem nazad u fajl. Međutim, problem je kada dođe sledeći igrač sa brojem poena koji već postoji u listi, npr: Pera:5500 - u tom slučaju se ne dodaje novi element 5500 => Pera već mi prepiše postojeći 5500 => Nemanja sa ovim novim 5500 => Pera, što je i logično, ali ja bih hteo da u ovom slučaju to ne radi tako.

Ili mi je možda pristup skroz pogrešan?
__________________
Moj portfolio sajtić | wat?

Poslednja izmena od Nemanja Avramović : 28. 07. 2007. u 16:29.
Nemanja Avramović je offline   Odgovorite uz citat
Staro 28. 07. 2007.   #2
dee
Domagoj Horvat
Expert
 
Avatar dee
 
Datum učlanjenja: 24.07.2006
Lokacija: Zagreb
Poruke: 502
Hvala: 22
10 "Hvala" u 8 poruka
dee is on a distinguished road
Pošaljite ICQ poruku za dee
Default

ako vec mora bez baze, ja bih napravio

$lista = array("igrac1" => "bodovi1" , ... , "igracN" => "bodoviN")

pri upisu novog, sortiras polje po vrijednostima i provjeris je li mu rezultat manji od posljednjeg. ako je, ne ulazi u listu, ako nije, zadnjeg brises i dodajes novog.

ispis takodjer sortiras po vrijednostima.
__________________
postoje ludosti bez kojih je nemoguce ljudsko dostojanstvo
dee je offline   Odgovorite uz citat
Staro 28. 07. 2007.   #3
Nemanja Avramović
emperor Selassie
Grand Master
 
Avatar Nemanja Avramović
 
Datum učlanjenja: 20.10.2006
Lokacija: Mladenovac
Poruke: 754
Hvala: 361
576 "Hvala" u 88 poruka
Nemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoro
Pošaljite ICQ poruku za Nemanja Avramović Pošaljite poruku preko MSN za Nemanja Avramović Pošaljite poruku preko Yahoo za Nemanja Avramović
Default

Da, ali zar onda nije isti slučaj, ako se dodaje igrač sa istim imenom?

Recimo imam array('Avram'=>2200,'Nemanja'=>1350), ako dodam Nemanja=>9245, zar neće da prepiše ovog sa 1350 poena?
__________________
Moj portfolio sajtić | wat?
Nemanja Avramović je offline   Odgovorite uz citat
Staro 28. 07. 2007.   #4
dee
Domagoj Horvat
Expert
 
Avatar dee
 
Datum učlanjenja: 24.07.2006
Lokacija: Zagreb
Poruke: 502
Hvala: 22
10 "Hvala" u 8 poruka
dee is on a distinguished road
Pošaljite ICQ poruku za dee
Default

ovisi koliko ljudi zelis drzat u hall of fame listi?

koliko ja shvacam, to je nesto kao recimo top 10 lista, gdje drzis 10 najboljih rezultata, jel tako?

u tom slucaju, moguce je da je 10 najboljih rezultata postigla samo igraca. u tom slucaju, lista ce bit npr.

Avram:10000
Avram:9000
Nemanja:8000
Avram:7000
Nemanja:6000
Nemanja:5000
Nemanja:4000
Avram:3000
Nemanja:2000
Avram:1000

u principu, ono sto je bitno jest da se pamte rezultati i da se prema njima kreira lista. korisnik koji ga je postigao je samo dodatna informacija.

sto znaci,

Citat:
Recimo imam array('Avram'=>2200,'Nemanja'=>1350), ako dodam Nemanja=>9245, zar neće da prepiše ovog sa 1350 poena?
u ovom slucaju ce ga prepisati ako u hall of fame zelis drzati maksimalno 2 rezultata. tad ce novi rezultat bit (9245) veci od najmanjeg (1350) i najmanji ce bit izbrisan a novi ubacen. neovisno o imenu igraca.
ako pak u hall of fame drzis npr. 10 najboljih rezultata i trenutno unutra imas samo dva (ko u prethodnom postu), skripta doda novi rezultat sa istim imenom igraca, znaci imat ces:

Nemanja:9245
Avram:2200
Nemanja 1350
__________________
postoje ludosti bez kojih je nemoguce ljudsko dostojanstvo
dee je offline   Odgovorite uz citat
Staro 28. 07. 2007.   #5
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

napravi nesto ovako:
PHP kôd:
$top_lista = array (
    [
0] => array ( 'ime' => 'pera''poeni' => 100 ),
    [
1] => array ( 'ime' => 'pera''poeni' => 200 ),
    [
2] => array ( 'ime' => 'zika''poeni' => 100 ),    
); 
i onda samo sortiraj taj niz po polju poeni (pomocu usort() recimo)
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
Staro 28. 07. 2007.   #6
Nemanja Avramović
emperor Selassie
Grand Master
 
Avatar Nemanja Avramović
 
Datum učlanjenja: 20.10.2006
Lokacija: Mladenovac
Poruke: 754
Hvala: 361
576 "Hvala" u 88 poruka
Nemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoroNemanja Avramović će postati "faca" uskoro
Pošaljite ICQ poruku za Nemanja Avramović Pošaljite poruku preko MSN za Nemanja Avramović Pošaljite poruku preko Yahoo za Nemanja Avramović
Default

Hm, može mala pomoć?

Odradio sam ovako nešto (po ugledu na ono iz manuala):

PHP kôd:
//...
function sortirajme($a$b) {
    if (
$a['poeni'] == $b['poeni']) {
        return 
0;
    }
    return (
$a['poeni'] < $b['poeni']) ? -1;
}

$delovi explode(':',$element);
$imence $delovi[0];
$poencici $delovi[1];
$mojniz = array();
$br 0;
foreach (
$lista as $stavka) {
    
$p explode(':',$stavka);
    
$mojniz[$br] = array('ime'=>$p[0], 'poeni'=>$p[1]);
    
$br++;
}
$mojniz[$br] = array('ime'=>$imence'poeni'=>$poencici);
usort($mojniz,'sortirajme');
print_r($mojniz); 
Ono što dobijam je ovako nešto:

Kôd:
Array
(
    [0] => Array
        (
            [ime] => Avram
            [poeni] => 1000
        )

    [1] => Array
        (
            [ime] => Avram
            [poeni] => 10000

        )

    [2] => Array
        (
            [ime] => Avram
            [poeni] => 2000

        )

    [3] => Array
        (
            [ime] => Avram
            [poeni] => 3000

        )

    [4] => Array
        (
            [ime] => Avram
            [poeni] => 4000

        )

    [5] => Array
        (
            [ime] => Avram
            [poeni] => 5000

        )

    [6] => Array
        (
            [ime] => Nemanja
            [poeni] => 5200
        )

    [7] => Array
        (
            [ime] => Avram
            [poeni] => 6000

        )

    [8] => Array
        (
            [ime] => Avram
            [poeni] => 7000

        )

    [9] => Array
        (
            [ime] => Avram
            [poeni] => 8000

        )

    [10] => Array
        (
            [ime] => Avram
            [poeni] => 9000

        )

)
Znači on lepo uglavi ovih 5200 gde treba, ali ne ne kapiram zašto su 1000 i 10000 poena na prva dva mesta?

izmena: USPEO SAM! Samo treba u petlji i dole ispod da se doda (int)

PHP kôd:
foreach ($lista as $stavka) {
    
$p explode(':',$stavka);
    
$mojniz[$br] = array('ime'=>$p[0], 'poeni'=>(int)$p[1]);
    
$br++;
}
$mojniz[$br] = array('ime'=>$imence'poeni'=>(int)$poencici); 
Hvala ivanhoe
__________________
Moj portfolio sajtić | wat?

Poslednja izmena od Nemanja Avramović : 28. 07. 2007. u 18:50.
Nemanja Avramović je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
JS remove html element nordica (X)HTML, JavaScript, DHTML, XML, CSS 3 28. 08. 2010. 01:46
Kako efikasno dodati kolonu, popuniti je i dodati nove indexe na veliku tabelu kaizen SQL baze podataka - Sponzor: Baze-Podataka.net 3 17. 04. 2009. 19:37
JAVA: Da li je moguce dodati argument komandnoj liniji za svako pokretanje aplikacije Nenad Programiranje 4 29. 11. 2007. 19:55
koji cpc postoje osim adsensa buksula Marketing i SEO 26 08. 09. 2007. 05:03
Predlog za novi forum i modifikacije postojećih foruma bluesman Obaveštenja, predlozi i pitanja 18 02. 05. 2007. 21:02


Vreme je GMT +2. Trenutno vreme je 15:03.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.