DB Felder mit Eintrag addieren

bime

Grünschnabel
Hallo
Ich habe folgendes Problem. Ich habe eine php/html gestützte Umfrage. Nun möchte ich nach jedem Absenden des Fragebogenformulars ein "Ergebnis" haben. Ich stelle mir das folgender Maßen vor: In der Auswertung sollen jeweils alle nicht leeren Einträge eines Feldes addiert werden und als Gesamtzahl ausgegeben werden.
.
Ein BSP
Lebensr......Grünz.......Fortbew.
1. Haus.......... Baum.......Auto
2. Wohung .... Blume
3. ......................Obst
-----------------------------------
Das Ergebnis stelle ich mir dann ca so vor
.
Lebensraum: Grünzeug: Fortbewegungsmittel:
2 ........................3........................... 1

Würde mich über code-vorschläge sehr freuen.

lg tobi
 
Zuletzt bearbeitet:
1. Was ist das denn für eine Umfrage? Wie lautet die Fragestellung und welche Antwortmöglichkeiten haben die Befragten (Auswahl vorgegebener Begriffe oder Freitext-Antwort)?

2. Wie speicherst du die Antworten? Datenbank oder Textdatei? Welches Format haben die Daten?

Viele Grüße
DJ
 
ok
Es ist eine Umfrage zu Umweltthemen. Entweder Gibt es versch. Radioboxen bei denen man eine von mehreren Möglichkeiten auswählen kann.
Dann gibt es noch Fragestellungen wieder mit mehreren Radioboxen bei denen man aber von 0 bis maximum alle auswählen kann. (es sind im prinzip in der db einzelne fragen - nicht besonders elegant aber hab ich nun mal so)

es wird alles in eine db geschrieben und entweder sind die Felder leer oder mit der Antwort fefüllt.

lg
 
Also hauptsächlich geht es hier ja um die Frage wie man aus den gegebenen Datensätzen die richtigen Zahlen ermittelt. Von daher wäre es gut zu wissen, wie die Daten aussehen. Ich bräuchte also die Tabellenstruktur und am besten ein paar Beispiel-Datensätze.
Es wird soetwas in die Richtung sein:
Code:
SELECT antwort, COUNT(*) AS anzahl FROM tabelle WHERE antwort IS NOT NULL GROUP BY antwort
 
Online Fragebogen zum Thema Globale Erwärmung

Gib bitte dein Geschlecht an.

männlich
weiblich


Wähle bitte deine Altersstufe aus.

< 16
16 - 20
> 20


Wie wichtig ist dir das Thema Globale Erwärmung?

sehr wichtig
wichtig
geht so
unwichtig


Welche Energiesparmaßnahmen kommen für dich in Frage?
mehrfachauswahl möglich

Nutzung der Öffis
energiesparende Geräte
Standbymodus vermeiden
Umstieg auf nachhaltige Energielieferanten
häufiger Verzicht auf das Auto/Moped



Woher beziehst du die meisten Infos über das Thema Globale Erwärmung?
mehrfachauswahl möglich

Schule
Internet
Fernsehen/Zeitung
Veranstaltungen
Sonstige


Welche Auswirkungen der Globalen Erwärmung sind für dich derzeit spürbar?
mehrfachauswahl möglich

Veränderungen der Jahreszeiten
Verschiebung der Klimazonen
Rückgang der Gletscher/Polkappen
Anstieg des Meeresspiegels
Veränderung von Flora und Fauna
Naturkatastrophen


Wer sind deiner Meinung nach die drei Hauptverursacher für die globale Erwärmung?

1: Drop down

2: Drop down

3: Drop down


Wann glaubst du, werden die erheblichen Auswirkungen der Globalen Erwärmung spürbar sein?

< 10
10 - 50
50 - 100
> 100

So sieht die Erstversion des Fragebogens aus. Dort wo Mehrfachauswahl steht kann man bis zu allen Boxen anwählen. (bei denen ist jede box eine einzelne Frage und hat ein eigenes DB - Feld) Bei den Boxen wo nicht mehrfachauswahl steht ist nur eine der angegebenen wählbar und hat nachdem nur ein DB Feld. Wenn bei den mehrfachauswahl Boxen zb. die ersten 3 angekreuzt werden bleiben die anderen leer.
Ich hätte nun gerne das pro frage die Summe aller nicht leeren Felder erstellt wird.
Hoffe es gut beschrieben zu haben.


Lg & Danke für die Hilfe
ps. Im Anhang ist ein Screen der DB
 

Anhänge

  • db.jpg
    db.jpg
    34,5 KB · Aufrufe: 31
... nicht besonders elegant ...
Richtiiiiig... ;)
Aber kommen wir mit dem zurecht was du hast:

Also, entweder holst du alle Datensätze komplett aus der Datenbank und richtest dir für jede Antwortmöglichkeit einen Counter ein. Diesen setzt du am Anfang auf Null ($frage4_1=0; ...). Dann iterierst du mit einer while-Schleife über alle Datensätze und fragst die jeweilige Spalte ab. Wenn sie nicht leer ist, erhöhst du den counter für die jeweilige Antwortmöglichkeit. (if ($zeile['frage4_1']!="") $frage4_1++; ) Am Ende hast du die Anzahl der gegebenen Antworten.

ODER du fragst die Summen für jede Spalte einzeln aus der Datenbank ab. Dann brauchst du für jede Antwortmöglichkeit eine Abfrage à la
Code:
SELECT COUNT(*) as anzahl FROM tabellenname WHERE frage4_1 IS NOT NULL


Du hast die Qual der Wahl. :)
 
Ok, danke dir schon mal. Würde mich für die 2. Variante entscheiden, diese Funktioniert nur leider nicht ganz so wie ich es mir vorstelle. Datenbankname ist fragebogen, tabellenname ist fragen. Wie würde der Code nun genau aussehen?

danke für die Hilfe

lg
 
Hi,

ich gehe davon aus, dass du die Umfrage bisher selber programmiert hast. Dann solltest du ja wissen, wie man sich zum Datenbank -Server verbindet und die Datenbank auswählt.
Außerdem hast du ja bereits die Antworten mit MySQL-Statements in die Datenbank eingefügt. Mit der mysql_query()-Methode schickst du jetzt halt nicht das INSERT-Statement, was du zum eintragen in die Datenbank nutzt, sondern mein SELECT-Statement. Den Tabellennamen ersetzt du durch deinen:
Code:
SELECT COUNT(*) as anzahl FROM fragen WHERE frage4_1 IS NOT NULL
Dann kannst du mit der mysql_fetch_array()-Methode auf das Ergebnis zugreifen.
 
Ok, ich versuche es jetzt schon eine Weile hinzubekommen, klappt aber nicht.
also ganz am Anfang kommt meine connect include datei also baue ich die Verbindung zur db auf. nur dann stellt sich mir die Frage was ich genau weitermachen soll. Würde mich sehr freuen, wenn du oder ihr euch die Mühe machen könntet mir das der reihe nach aufzulisten.

danke

edit: mein code sieht momentan so aus...
PHP:
<?
echo "</br>";
echo '<h2>Auswertung</h2>';
$db = new MySQLi('localhost', 'root', '', 'fragebogen');
$result = mysql_query("COUNT(*) as Anzahl FROM fragen WHERE frage4_1 IS NOT NULL");
$row=mysql_fetch_assoc($result);

echo $row['Anzahl'];

?>
 
Zuletzt bearbeitet:
Du hättest noch erwähnen können das du MySQLi verwendest und nicht MySQL. Das sind nämlich andere Funktionen.
 
Zurück