Feedback Formular
am 18.03.2009 - 01:37 Uhr in
Vieleicht weiß einer von euch wie ich das Realisieren kann.
Ich würde gerne eine Art Bewertung auf meiner Seite anbieten. Ich stell mir das so vor:
- Kunde loggt sich ein mit einem von mir erzeugten Benuzternamen & Kennwort ein
- Kunde gibt Noten zwischen 1 - 6 zu Beispiel: Wie war der Service, Wie schnell war die Reaktionszeit usw.
- ein kleines Kommentarfeld wenn er das aufüllen möchte
- Persönliche Information wie z.B.: Seinen Namen, Firmennamen usw.
Wie kann ich das denn realieren. Ich hab smir schon einige Module angeschaut wie z.B. Advanced Poll usw. Aber damit ist es immer nur möglich einen neuen Node zu erstellen.
Ich denke da hat bestimmt einer eine Idee.
THX D_D
- Anmelden oder Registrieren um Kommentare zu schreiben
Moin :) Spontan fällt mir
am 18.03.2009 - 02:43 Uhr
Moin :)
Spontan fällt mir "Webform" ein http://drupal.org/project/webform - damit lässt sich so ein Formular wunderbar erzeugen und auf Wunsch kann man daraus auch eine Auswertung machen. Die Noten kann man in einem DropDown-Feld realisieren.
Ich hoffe es hilft.
Grüße
Richy
THX für die Antwort.
am 18.03.2009 - 12:55 Uhr
THX für die Antwort. Webform habe ich im Einsatz allerdings kann ich die Ergebnisse nicht als Node Speichern, damit auch die nicht angemeldeten User die Info lesen können. Wie kann ich denn das realisieren?
Schicker wäre natürlich ein Bewertungssystem wie bei "Fivestar" aber bekomme ich das Fivestar Voting auch in ein Webform?
THX
Webform Ergebnisse auslesen
am 18.03.2009 - 13:38 Uhr
Wenn du die Webform-Ergebnisse auslesen möchtest, kannst du das mit der Funktion
webform_get_submission($nid, $sid)
machen. $nid ist dabei die Node-ID und $sid die einzelne Komponente des Formulars. Erstelle dir einen Node mit PHP-Code und greife dir die Komponenten die du benötigst und stelle das in einer Tabelle dar.
Webform unterscheidet sich, im Gegensatz zu CCK der Node-Types erstellt, darin das nur ein Node für ein Formular angelegt wird und nicht wie bei CCK für jede Übermittlung ein Node angelegt wird.
Für die Notenvergabe würde ich dir das GRID-Element empfehlen.
Fivestars kann immer nur an ein Node (also die ganze Seite) gehängt werden. Kommt für dich in diesem Fall also nicht in Frage.
Gruß
UwBach
Hmm probiere ich heute Abend
am 18.03.2009 - 15:33 Uhr
Hmm probiere ich heute Abend gleich mal aus.
Was meinst du denn mit Grid-Element?
Das Grid-Element wird in Webform angeboten ..
am 18.03.2009 - 15:53 Uhr
.. und ermöglicht eine Darstellung wie z. B.
Frage 1 | Radio1 | Radio2 | Radio 3
Frage 2 | Radio1 | Radio2 | Radio 3
Frage 3 | Radio1 | Radio2 | Radio 3
Frage 4 | Radio1 | Radio2 | Radio 3
Das Element kann einfach unter Formular Element >> Add Element >> Auswahl Grid ausgewählt werden. Ist ein wenig blöd beschrieben, aber für Abfragen wie du die brauchst gut geeignet. Schau es dir mal an
Gruß
UwBach
wow hat fast geklappt
am 19.03.2009 - 02:44 Uhr
Vielen Dank für den super Hinweis. Hab das Feedback Formular erstellt, muss es nur noch etwas mit css gestalten und dann ist die Sache noch mit PHP.
webform_get_submission($nid, $sid) <-- verstehe ich, ist einleuchtend aber anwenden kann ich das noch nicht.
Ich hab mit PHP momentan leider noch nicht viel am Hut. Gibt es evt. gute Seiten für PHP wie z.B. SELFHTML.
Oder hast du evt einen Beispielcode für mich.
webform_get_submission($nid, $sid) wo trage ich denn die "SUBMISSION 6" mit dem $sid z.b.: "Name" ein?
THX D_D
Hier mal ein Beispiel
am 19.03.2009 - 13:21 Uhr
Angenommen mein Formular hat die Node-ID 12 und ich habe zwei Formularelemente "Vorname" und "Nachname". Dann kann ich Webform includen und die genannte Funktion nutzen oder ich mach direkt die Abfrage in der Datenbank. Wichtig ist dann nur das jedes benötigte Element als Join aufgerufen wird.
Am besten erkennt man die Elemente in der Datenbank oder beim Bearbeiten der einzelnen Elemente am Pfad (z. B. node/12/edit/components/5 um den Namen zu bearbeiten).
<p>DAs ist ein Test</p>
<?php
$erg_db = db_query('SELECT ws.nid, ws.submitted, name.data as name, vorname.data as vorname FROM {webform_submissions} AS ws
LEFT JOIN {webform_submitted_data} AS name ON ws.sid = name .sid and ws.nid = name .nid AND name .cid = 5
LEFT JOIN {webform_submitted_data} AS vorname ON ws.sid = vorname.sid and ws.nid = vorname.nid AND vorname.cid = 6
WHERE ws.nid = 12');
print("<table><tr><th>Vorname</th><th>Nachname</th></tr>");
while($erg = db_fetch_array($erg_db))
{
print("<tr><th>");
print($erg["vorname"]);
print("</th><th>");
print($erg["name"]);
print("</th></tr>");
}
print("</table>");
?>
Ich persönlich präferiere die direkte DB-Abfrage, weil damit das System nicht so stark belastet wird.
Ich hoffe das reicht um deine Tabelle zu erstellen, wenn nicht melde dich ..
Gruß
UwBach
Wow das ist ja wie zauberei.
am 21.03.2009 - 02:45 Uhr
Wow das ist ja wie zauberei. Vielen Dank UwBach. Da stellt sich mir natürlich auch noch eine Frage. Wie kann ich denn mehrere Submissions auf einem Node ausgeben? Ich möchte natürlich das alle Kunden die ganzen Feedbacks von allen eingetragenen Kunden auf einer Seite sehen kann.
Vielen Dank nochmal für deine Hilfe.
Grüße D_D
bei der Abfrage ..
am 21.03.2009 - 09:15 Uhr
.. werden alle Submissions eines Webformulars abgefragt.
ja fast. Vielleicht nur die
am 21.03.2009 - 11:29 Uhr
ja fast. Vielleicht nur die eMail nicht aber ansonsten alle.
Warum ist das so wichtig?
Wobei ich die eMail auch weg lassen kann komplett. Wenn es dann einfacher geht die komplette Submission anzeigen zu lassen.
fast am Ziel
am 22.03.2009 - 00:59 Uhr
<?php
$erg_db = db_query('SELECT ws.nid, ws.submitted, firma.data as firma, anrede.data as anrede, name.data as name, frage1.data as frage1, frage2.data as frage2, frage3.data as frage3, frage4.data as frage4, frage5.data as frage5, frage6.data as frage6, frage7.data as frage7, frage8.data as frage8, lobkritik.data as lobkritik FROM {webform_submissions} AS ws
LEFT JOIN {webform_submitted_data} AS firma ON ws.sid = firma .sid and ws.nid = firma .nid AND firma .cid = 1
LEFT JOIN {webform_submitted_data} AS anrede ON ws.sid = anrede.sid and ws.nid = anrede.nid AND anrede.cid = 2
LEFT JOIN {webform_submitted_data} AS name ON ws.sid = name .sid and ws.nid = name .nid AND name .cid = 4
LEFT JOIN {webform_submitted_data} AS frage1 ON ws.sid = frage1 .sid and ws.nid = frage1 .nid AND frage1 .cid = 7
LEFT JOIN {webform_submitted_data} AS frage2 ON ws.sid = frage2 .sid and ws.nid = frage2 .nid AND frage2 .cid = 8
LEFT JOIN {webform_submitted_data} AS frage3 ON ws.sid = frage3 .sid and ws.nid = frage3 .nid AND frage3 .cid = 9
LEFT JOIN {webform_submitted_data} AS frage4 ON ws.sid = frage4 .sid and ws.nid = frage4 .nid AND frage4 .cid = 10
LEFT JOIN {webform_submitted_data} AS frage5 ON ws.sid = frage5 .sid and ws.nid = frage5 .nid AND frage5 .cid = 11
LEFT JOIN {webform_submitted_data} AS frage6 ON ws.sid = frage6 .sid and ws.nid = frage6 .nid AND frage6 .cid = 12
LEFT JOIN {webform_submitted_data} AS frage7 ON ws.sid = frage7 .sid and ws.nid = frage7 .nid AND frage7 .cid = 13
LEFT JOIN {webform_submitted_data} AS frage8 ON ws.sid = frage8 .sid and ws.nid = frage8 .nid AND frage8 .cid = 14
LEFT JOIN {webform_submitted_data} AS lobkritik ON ws.sid = lobkritik .sid and ws.nid = lobkritik .nid AND lobkritik .cid = 15
WHERE ws.nid = 75');
print(
"<table><tr>
<th>Firma</th>
<th>Anrede</th>
<th>Name</th>
<th>Zufriedenheit</th>
<th>Motivation & Umgangsformen</th>
<th>Fachkompetenz</th>
<th>Termineinhaltung</th>
<th>Problemlösung</th>
<th>Reaktionszeit</th>
<th>Preis / Leistung</th>
<th>Weiterempfehlung</th>
<th>Lob & Kritik</th></tr>");
while(
$erg = db_fetch_array($erg_db))
{
print("<tr><th>");
print($erg["firma"]);
print("</th><th>");
print($erg["anrede"]);
print("</th></th>");
print($erg["name"]);
print("</th><th>");
print($erg["frage1"]);
print("</th></th>");
print($erg["frage2"]);
print("</th><th>");
print($erg["frage3"]);
print("</th></th>");
print($erg["frage4"]);
print("</th><th>");
print($erg["frage5"]);
print("</th></th>");
print($erg["frage6"]);
print("</th></th>");
print($erg["frage7"]);
print("</th></th>");
print($erg["frage8"]);
print("</th></th>");
print($erg["lobkritik"]);
print("</th></tr>");
}
print(
"</table>");
?>
So schaut jetzt mein Code aus und er verhaut irgendwie die Sortierung.
Schaut jetzt so aus:
Ich verstehe soweit was da passiert aber was muss ich denn machen wenn ich das ganze statt in der Tabelle in einer Liste ausgeben möchte? Da fängt es schon an schwierig zu werden. Oder noch besser wie bekomme ich das hin das ich das Ding mit CSS bearbeiten kann?
Hast du noch einen Idee UwBach?
Die Variante vom Webform - Analysis ist auch eine feine Sache. Kann man denn da einzelne Komponente ausgeben.
P.S.: Ab Dienstag lerne ich PHP soviel steht fest ;)
Die Tags sind nicht richtig gesetzt
am 22.03.2009 - 05:51 Uhr
while(
$erg = db_fetch_array($erg_db))
{
print("<tr><th>");
print($erg["firma"]);
print("</th><th>");
print($erg["anrede"]);
print("</th><th>");
print($erg["name"]);
print("</th><th>");
print($erg["frage1"]);
print("</th><th>");
print($erg["frage2"]);
print("</th><th>");
print($erg["frage3"]);
print("</th><th>");
print($erg["frage4"]);
print("</th><th>");
print($erg["frage5"]);
print("</th><th>");
print($erg["frage6"]);
print("</th><th>");
print($erg["frage7"]);
print("</th><th>");
print($erg["frage8"]);
print("</th><th>");
print($erg["lobkritik"]);
print("</th><tr>");
}
Jeder Inhalt einer Zelle muss von einem öffnenden Tag
<th>
und einem schließenden Tag</th>
"eingerahmt" werden.Listen sind auch kein Problem, erst mal alles in einem Array sammeln und dann das ganze so ausgeben wie man es haben will.
Gruß
UwBach
PS. ich würde mit HTML anfangen und dann PHP (erst gehen - dann laufen)
Du hast vollkommen recht
am 25.03.2009 - 17:05 Uhr
Ich schäme mich für diesen Fehler. Im nachhinein denke ich mir das hätte ich auch sehen müssen. Den Fehler mache ich nie mehr ;)
Vielen Dank für die Hilfe.
CSS / HTML und PHP sind einfach pflicht um komplexe Ergebnisse zu erziehlen, dass habe ich jetzt auch verstanden und fange klein an ;)
THX & Grüße D_D
problem
am 28.10.2009 - 10:35 Uhr
ja ich weiß der thread ist schon einige monate alt.
ich steh grad vor einer ähnlichen herausforderung:
ich möchte die eingelesenen ergebnisse des webform auch auf einer seite auslesen lassen.
also:
der user kann ein tippergebnis tippen und in der datenbank stehen name spielpaarung un tippergebnis.
wie kann ich das nun auslesen in einem andren node.
wo muss das php rein?
würd mich über ne anwort und hinsweise freuen
PHP in Node
am 28.10.2009 - 11:33 Uhr
Hi nickajack
Grundsätzlich könntest du das PHP in einen Node schreiben. Dazu müßtest du in den Core-Modulen PHP aktivieren (Verwaltung >> Strukturierung >> Module) und das auch als Eingabeformat erlauben (Verwaltung >> Einstellungen >> Eingabeformate). Das ist aber nicht das gelbe vom Ei, sprich du öffnest damit evtl. Sicherheitslücken.
Besser ist es dafür ein kleines Modul zu schreiben und das über einen Pfad direkt zu verlinken. So ein kleines Modul ist eigentlich recht schnell geschrieben und es gibt etliche Anleitungen dafür. Die notwendigen Querys kannst du ja oben sehen.
Gruß
UwBach
hm
am 28.10.2009 - 14:13 Uhr
man könnte die datenbanketabelle einfach mit php auslesen, wenn sie nicht so komisch angeordnet wäre. also extern und dann eventuelle die php datei also die auslesung in einne iframe importieren.
kann man im webform modul ornder nicht irgendwie die webform_submissions.inc abändern, sodass die datenbank übersichtlicher wird? hat jemand erfahrung damit?