php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.01.2011, 13:33  
Neuer Benutzer
 
Registriert seit: 25.03.2010
Beiträge: 22
PHP-Kenntnisse:
Anfänger
BVB09 befindet sich auf einem aufstrebenden Ast
Standard nach Verein sortieren und Werte addieren ?

Hallo zusammen.

Bin relativ neu und unerfahren, lerne aber täglich dazu was PHP angeht. Nun komme ich aber irgendwie nicht richtig weiter und hoffe auf eure Hilfe.

Ich habe eine Textdatei und will diese Zeile für Zeile auslesen und dann eine Ausgabe erhalten pro Mannschaft.
Der Aufbau der Textdatei sieht so aus:
Code:
Name§Verein§Tore§Gelbe Karten§Gelb-Rote Karten§Rote Karten§Fairness
E. Abidal§FC Barcelona§0§0§0§1§-5
Pedro§FC Barcelona§0§0§1§0§-3
B. Krkic§FC Barcelona§0§1§0§0§-1
D. Abraham§FC Basel§0§0§1§0§-3
S. Inkoom§FC Basel§0§0§0§1§-5
B. Huggel§FC Basel§0§1§0§0§-1
Wichtig für mein Vorhaben sind momentan nur "Verein" und "Fairness".

Ich möchte gerne das die "Fairness" Werte der gleichen Vereine addiert werden.
In der Ausgabe sollte dann nur der "Verein" und die "Fairness" Werte stehen, also in etwa so:
FC Barcelona -9
FC Basel -9

Folgendes habe ich bereits zusammengekriegt:
PHP-Code:
<?php

$spielerstats 
= array(
    
"lmo/addon/spieler/stats/testliga1.stat",
    
"lmo/addon/spieler/stats/testliga2.stat",
    
"lmo/addon/spieler/stats/testliga3.stat"
);

$dataarray = array();
for (
$i=0;$i<count($spielerstats);$i++) {
    
$dataarray array_merge(file($spielerstats[$i]), $dataarray);
}

for (
$i 1$i count($dataarray); $i++) {
    
$zeilearray explode("§"$dataarray[$i]);
    
$V[$i] = $zeilearray[1];
    
$F[$i] = $zeilearray[6];
}

array_multisort($FSORT_NUMERICSORT_ASC$V );

for (
$i  0;  $i 6$i++) {

    if (
$V[$i]) {
        
$platz $i +1;
    }

echo 
"<tr>";
echo 
"<td>$platz</td>";
echo 
"<td>$V[$i]</td>";
echo 
"<td>$F[$i]</td>";
echo 
"</tr>";
}

?>
Hier werden einfach die Verein und Fairness Werte ausgelesen, nur fehlt eben die Funktion das die mehrfach vorhandene Vereine inkl. ihren Werte addiert und dann ausgegeben werden.

Kann mir da jemand netterweise weiterhelfen ?

MfG

Geändert von BVB09 (19.01.2011 um 14:31 Uhr).
BVB09 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.01.2011, 13:48  
Erfahrener Benutzer
 
Registriert seit: 23.11.2010
Beiträge: 395
PHP-Kenntnisse:
Anfänger
phptt befindet sich auf einem aufstrebenden Ast
Standard

Warum löst du soetwas nicht mit einer Datenbank? Den Kram mit einer Datei und Array's zu händeln, ist unnötig kompliziert.

Und nochwas: Mit "BVB09" schafft man sich nicht unbedingt Freunde
Grüße aus Schalke
__________________
Ich bin eine nervige Signatur!!!
phptt ist offline   Mit Zitat antworten
Alt 19.01.2011, 14:00  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Ich würde die Dateien per fgetcsv Zeile für Zeile auslesen, Vereinsname und Fiarnesspunkte dann entweder neu in den Gesamt-Array eintragen oder, falls der Vereinsname schon im Array ist (in_array()) nur die Punkte addieren.

