Komma aus Zeichenkette entfernen

moggi

Grünschnabel
[Gelöst] Komma aus Zeichenkette entfernen

Hallo, ich bin neu hier und würde mich freuen, wenn mir geholfen werden kann.

Ich bin seit einigen Wochen dabei eine Webapplikation, mit Hilfe von jQuery Mobile und PHP/MySQL, umzusetzen und befinde mich momentan in den letzten Zügen. Die App ist bald fertig.

Nun zu meinem Problem:
In der App gibt es ein Liste mit Kategorien und den dazugehörigen Unterkategorien. Wenn man eine Kategorie auswählt, wird die ID der Kategorie an die Seite übergeben und die jeweiligen Unterkategorien angezeigt. Solange, bis es keine Unterkategorien mehr gibt. Das funktioniert auch alles wunderbar.
Nun ist es aber so, wenn die Unterkategorien, der zuvor ausgewählten Kategorie, angezeigt werden, auch gleich die passenden Händler und Produkte eingeblendet werden sollen.

Ich wollte nun mit der folgenden MySQL-Abfrage:
PHP:
$categoryID = $_GET['id'];
	
$sql = "SELECT company FROM pt_users WHERE categories_xx = '$categoryID' ORDER BY RAND() DESC LIMIT 1";
					
$result = $db->query($sql);
	
if (!$result) {
  die('Fehler...'.$db->error);
}
	
while($user = $result->fetch_array()) {
	$userT = $user['company'];
}
HTML:
<html>
	<?php var_dump($userT); ?>
</html>
...mir die passenden Händler in der jeweiligen Kategorie anzeigen lassen. Doch das Einzige was ich als Ausgabe erhalte, ist ein NULL.

Ein Blick in die Datenbank verrät mir, dass die Werte in der Tabelle als String gespeichert werden.

categories_xx
Code:
148,152,157,212,213,214,215,216,217,218

Klar, dass die Abfrage keinen richtigen Wert/Ausgabe liefert.

Nun, wie bekomme ich es hin, dass alle Kommas verschwinden bzw. nur die Kategorie ausgewählt wird, die ich per $_GET übergebe?

Ich habe es bisher mit explode() versucht:
PHP:
$userT = $user['categories_xx'];
$teilen = explode(",", $userT, -1);
Hier wurden zwar alle Kommas beseitigt, aber auch gleichzeitig der letzte Wert gelöscht.

Würde mich über jede Unterstützung freuen!

MfG
moggi
 
Zuletzt bearbeitet:
Lass einfach "-1" weg, dann hast du alle Einträge:

PHP:
$teilen = explode(",", $userT);

NACHTRAG:
Wenn ich das mit der SQL-Abfrage richtig verstanden habe, dann sollte das hier das gewünschte Ergebniss liefern:

PHP:
$sql = "SELECT company FROM pt_users WHERE FIND_IN_SET(categories_xx, '$werte') ORDER BY RAND() DESC";
 
Zuletzt bearbeitet:
Vielen Dank für deine Antwort!

Ich verstehe deinen Lösungsansatz und kann ihn auch nachvollziehen, aber leider erhalte ich keine Ausgabe.
 
Mist, da war ein Denkfehler drin. Versuche es so nochmal:

PHP:
// Reihenfolge bei FIND_IN_SET vertauscht
$sql = "SELECT company FROM pt_users WHERE FIND_IN_SET('$werte', categories_xx) ORDER BY RAND() DESC";
 
Vielen Dank!. Jetzt funktioniert es.
Hätte mir auch auffallen müssen. Steht ja auch so im MySQL-Referenzhandbuch.

Das war erst einmal alles. Wenn ich noch Hilfe benötige, komme ich gerne hierauf zurück.
 
Zurück