Toon posts:

[php/ed] Opzetten enquete database ed..

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben op dit moment lekker rustig aan het programmeren (scripten) van een enquete site waar je simpel enquetes kan aanmaken en daarvan de antwoorden kan bewaren en zo de statistics van alle ingevulde enquetes

Nu heb ik een database structuur waar ik nog niets in kan saven, want dat is in dit stadium nog niet nodig, dat is op zich denk ik wel te realiseren met mijn kennis maar zit wel met een ander probleem..

Ik wil bv maximaal 5 vragen per pagina door de user laten invullen en de antwoorden wil ik natuurlijk lekker saven in 'sessions' dat scheelt on nodige database ruimte en ik kan dit automatisch laten verwijderen qua session files wanneer een user gewoon afbreekt en dat is niet zo 1,2,3 met de database (imho) te doen.

ik geef eerst een stukje output

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<select name="qid[1]" size="1">
    <option value="0">- Select -</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="other">Other</option>
</select>
<br>Open answer: <input type="text" size="20" name="qidtext[1]">

<br>
<br>
<font face="Arial" size="1" color="#000000"><b>2.&nbsp;</b></font>
<font face="Arial" size="1" color="#000000"><b>kusje</b></font><br>

<input type="checkbox" name="qid[2][0]" value="10"><strong>1</strong>&nbsp;
<input type="checkbox" name="qid[2][1]" value="11"><strong>2</strong>&nbsp;
<input type="checkbox" name="qid[2][2]" value="12"><strong>3</strong>&nbsp;
<input type="checkbox" name="qid[2][3]" value="13"><strong>4</strong>&nbsp;
<input type="checkbox" name="qid[2][4]" value="14"><strong>5</strong>&nbsp;
<input type="checkbox" name="qid[2][5]" value="15"><strong>6</strong>&nbsp;
<input type="checkbox" name="qid[2][6]" value="16"><strong>7</strong>&nbsp;
<input type="checkbox" name="qid[2][7]" value="17"><strong>8</strong>&nbsp;
<option value="other">Other</option>

<br>Open answer: <input type="text" size="20" name="qidtext[2]">

<br>
<br>
<font face="Arial" size="1" color="#000000"><b>3.&nbsp;</b></font>
<font face="Arial" size="1" color="#000000"><b>kusje</b></font><br>

<input type="radio" name="qid[3][0]" value="18"> <strong>1</strong>&nbsp;
<input type="radio" name="qid[3][1]" value="19"> <strong>2</strong>&nbsp;
<input type="radio" name="qid[3][2]" value="20"> <strong>3</strong>&nbsp;
<input type="radio" name="qid[3][3]" value="21"> <strong>4</strong>&nbsp;
<input type="radio" name="qid[3][4]" value="22"> <strong>5</strong>&nbsp;
<input type="radio" name="qid[3][5]" value="23"> <strong>6</strong>&nbsp;
<input type="radio" name="qid[3][6]" value="24"> <strong>7</strong>&nbsp;
<input type="radio" name="qid[3][7]" value="25"> <strong>8</strong>&nbsp;

<br>
<br>
<font face="Arial" size="1" color="#000000"><b>4.&nbsp;</b></font>
<font face="Arial" size="1" color="#000000"><b>my love</b></font><br>

<select multiple name="qid[4]" size="4"> . "\r\n"<option value="26">this</option>
    <option value="27">is</option>
    <option value="28">one</option>
    <option value="29">of</option>
    <option value="30">my</option>
    <option value="31">options</option>
    <option value="other">Other</option>
</select>
<br>Open answer: <input type="text" size="20" name="qidtext[4]">


Nu wil ik dit in een sessie bewaren en indien nodig terug plaatsen als 'antwoord' als de user een pagina terug wilt... de uitkomst heb ik gesplits in 'open' antwoorden en gewone opties

'gewone antwoorden'
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Array
(
    [1] => other
    [2] => Array
        (
            [0] => 10
            [1] => 11
            [2] => 12
            [3] => 13
            [4] => 14
            [5] => 15
            [6] => 16
            [7] => 17
        )

    [3] => Array
        (
            [0] => 18
            [4] => 22
        )

    [4] => other
)


en de open antwoorden
code:
1
2
3
4
5
6
Array
(
    [1] => other 1
    [2] => other 2
    [4] => 2
)


Heeft iemand ideeetjes hoe ik deze opzet kan verbouwen tot sessions of een idee hoe ik deze opzet beter kan ombouwen?... zodat het wat gemakkelijker is om te gebruiken, zekers bij de checkbox waar meerdere mogelijkheden mogelijk zijn..