file() hat immer den Nachteil, dass das letzte Feld den Zeilenumbruch angehängt hat, der immer mit rtrim() entfernt werden muss.

Also so was (ungetestet):

PHP-Code:
$spielerstats = array(
    
"lmo/addon/spieler/stats/testliga1.stat",
    
"lmo/addon/spieler/stats/testliga2.stat",
    
"lmo/addon/spieler/stats/testliga3.stat"
);

$spielerarray = array();
foreach (
$spielerstats as $filename) {
  
$fp fopen$filename"r" );
  while (
$teile fgetcsv($fp1024,";")) {
    
$verein $teile[1];
    
$spieler $teile[0];
    
$punkte $teile[6]; // ???
    
if ( in_array($spieler,$spielerarray) ) {
      
$spielerarray[$spieler] .+ $punkte;
    } else {
      
$spielerarray[$spieler] = $punkte;
    }
  } 
  
fclose($fp);
}

print_r($spielerarray); 
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 19.01.2011, 16:50  
Neuer Benutzer
 
Registriert seit: 25.03.2010
Beiträge: 22
PHP-Kenntnisse:
Anfänger
BVB09 befindet sich auf einem aufstrebenden Ast
Standard

@phptt
Das Skript (lmo) welches die Textdateien befüllt, arbeitet ohne Datenbank.
Ist aber natürlich korrekt, das wäre die beste Lösung.

hehe, ich hoffe das der Name "BVB09" nicht dazu führt das mir nicht geholfen wird ...gruss


@Wolla
Wenn ich den Code so übernehme bekomme ich folgende Ausgabe:
Code:
Array ( [Name§Verein§Tore§Gelbe Karten§Gelb-Rote Karten§Rote Karten§Fairness] => [E. Abidal§FC Barcelona§0§0§0§1§-5] => [Pedro§FC Barcelona§0§0§1§0§-3] => [B. Krkic§FC Barcelona§0§1§0§0§-1] => [D. Abraham§FC Basel§0§0§1§0§-3] => [S. Inkoom§FC Basel§0§0§0§1§-5] => [B. Huggel§FC Basel§0§1§0§0§-1] => )
Muss ich bei dem Code noch was ändern bzw. Was habe ich falsch gemacht ?

Evtl. habe ich mich im ersten Beitrag nicht korrekt ausgedrückt, wichtig für mein Vorhaben sind nur "Verein" und "Fairness". Ich möchte gerne das die "Fairness" Werte der gleichen Vereine addiert werden. In der Ausgabe sollte dann nur der "Verein" und die "Fairness" Werte stehen, also in etwa so:
FC Barcelona -9
FC Basel -9

Wenn ich könnte dann würde ich es selbst machen, kenne mich aber in PHP zu wenig aus bzw. habe mich noch zu wenig in die thematik eingearbeitet.

Ich bitte um Hilfe, bin auch gerne bereit was dafür zu bezahlen wenn das ganze dann funktioniert wie ich mir das vorgestellt habe. Den ich schätze das wie sich manche hier Zeit nehmen nur um den teils "unfähigen" Usern zu helfen.

Es wäre echt nett wenn mir jemand helfen könnte.

MfG

Geändert von BVB09 (19.01.2011 um 17:01 Uhr).
BVB09 ist offline   Mit Zitat antworten
Alt 19.01.2011, 16:53  
Neuer Benutzer
 
Registriert seit: 29.12.2010
Beiträge: 14
PHP-Kenntnisse:
Fortgeschritten
Jonas2909 befindet sich auf einem aufstrebenden Ast
Standard

Nimm ne DB, addiere die Werte und fertig..

Achja, grüße aus dem Signal Iduna Park =)
Jonas2909 ist offline   Mit Zitat antworten
Alt 19.01.2011, 18:18  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Ich hab in meinem Code als Trennzeichen ein ; und kein § drin - daher funktioniert das so nicht.
Probier das aus und wenn es auch nicht geht, dann schau dir den Code aus der Nähe an und versuch rauszufinden, wo es klemmt.

