- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-02-2007, 22:46
putzlappen
 Newbie
Links : Onlinestatus : putzlappen ist offline
Registriert seit: Apr 2005
Ort: NRW
Beiträge: 18
putzlappen ist zur Zeit noch ein unbeschriebenes Blatt
Unhappy Wie Daten nach bestimmten Werten filtern? (Kombiniert)

Hallo Forum,

ich bräuchte mal euren Rat oder einen Denkansatz wie man folgendes realisieren könnte.

Ich habe INI-Dateien, die bei jedem Seitenaufruf in ein einfaches Array eingelesen und sortiert werden.
Diese Daten sollen nach bestimmten (kombinierbaren!) kriterien gefiltert und dann angezeigt werden.

Also zum beispiel so:

Rufe ich index.php ohne Parameter auf, zeigt er alle Dateien an.
Rufe ich sie z.b. so auf: index.php?alphabet=a, zeigt er mir alle mit Alphabet A an.

Bei index.php?alphabet=a&plz=5, zeigt er mir alle mit Alphabet A !UND! PLZ-bereich 5 an.

Die Daten nach denen gefiltert werden soll (Also Name, PLZ, Ort, usw) liegen in den INI-Dateien.
Diese mittels entspr. Funktionen auszulesen und zu filtern ist ja ansich nicht das Problem.

Aber was, wenn ich nach mehreren Sachen kombiniert filtern will wie oben im Beispiel?

Ich habe es so versucht, das geht zwar im Prinzip, führt aber nur zu Chaos:

PHP-Code:
if ($alphabet != "" and $plz == "")  {
    
// prüfe, ob alphabet übereinstimmt und packe dann ins array

} elseif ($alphabet != "" and $plz != "")  {
    
// prüfe, ob alphabet UND PLZ übereinstimmt und packe dann ins array

} elseif ($alphabet == "" and $plz != "")  {
    
// prüfe, ob PLZ übereinstimmt und packe dann ins array

}

...

// hier inhalte des Arrays ausgeben 
Ob jetzt schon beim erstellen des Arrays oder erst beim Auslesen gefiltert wird ist eigentlich egal, die Problematik bleibt die gleiche, da man sich immer in bösen IF-Konstrukten verheddert :-) (ich will ca 10 Werte filtern das wären dann 10x10 if-bedingungen )


Als zweiten versuch habe ich pro Filterkriterium ein Array erstellt...
PHP-Code:
if ($alphabet != "") {
    
// packe ins array $array_alphabet 
}

if (
$plz != "") {
    
// packe ins array $array_plz 
}

$array_anzeigen $array_alphabet $array_plz;

// hier die inhalte von $array_anzeigen ausgeben 
Das funktioniert nicht richtig (Doppeleinträge..) und ist zudem (wie auch das erste) extrem dirty :-)
Gibt es da bessere Lösungen? Mit Datenbankabfrage wäre das wahrscheinlichviel einfacher aber die Daten kommen aus einer Fremdanwendung das kann ich nicht ändern mit dem Format.


Ich hoffe man kann verstehen was ich möchte !! :-)
Vielen Dank schonmal für jegliche Anregung

DANKE lappen
__________________
mfg, lappen

Geändert von putzlappen (19-02-2007 um 22:48 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 19-02-2007, 23:07
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Reicht es nicht, das zu durchsuchende array zu durchlaufen und mit strpos() und/ oder Konsorten die gewünschten Einträge in ein separates array abzulegen?
Im Prinzip bswp. so:
PHP-Code:
$to_be_searched = array('a123''b123''c123''d123''e123');

$letter $_GET['letter']; // ?letter=a
if (!empty($letter))
{
    
$matches = array();
    foreach (
$to_be_searched as $value)
    {
        if (
$value{0} == $letter)
        {
            
$matches[] = $value;
        }
    }

Spontaner Einfall. Ich bin mir sicher, dass es da elegantere Lösungen gibt.
Mit Zitat antworten
  #3 (permalink)  
Alt 20-02-2007, 08:31
closure
 Master
Links : Onlinestatus : closure ist offline
Registriert seit: Mar 2006
Beiträge: 796
closure ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

bau dir einen kleinen filter. Wobei jede bedingung ein prädikat
wird. Dann baust du im filter einen logischen baum auf dessen
knoten die booleschen verknüpfungen darstellen und die blätter
die prädikate. Für jedes element im array durchläufst du den baum
mit jedem wert und wenn du das ende erreichst ohne abgebrochen
zu haben, dann hast du einen gültigen wert den du ins ergebnis
array tun kannst.

greets
__________________
(((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

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