Help :)

hebben jullie vragen over mijn opzet, of andere dingen waarmee jullie mischien wat meer zouden kunnen bereiken, just ask

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Sessions zijn al zoveel voorbij gekomen dat de search hierover echt wel oplossing voor heeft.
Denk eens logisch na: pagina 1 heeft 5 variabelen. Deze kun je posten naar een pagina en daar als hidden formfields printen. Pagina 2 heeft dan 10 variabelen. En pagina 3 krijgt dan 10 hidden en 5 gewone, dus 15 vars. Enzovoort...
Doe nu ipv alles hidden fields maken alles in een sessie stoppen en klaar is xtentic.

Verwijderd

Topicstarter
Tuurlijk valt alles wel in hidden fields te zetten, aan die optie heb ik idd ook al gedacht, maar dacht eerder aan een opzet met sessions.. :)

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Weet je niet hoe je sessions moet gebruiken? Als je alles in hidden field kan plaatsen, kun je ook alles in een cookie stoppen, of database of sessie. Kwestie van aanmaken van jouw optie en dan vullen.
Ik wil je nu ff niet verder helpen dan www.php.net/sessions en de search, sessies zijn gewoon _echt_ te veel behandeld hier.

Verwijderd

Topicstarter
Sorry sessies zijn het probleem niet, mja ik ga wel even verder experimenteren :)

heb weer wezen spelen ...

dit is wat de $_POST genereerd
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Array
(
    [1] => Array
        (
            [opentext] => anders
        )

    [2] => Array
        (
            [open] => open
            [opentext] => open answer 2
        )

    [3] => Array
        (
            [7] => 25
        )

    [4] => Array
        (
            [opentext] => test
        )

)


en dit is wat ik gebruik

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
       foreach ($_POST['qid'] as $key => $value) {
        // wanneer er een pagina gesubmit is sjek alle resultaten
            if (count($_POST['qid'][$key]) > 1) {
            // zijn er meerdere items gevonden bij deze resultaat?
                foreach ($_POST['qid'][$key] as $secKey => $secValue) {
                    if ($_POST['qid'][$key][$secKey] == "open") {
                        $_SESSION['answer'][$key]['open'] = $secValue;
                    }else{
                        $_SESSION['answer'][$key][$secKey] = $secValue;
                    }
                }
            }else{
                if ($_POST['qid'][$key]['open'] == "open") {
                    $_SESSION['answer'][$key]['open'] = $value;
                }else{
                    $_SESSION['answer'][$key][0] = $value;
                }
            }
        }


alleen komt dit dan uit mijn output :'(

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
array(4) {
  [1]=>
  array(2) {
    [0]=>
    array(1) {
      ["opentext"]=>
      string(6) "anders"
    }
    [""]=>
    NULL
  }
  [2]=>
  array(4) {
    [0]=>
    array(1) {
      ["open"]=>
      string(2) "17"
    }
    ["open"]=>
    string(4) "open"
    ["opentext"]=>
    string(13) "open answer 2"
    [7]=>
    string(2) "17"
  }
  [3]=>
  array(2) {
    [0]=>
    array(1) {
      [7]=>
      string(2) "25"
    }
    ["opentext"]=>
    string(7) "other 2"
  }
  [4]=>
  array(2) {
    [0]=>
    array(1) {
      ["opentext"]=>
      string(4) "test"
    }
    ["opentext"]=>
    string(7) "other 2"
  }
}


:'( ik snap niet hoe ik dit wel goed krijg :(

  • sebas
  • Registratie: April 2000
  • Laatst online: 16-12-2025
Ik ben op dit moment ook druk bezig met een enquete applicatie, ik heb het ongeveer als volgt opgezet:

Ik ga ervan uit dat ook de resultaten van niet compleet ingevulde vragenlijsten belangrijk zijn, je kunt immers in wat uitgebreidere enquetes ook door willen vragen, dus niet alle vragen zijn verplicht in te vullen. Ik sla voor elke beantwoorden vraag een ID van het gekozen antwoord (bij multiple choice items) of een array van ID's met gekozen antwoorden op. Dit gebeurt na het submitten van elke pagina. De hoeveelheid data die op die manier in de db moet valt heel erg mee, in de meeste gevallen zijn het maar een paar nummertjes en anders, bij open vragen wellicht ook een paar keer wat tekst. Maar ik kan me ook niet bij grote enquetes voorstellen dat het een probleem van diskspace kan zijn. De users gaan echt niet gigabytes aan tekst in je enquetes zitten intiepen.