PHP-Code:
$spielerstats = array(
    
"lmo/addon/spieler/stats/testliga1.stat",
    
"lmo/addon/spieler/stats/testliga2.stat",
    
"lmo/addon/spieler/stats/testliga3.stat"
);
$array = array();
foreach (
$spielerstats as $filename) {
  
$fp fopen$filename"r" );
  while (
$teile fgetcsv($fp1024,"§")) {
    
$verein $teile[1];
    
$spieler $teile[0];
    
$punkte $teile[6]; // ???
    
if ( in_array($verein,$array) ) {
      
$array[$verein] .+ $punkte;
    } else {
      
$array[$verein] = $punkte;
    }
  } 
  
fclose($fp);
}
print_r($array); 
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 19.01.2011, 18:41  
Neuer Benutzer
 
Registriert seit: 25.03.2010
Beiträge: 22
PHP-Kenntnisse:
Anfänger
BVB09 befindet sich auf einem aufstrebenden Ast
Standard

Ok thx schon mal !

Also jetzt es wie folgt ausgegeben:
Code:
Array ( [Verein] => Fairness [FC Barcelona] => -1 [FC Basel] => -1 )
Ist das korrekt so ?

Die Vereine werden nun nur noch einmal angezeigt, das ist schon mal wunderbar. Jedoch scheint es als würden die Fairness Punkte nicht addiert, weil da steht jeweils nur -1, es müssten aber bei beiden Vereine jeweils -9 sein.

Ich selbst habe jetzt schon keinen Plan mehr, daher wäre ich sehr dankbar wenn du mir jemand helfen könntest den Code zu vervollständigen.

MfG
BVB09 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Vie Formular empfangene Daten berarbeiten und an remote PHP Skript senden fr3sh PHP Einsteiger 4 27.01.2011 10:20
sortieren nach datum, daten vor 1.1.1970 moose Datenbanken 2 21.07.2008 10:50
Daten beliebig sortieren Das Devil Datenbanken 7 29.03.2008 17:58
Daten aus XML sortieren GSJLink HTML, Usability und Barrierefreiheit 13 09.12.2007 18:24
Mehrere Arrays unterschiedlicher Größe kombinieren querfisch PHP Tipps 2007 9 31.03.2007 21:34
MYSQL daten bei der ausgabe sortieren DrWeb Datenbanken 2 29.07.2006 10:09
spalten addieren und sortieren wizzardxx Datenbanken 4 01.04.2006 00:52
Daten sortieren? Smily0412 Datenbanken 3 10.03.2006 21:09
Daten aus File sortieren Simon9990 PHP Tipps 2005-2 12 26.07.2005 09:06
Addieren von 3 Spalten, nach Ergebnis sortieren Datenbanken 11 15.06.2005 09:54
Daten in Datenbank ändern PHP Tipps 2005 3 27.01.2005 14:40
Daten einer Textdatenbank nach Datum sortieren PHP Tipps 2004-2 10 20.11.2004 11:29
sortieren und ordnen von daten aus DB?! PHP Tipps 2004 2 05.11.2004 08:58
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
[Erledigt] mysql Daten abfragen und sortieren von b Datenbanken 2 11.06.2004 09:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
$spielerstats = array(, kann man bei lmo in spalten sortieren, mysql spalte nach gleichem datum addieren, php array sortieren und gleiche addieren, mysql werte nach datum auslesen und addieren, so und fc addieren?, sortieren und summieren php, mysql werte aus zeilen addieren, php array_merge value addieren, lmo addons, nach gleichen zellen sortieren und summieren, php mysql pro user beste 5 werte addieren, wie kann man bei lmo die spieler sortieren, rote karten nach vereinen, php werte mit gleichem datum addieren, lmo spieler sortierung, array liste bei gleicher spalte addieren, mysql werte addieren und sortieren, sortierte felder zusammenzählen, in_array = array addieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:53 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum