7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)
  • Q:
    Bijdrager
    Dedstok

    [php] Implode bij een spatie in een textfield

    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?

    Inactief
    Anoniem

    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.

    Bijdrager
    Jakko Westerbeke

    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.

    Bijdrager
    Dedstok

    @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.

    Bijdrager
    Jakko Westerbeke

    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.

    Bijdrager
    mtooster

    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…

    Bijdrager
    Dedstok

    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;)

7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.