Je kan nog altijd achteraf checken of je van een user genoeg of alle vragen beantwoord wilt hebben, en desnoods niet complete items tijdens het outputten filteren. De data die je van de klant wint is meestal vrij belangrijk en vaak duur om aan te komen, dus ik zou niet zomaar onnodig antwoorden weg gaan gooien omdat je bang bent dat je disk anders vol raakt.

Jouw methode om naar elke pagina te data heen en weer te versturen lijkt me niet echt handig. Waarom niet gewoon na elke submit direct netjes in de database inserten? Dat is stukken minder foutgevoelig, scheelt traffic en je scripts hoeven met minder data te gaan werken.

Ikzelf hou ook in de database bij welke vragen de user nog moet beantwoorden en waarop ik al expliciet of impliciet antwoorden heb. Ik denk dat dit zo'n beetje de manier is om het te doen aangezien enquetes eigenlijk nooit gewoon lineair opgebouwd zijn.

Everyone complains of his memory, no one of his judgement.


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Alleen die radiobuttons al met verschillende namen :?

Waarom geef je iedere vraag niet een nummer en slaat ze gewoon sequentieel op in een simpele Array ?? Ik snap echt niks van dit hele verhaal wat je hierboven probeert te genereren. Wat voor type vraag het is is toch helemaal niet nodig om op te slaan? Dat is toch iedere keer hetzelfde neem ik aan...

En wat sebas zegt is waar.. ook half ingevulde enquetes zijn interessant.. dus zonde om onderzoeksresultaten weg te gooien.

Verwijderd

Topicstarter
sebas schreef op 02 november 2002 @ 01:10:
Ik ben op dit moment ook druk bezig met een enquete applicatie, ik heb het ongeveer als volgt opgezet:
Bedankt voor het 1e verhelderende antwoord dat ik in me topic lees, ik denk idd dat het op jou manier erg handig is om gewoon alles gelijjk in de database te zetten, maar wil ook de mogelijkheid geven om antwoorden aan te passen maar dat is natuurlijk zeer zekers mogelijk :)... Qua snelheid zal het niet veel schelen denk ik, ik heb namelijk max 12 query's per pagina en dat is inclusief het inserten (6x) als ik jou idee doorzet!.

Bedankt voor deze nuttige informatie :)
Bosmonster schreef op 02 november 2002 @ 09:55:
Waarom geef je iedere vraag niet een nummer en slaat ze gewoon sequentieel op in een simpele Array ?? Ik snap echt niks van dit hele verhaal wat je hierboven probeert te genereren. Wat voor type vraag het is is toch helemaal niet nodig om op te slaan? Dat is toch iedere keer hetzelfde neem ik aan...
Type vraag is zekers wel van belang, want als deze op other (of ook op other) staat dan zal ook de input van de 'text' box in de database moeten belanden :)

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 18:08

me1299

$ondertitel

Ik ben voor mijn werk net zoiets aan het maken ;)

Als ik op mijn werk zit ik best de database structuur wel eens posten.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


  • sebas
  • Registratie: April 2000
  • Laatst online: 16-12-2025
Bosmonster schreef op 02 november 2002 @ 09:55:
Alleen die radiobuttons al met verschillende namen :?

Waarom geef je iedere vraag niet een nummer en slaat ze gewoon sequentieel op in een simpele Array ?? Ik snap echt niks van dit hele verhaal wat je hierboven probeert te genereren. Wat voor type vraag het is is toch helemaal niet nodig om op te slaan? Dat is toch iedere keer hetzelfde neem ik aan...
[...]
Juist niet, een aantal voorbeelden voor verschillende types vragenL

open vraag,
multiple choice vragen, een antwoord mogelijk
multiple choice vragen, meerdere antwoorden mogelik
multiple choice vragen, een antwoord mogelijk, optie 'anders namelijk'
multiple choice vragen, meerdere antwoorden mogelik, optie 'anders namelijk'
...

Ik heb zelg nog meer types vragen, maar dit toont al aan dat je zonder het type van de vraag niet echt ver komt.

De namen van de inputs heb ik ongeveer op dezelfde manier gegeven, het ziet er misschien niet netjes uit, maar het is anders ook niet zo makkelijk om arrays door een httpd request te versturen.

Everyone complains of his memory, no one of his judgement.

Pagina: 1