• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Tag-it: Tags in SQL Datenbank abspeichern

mds

Neues Mitglied
Hallo,

leider sind meine Javascript-Fähigkeiten sehr begrenzt bis nicht vorhanden. Umso besser, das es soviele tolle, kostenlose Plugins gibt, auf die man zurückgreifen kann. Eines davon ist ist Tag-it! (http://aehlke.github.io/tag-it/).

Soweit habe ich die Darstellung der Tags hinbekommen. Leider weiß ich überhaupt nicht, wie ich die Tags abspeichern kann. Ich möchte kein Formular verwenden, sondern sobald man ein Tag eingibt, soll er es speichern. Es gibt auch eine Dokumentation zu diesem Plugin, aber irgendwie kann ich damit kaum etwas anfangen.

Hier mal eine kleine Zusammenfassung über den Aufbau:

HTML:
<script type="text/javascript">     
     $(document).ready(function() {         $("#myTags").tagit();     }); 
</script>

HTML:
<ul id="myTags">
    <li>Tag1</li>
    <li>Tag2</li> 
</ul>

Der Dokumentation kann man folgende Befehle entnehmen:
Option: fieldName (String) - Each tag's hidden input field will have this name. If you're using PHP, you may want to use something like itemName[fieldName][] for this option's value.
Event: AfterTagAdded (function, Callback)

Ich denke mit diesen Befehlen sollte man das doch irgendwie auf die Reihe kriegen, aber für mich ist das ein unlösbares Puzzle.. Irgendwie so vielleicht:

PHP:
$("#myTags").tagit({
    fieldname: tags,     
    afterTagAdded: function(event, ui) {         
         mysql_query(INSERT INTO .... )         
         console.log(ui.tag);     } });



Vielen Dank im Vorraus für jeden Tipp!
 
Zuletzt bearbeitet:
Werbung:
ganz einfach, das Plugin ist im Grunde ein Form, das noch ein verstecktes input-feld beinhaltet, welches wiederum alle tags enthält (nur mit komma getrennt). Über das name-attribut wird später der inhalt dieses input-felds bei php referenziert. Ich weiß nicht was die Variable tags bei dir beinhaltet, aber ich glaube mal das soll eher ein string sein, also so:

$("#myTags").tagit({
fieldname: "tags", afterTagAdded: function(event, ui) { mysql_query(INSERT INTO .... ) console.log(ui.tag); } });

Dann kannst du per php mit $_POST['tags'] auf deine tags zugreifen (glaub ich mal..)
 
Hallo,

ich weiß nicht, wo mein erster Post hin ist, anscheinend habe ich ihn versehentlich gelöscht, deshalb hier nochmal eine Zusammenfassung:

Es geht um das jQuery Plugin "Tag-it!" (jQuery Tag-it!): Meine Kenntnisse in JS sind leider kaum vorhanden, deswegen meine Frage: Wie kann ich Tags, die ich hinzufügen, per AJAX (?), also ohne erst auf ein "Speichern-Button" o.ä. zu klicken, in meine DB speichern?

Ich denke es müsste irgendwie so aussehen:

PHP:
$("#myTags").tagit({     
    fieldName: "tags",
    afterTagAdded: function(event, ui) {         

        // Wie muss das Abspeichern genau aussehen? Kann man einfach so das mysql_query reinschreiben?
        // Wie übergebe ich die Werte. Wenn ich es richtig verstanden habe, sind sie im Array tags[] gespeichert. 
        // Kann ich an dieser Stelle eine PHP Verarbeitung à la foreach($tags AS $tag) { ... } durchführen?  
    
        mysql_query(INSERT INTO Tabelle (Spalte) VALUES (Wert));      // so geht es jedenfalls nicht

        console.log(ui.tag);

    }; 
});

omoxen, Danke für deine Antwort. Ich werds gleich nochmal versuchen deine Hinweise zu verfolgen.
 
Zuletzt bearbeitet:
Werbung:
Ich bin stundenlang am Googlen, aber irgendwie kann ich das was ich finde nicht auf mein Problem anwenden.

Kann mir vielleicht jemand helfen? Bin für jeden Tipp dankbar, auch wenns nur ist, wonach ich suchen kann. Also ich möchte meinen hinzugefügten Tag "im Hintergrund" speichern, ohne dass sich die Seite neulädt o.ä. Geht das überhaupt?

/Update

Falls noch jemand auf der Suche ist, man kann es mit jQuery und Ajax zB so lösen:

PHP:
<script type="text/javascript"> // Tag-It
    $(document).ready(function() {
        $("#myTags").tagit({
            afterTagAdded: function(event, ui) {
                            $.get("/ajaxaddtag.php", { tag_id: ui.tagLabel });
                            }
        });
    });
</script>

ajaxaddtag.php
PHP:
$TAG_ID = $_GET["tag_id"];

// DB connection
mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());

$qry = sprintf("INSERT INTO test (tags) VALUES ('%s');", $TAG_ID);
mysql_query($qry);
 
Zuletzt bearbeitet:
Zurück
Oben