Dit is een topic in Community » Forum » Pro » Web ontwikkeling

[php] Implode bij een spatie in een textfield

Mickert

Mickert op 23 januari 2012 #

Als ik het volgende doe komt alles perfect (met komma's) in de database terecht:

$array = array($_POST['one'], $_POST['two'], $_POST['three']);
$comma = implode(", ", $array);

Maar als ik nou komma's tussen de woorden wil krijgen bij alleen 1 textarea? Zodat ik geen gebruik hoef te maken van textarea twee en drie. Dit in verband met als je meer wilt.

(Een mooi voorbeeld is het vakje waar je kan taggen bij Wordpress, dat is eigenlijk ook mijn bedoeling)
Hoe kan ik dit dus doen?

W0utR

W0utR op 24 januari 2012 #

Het omgekeerde van implode is explode, heb je dit al geprobeerd? (http://www.php.net/manual/en/function.explode.php)

Dit is trouwens niet echt de juiste manier om tags op te slagen in een database.

Jakko Westerbeke

Jakko Westerbeke op 24 januari 2012 #

Ik snap de vraag even niet goed … je hebt drie tekstvelden en de inhoud daarvan stop je in een array; daarna maak je van die array een string, waarbij de waarden van de tekstvelden gescheiden worden door komma's. Als je maar één tekstveld hebt en de gebruiker typt daar waarden gescheiden door komma's in, heb je al wat je zoekt.

Of bedoel je dat je spaties wilt vervangen door komma's? In dat geval zou je met str_replace een heel eind moeten komen:$foo = str_replace(" ", "," $_POST["tekstvak"])Hoewel het wel een goed idee gaat zijn om in dit geval eerst alle dubbele spaties te vervangen door enkele (en dat te herhalen tot er alleen maar enkele spaties instaan) alsook spaties links en rechts weg te halen met trim.

Mickert

Mickert op 24 januari 2012 #

@Jakko
Ik had de vraag waarschijnlijk niet helemaal perfect geformuleerd haha

Wat ik bedoel heeft geloof ik inderdaad met een str_replace te maken.

Ik plaats heeft even een afbeelding, zo is het gelijk en stuk duidelijker.

Jakko Westerbeke

Jakko Westerbeke op 24 januari 2012 #

Je wilt "Nog een tag" als één tag zien, maar de gebruiker de mogelijkheid geven meerdere tags tegelijkertijd op te geven? Dan zul je óf meerdere tekstvelden moeten gebruiken, óf bij het tekstveld vermelden dat gebruikers een komma tussen tags moeten zetten. Je kunt niet tegelijkertijd spaties gebruiken om tags te scheiden én spaties toelaten in tags — het is het één of het ander

Maar als je wilt dat gebruikers spaties typen tussen tags, waarom scheid je ze dan in je database van elkaar met komma's? In dat geval is het makkelijker om ook spaties te gebruiken in de database, want dan hoef je niks te vervangen. Op een bepaald moment wil je iets doen met die tags en dan moet je ze toch weer van elkaar knippen, maar welk teken er dan tussen de tags staat maakt helemaal niks uit.

mtooster

mtooster op 24 januari 2012 #

Overigens is het vaak beter om een aparte tabel met tags te maken en een habtm-tabel voor de koppeling met je berichten....
Bestaat een tag nog niet... dan maak je die dus gewoon aan in je tags-tabel en koppel je hem met je bericht.

Je kunt zo veel beter zoeken op tags, tellen hoeveel berichten met bepaalde tags er zijn en ze eventueel verwijderen/samenvoegen of andere acties mee uitvoeren.

Als je een DB-abstraction class gebruikt (zoals PDO) hoeft dit niet zo ingewikkeld te zijn...
Verder helpt dat ook om SQL-injectie en dergelijke te voorkomen....
Ik doe nooit wat met php, dus het kan zijn dat PDO niet helemaal is wat ik bedoel...

Mickert

Mickert op 24 januari 2012 #

Bedankt voor de reacties.
Geen idee wat je met PDO bedoeld, maar ga het straks zeker opzoeken.

Ben erachter gekomen dat hier ook jQuery functies voor zijn (Tag Editor genaamd).
Ga dus nu uitvogelen hoe dit precies werkt en het proberen naar de database te schrijven

Je kunt alleen reageren met een gratis OMT account.
Log in of registreer.

Inloggen

Over dit topic

Gestart op 23 januari 2012 door Mickert

Laatste reactie door Mickert

Reageer op dit topic