2Danke
ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
175
175
EMPFEHLEN
-
Ich habe eine Tabelle (tabelle). Diese Tabelle hat mehrere Felder (id, person, fruechte).
Es gibt mehrere Werte in 'fruechte', diese sind mit Komma getrennt. z.B.:id
1
person
Peter
fruechte
Apfel,Banane,Birneid
2
person
Paul
fruechte
Kirsche,Apfel,BananeNun möchte ich eine Auflistung machen (10 Einträge in Liste), die sortiert ist nach der Frucht, die am meisten verwendet wurde. z.B.:id
3
person
Robert
fruechte
Apfel,Pfirsich- Apfel (3)
- Banane (2)
- Birne (1)
- Kirsche (1)
- Pfirsich (1)
- ...
Wie kann ich das machen?
-
Mit str_word_count() und array_count_values
Code PHP:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
<?php $data = array( array( 'id' => 1, 'person' => 'Peter', 'fruechte' => 'Apfel,Banane,Birne'), array( 'id' => 2, 'person' => 'Paul', 'fruechte' => 'Kirsche,Apfel,Banane'), array( 'id' => 3, 'person' => 'Robert', 'fruechte' => 'Apfel,Pfirsich ') ); //Liste der durchsuchenden Feldern $searchFields = array('fruechte'); //für jede [key]=>[value] Kombination die Funktion countWords aufrufen array_walk_recursive($data, 'countWords', $searchFields); //Nach Häufigkeit absteigend sortieren arsort($wordList); //Liste Ausgeben foreach($wordList as $word => $count) echo "{$word}: {$count}<br />"; /** * Callback Function um die Wörter in den Arrays zu zählen * @param $item * @param $key * @param $searchFields */ function countWords($item, $key, $searchFields){ if(in_array($key, $searchFields)){ //Die Wörter auflisten und zählen -> array([wort]=>anzahl) $thisWords = array_count_values(str_word_count($item, 1)); //jeder Eintrag der gefundenen Wörter der wordList hinzufügen array_walk($thisWords, 'addToWordList'); } } /** * Wort der Wörterliste hinzufügen * @param $count * @param $word */ function addToWordList($count, $word){ $GLOBALS['wordList'][$word] = $GLOBALS['wordList'][$word]+($count); } ?>
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
27.05.10 15:37 #3
- Registriert seit
- Jun 2007
- Ort
- Passau (Niederbayern)
- Beiträge
- 1.394
Hallo,
das einfachste wäre es, deine Tabelle den Datenbank Normalformen entsprechend zu modellieren.
Das heißt, du lagerst das Feld "fruechte" in eine extra Tabelle aus.
Bsp:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
Person ---------- name: varchar Fruechte ---------- bezeichnung: varchar PersonFruechte: --------- person: varchar (references Person.name) frucht: varchar (references Fruechte.bezeichnung)
Dann kannst du dir mit der folgenden Query die Daten holen:
Code sql:1
SELECT COUNT(*), frucht FROM PersonFruechte GROUP BY frucht;
Die andere Variante, alles so zu lassen wie es ist, wäre um einiges aufwändiger. Du müsstest dir die Früchte holen, in eine Array aufteilen und dann die entsprechenden Variablen mit PHP hochzählen lassen. // Edit: so wie es yaslaw vorschlägt
Gruß
BKÜber eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
"Though a program be but three lines long, someday it will have to be maintained.''
-- Geoffrey James, "The Tao of Programming"
-
@ yaslaw
Wie lautet das $data in Form einer mysql_query?
Ähnliche Themen
-
GridView und Filterung
Von Razorhawk im Forum .NET Web und KommunikationAntworten: 1Letzter Beitrag: 15.06.10, 11:24 -
Filterung von Hausnummern aus internationalen Adressformaten
Von chainy im Forum PHPAntworten: 8Letzter Beitrag: 25.07.09, 19:05 -
Kinderschutz / Content-Filterung
Von Soapp im Forum Internet, DSL & FlatrateAntworten: 0Letzter Beitrag: 28.03.07, 19:29 -
Filterung eines Arrays
Von Paula im Forum PHPAntworten: 4Letzter Beitrag: 19.04.06, 13:38 -
Zeichen filterung im string, nur die die benutzt werden sollen bleiben, wie?
Von MafiaGmbH im Forum PHPAntworten: 3Letzter Beitrag: 10.12.05, 13:21





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren