PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   String vergleichen und filtern ? (http://www.selfphp.de/forum/showthread.php?t=14454)

-=LUPO=- 02.09.2006 11:13:43

String vergleichen und filtern ?
 
Hallo PHP-Gemeinde,

bin leider noch ein Anfänger und habe noch nicht den richtigen Durchblick und hoffe Ihr könnt mir helfen.

Mein Problem:

Ich habe eine Datenbank mit einer Spalte "keywords" die einzelnen Wörter sind durch ein , getrennt. Jetzt möchte ich die Wörter auf der Seite anzeigen lassen, da aber manche Wörter mehrfach vorkommen möchte ich die doppelten Wörter nur einmal anzeigen lassen.

Datenbank:
Zeile 1: keywords = wort1, wort2, wort3, wort4,...
Zeile 2: keywords = wort5, wort2, wort6, wort4,...

Die Anzeige wäre dann:
wort1, wort2, wort3, wort4, wort5, wort2, wort6, wort4,...

Die Anzeige die ich haben möchte ist:
wort1, wort2, wort3, wort4, wort5, wort2, wort6,...
ohne doppelte Wörter!

Ich möchte keinen fertigen Code, das wäre wohl zu viel verlangt, aber wenigstens einen Ansatz wie ich das realisieren kann.

Vielen Dank für Eure Hilfe.

xlb 02.09.2006 12:10:25

AW: String vergleichen und filtern ?
 
Tach ...

Da die einzelnen Begriffe bereits "komma-separiert" sind, könntest du aus den einzelnen "Wort-Listen" einen Gesamtstring bilden, daraus mittels explode() ein Array generieren und daraus wiederum via array_unique () ein weiteres Array ohne doppelte Einträge erszeugen ...

Opendix 02.09.2006 12:21:10

AW: String vergleichen und filtern ?
 
Also, wir lesen erst alle Datensätze aus der DB aus:

PHP-Code:

//Array in dem wir alle KEywords ablegen
$keywords = array();

//Abfragealler keywords
$query "SELECT keywords FROM tabelle";
$insert mysql_query($query);
while(
$daten mysql_fetch_assoc($insert))
{
    
//Hier kommt dann die verarbeitung..


nun wollen wir ja die werte immer bei dem Komma trennen, dies machen wir mit explode()

PHP-Code:

$werte explode(','$daten['keywords']); 

Jetzt können wir eigentlich mit zwei verschiedenen methoden die Keywords in das $keywords-array bekommen.

Ich würde das so machen:
PHP-Code:

$keywords array_merge($keywords$werte); 

also werden immer die neuen werte zu denbereits vorhandenen hinzugefügt!
Damt du nun keine doppelten hast, verwenden wir bevor der ausgabe noch:
PHP-Code:

$keywords array_unique($keywords); 

So und hier noch das ganze zusammengeflickt:
PHP-Code:

$keywords = array();

//Abfragealler keywords
$query "SELECT keywords FROM tabelle";
$insert mysql_query($query);
while(
$daten mysql_fetch_assoc($insert))
{
    
//Hier kommt dann die verarbeitung..
    //Zeile bei , trennen
    
$werte explode(','$daten['keywords']);
    
//Neue werte hinzufügen
    
$keywords array_merge($keywords$werte);
}

//Doppelte entfernen
$keywords array_unique($keywords);

//Ausgabe
for($i=0$i<count($keywords); $i++)
{
    echo 
$keywords[$i];


die zweite möglichkeit wäre noch, anstatt die werte mit array_merge hinzuzufügen da durch das array zu iterieren mit einer for-schlaufe und dann für jedes element mit in_Array() zu prüfen ob es bereits existiert, wenn nicht dann erst hinzufügen...

also hier noch einige Links:
www.php.net/array_merge
www.php.net/array_unique
www.php.net/explode

so hoffe konnte dir helfen... :)

-=LUPO=- 02.09.2006 12:28:14

AW: String vergleichen und filtern ?
 
Hallo,

vielen Dank für Eure Hilfe :-)

array_unique ist genau das was ich gesucht habe, damit sollte es eigentlich klappen.

Gruß an alle Helfer.


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:43:27 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.