Enquête systeem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Kevin J

Kevin J

24/02/2015 08:30:18
Quote Anchor link
Hallo PHP´ers.

Ik heb een probleem. Ik heb op dit moment een klant. De klant wilt een enquête systeem. Met daarin de mogelijkheid om enquetes te maken, en dan 5 verschillende soorten vraag types namelijk:
ja/nee
Multiple Choise
eens/oneens
beantwoorden op schaal 1 2 3 4 5
Open ruimte

Hoe kan ik dit het beste aanpakken/maken? Want ze willen meerdere enquêtes maken, en telkens een ander soort vraag typen. Ik zit al een paar dagen te brain stormen. maar heb geen idee hoe ik dit het beste kan aanpakken.
Ik hoop dat jullie mij begrijpen en misschien een goede oplossing weten.

Toevoeging op 24/02/2015 08:31:41:

Dit is een voorbeeld van hoe ze het bijvoorbeeld willen:

http://gyazo.com/9519a4a5b57654d0f33a7269839900ae
 
PHP hulp

PHP hulp

28/03/2024 10:20:48
 
Jacco Engel

Jacco Engel

24/02/2015 10:22:05
Quote Anchor link
Ok even snel en grof opgezet :
Database :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
enquetes
- equeteId (PK)
- enqueteName
- enqueteDiscription

enqueteQuestions
- questionId (PK)
- enqueteId (FK)
- question
- questionType (JA_NEE , MULTIPLE , AGREE_DISAGREE , ONE_TO_FIVE , TEXT)

enquetePossibleAnswers
- possibleAnswerId (PK)
- questionId (FK)
- possibleAnswer
- possibleAnswerOrder

enqueteAnswers
- answerId (PK)
- questionId (FK)
- answer
- userId (indien van toepassing)


En een stukje basiscode voor het bouwen van de pagina :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
/*  assuming http://www.url.tld?enquete=1 */
<table>
<?php
    $link
= mysqli_connect("host" , "username" , "password" , "database");
    
    $questionSql = "SELECT * FROM enqueteQuestions WHERE equeteId-=''.$_GET["enqueteId"].'" ;
    $result = mysqli_query($questionSql , $link) ;
    while($row = mysqli_fetch_assoc($result)) {
        echo "<tr><td>".$row["question"]."</td>" ;
        switch($row["questionType"]) {
            case
"TEXT" :
            {

                echo '<td><textarea></textarea></td></tr>';
            }

            break;
            case
"JA_NEE" :
            {

                echo '<td>
                <input type="radio">Ja <br />
                <input type="radio">Nee
                </td></tr>'
;
            }

            break;
            case
"AGREE_DISAGREE" :
            {

                echo '<td>
                <input type="radio">Eens <br />
                <input type="radio">Oneens
                </td></tr>'
;
            }

            break;
            case
"ONE_TO_FIVE" :
            {

                echo '<td>
                <input type="radio">1 <br />
                <input type="radio">2 <br />
                <input type="radio">3 <br />
                <input type="radio">4 <br />
                <input type="radio">5
                </td></tr>'
;
            }

            break;
            case
"MULTIPLE" :
            {

                echo '<td>' ;
                $sqlAnswers = "SELECT * FROM enquetePossibleAnswers WHERE questionId=" . $row["questionId"] ." ORDER by possibleAnswerOrder ASC";
                $resultAnswers = mysqli_query($sqlAnswers , $link) ;
                while($rowAnswers = mysqli_fetch_assoc($resultAnswers)) {
                    echo '
                        <input type="checkbox">'
.$rowAnswers["possibleAnswer"].' <br />
                    '
;
                }

                echo '</td></tr>' ;
            }
        }
    
    }

?>

</table>


Even snel uit mn hoofd geklopt dus kan een foutje hier en daar in zitten, maar dit zou je een goed idee moeten geven van hoe en wat :).

Jacco

PS: code is niet geschikt om 1 op 1 te publiceren daar er geen enkele security check of verificatie in zit
Gewijzigd op 24/02/2015 10:23:20 door Jacco Engel
 
Kevin J

Kevin J

24/02/2015 10:24:33
Quote Anchor link
Hallo,
Bedankt voor je reactie het ziet er aardig goed uit.
Zelf heb ik nooit gewerkt met switch en case.
maar zodra je dit maakt. hoe kan je dan beste maken met het maken van zo'n enquete?
 
Jacco Engel

Jacco Engel

24/02/2015 10:29:29
Quote Anchor link
Zou je de vraag kunnen herformuleren zodat deze wel duidelijk is :)?
 
Kevin J

Kevin J

24/02/2015 10:33:20
Quote Anchor link
Sorry, ik deed het nogal snel typen ik zal er nu mijn tijd voor nemen.
De code die je stuurt ziet er goed uit. Zelf heb ik nog nooit gewerkt met het principe van switch en case, dus dat moet ik sowieso nog leren maar het ziet er goed uit.
De code die jij liet zien is voor de output van de enquête aan de bezoekers.
Maar hoe zou ik het het beste kunnen aanpakken bij het systeem waarbij we het gaan opzetten. Dus de pagina waar we daadwerkelijk de enquête maken.
Want als ze bijvoorbeeld bij vraag 1 een multiple chooise willen doen, moeten ze iets anders krijgen als bij een ja nee vraag.
Stel ze willen bij vraag 2 een textarea doen. hoeven ze geen multiple chooise dingen in te vullen. als voorbeeld.
Hopelijk snap je nu wat ik bedoel?
 
Jacco Engel

Jacco Engel

24/02/2015 10:42:18
Quote Anchor link
o zo redelijke simpel

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<script type="text/javascript">
function checkQuestionType() {
    var questionType = document.getElementById("question_type") ;
    var multipleAnswers = document.getElementById("multiple_answers") ;
    
    if(questionType.value == "MULTIPLE") {
        multipleAnswers.style.display = "";
    } else {
        multipleAnswers.style.display = "none";
    }
}
</script>
<table>
    <tr>    
        <td>Question</td>
        <td><input type="text"></td>
    </tr>
    <tr>
        <td>
            Question type
        </td>
        <td>
            <select id="question_type">
                <option value="JA_NEE">Ja / Nee</option>
                <option value="MULTIPLE">Multiple Choice</option>
                <option value="AGREE_DISAGREE">Eens / Oneens</option>
                <option value="ONE_TO_FIVE">Range (1 tot 5)</option>
                <option value="TEXT">Open vraag</option>
            </select>
        </td>
    </tr>
    <tr id="multiple_answers" style="display : none">
        <td>Antwoorden (1 antwoord) per regel</td>
        <td><textarea></textarea></td>
    </tr>
</table>


Volgende gaat lullig klinken maar is niet zo bedoeld :
Als ik het nog verder voor je uit moet schrijven kun je je klant beter naar mij toe sturen, ik ga namelijk niet een systeem voor je uitkloppen wat jij kunt factureren :)
Gewijzigd op 24/02/2015 10:43:56 door Jacco Engel
 
Kevin J

Kevin J

24/02/2015 10:50:03
Quote Anchor link
Bedankt hiermee lukt het mij.
Ik zal eerlijk zijn, ik verdien niks. Dit is mijn eerste klant, dus doe Het Gratis. Enquête is een klein ding van het hele opdracht. Ze wilde informatie winnende systemen. Dus een poll en enquête, de poll heb ik al gemaakt maar ik had geen idee hoe ik moest beginnen met enquête. Maar er zitten al veel meer systemen die ik al wel gemaakt heb. Alleen enquêtes had ik problemen. Dus enorm bedankt
 
Jacco Engel

Jacco Engel

24/02/2015 10:50:31
Quote Anchor link
Geen enkel probleem :)
 
Kevin J

Kevin J

01/03/2015 10:34:53
Quote Anchor link
Het is mij he le maal gelukt, dus nogmaals bedankt.
Heb eigenlijk probleempje en ik gok dat ik inner join / left join moet gebruiken.
Ik wil namelijk dat mensen maar 1x een enquete kunnen invullen.
Dus bijvoorbeeld:
De enquetes 1 2 3 5 staan online
enquete 4 staat offline.

Pietje heeft enquete 1 al ingevuld, die staat in een aparte table.
Pietje moet dan enquete 2 3 of 5 krijgen

(Online/offline word aangegeven in de DB met een 0 of 1)
Mijn vraag is hoe kan ik dit het beste doen?
 
Kevin J

Kevin J

03/03/2015 06:58:08
Quote Anchor link
okay ik heb nog veel geprobeerd maar mij lukt niet.
Even een kleine database opbouw:
Tabel: enquete_questions
Hier staan alle vragen in en wat voor typen het is

Table: enquete_answers
Hier staan alle antwoorden in + het ID van de enquete

Wat ik graag zou willen:
Als iemand de enquete heeft ingevuld staat dat bij enquete_answers, daar staat ook ID van enquete_questions.
Dus ik zou graag willen een PHP script dat een andere enquete pakt (Die online staat (Kijk bericht hierboven)), wat nog niet is ingevuld. Dus wat niet bij enquete_answers staat
 
Thomas van den Heuvel

Thomas van den Heuvel

03/03/2015 13:09:54
Quote Anchor link
Stuur de invuller een activatie-code toe als je het e-mailadres hebt, waarmee je iemand expliciet toegang geeft tot een enquete.

En als je het e-mailadres niet hebt, laat iemand dan een activatie-code aanvragen via zijn/haar e-mailadres.
("nummertje trekken")

Dat laatste weerhoudt iemand er niet van om meerdere keren dezelfde enquete aan te vragen via verschillende e-mailadressen, dus als je een vast adressenbestand hebt (als je er (wat meer) verzekerd van wilt zijn dat alle enquetes maar 1x worden ingevuld door iemand) dan zou dat beter zijn.

Tenzij iemand hier al dubbel geregistreerd stond... :)
 
Kevin J

Kevin J

03/03/2015 14:09:17
Quote Anchor link
Hallo, ik ga er van uit dat je mijn vraag niet begrijpt.
Het is een systeem waar mensen inloggen. Dus naam en alles zit al vast, zodra je ingelogd bent kan je bestanden downloaden. Ik werk met credits dus als credits op zijn kan je niks downloaden.
Om extra credits te krijgen wil ik dat mensen een enquête invullen.
Maar ik wil dat die mensen maar 1x een enquête kunnen invullen en dus niet meerdere keren.
 
Thomas van den Heuvel

Thomas van den Heuvel

03/03/2015 14:15:24
Quote Anchor link
Dat lijkt mij een kwestie van bijhouden of iemand een enquete volledige heeft ingevuld, dus een soort van koppeltabel tussen gebruikers en enquetes met een veldje "ingevuld" ja/nee.
 
Jacco Engel

Jacco Engel

03/03/2015 17:14:36
Quote Anchor link
Als je (grofweg) de door my gesuggereerde structuur gebruikt kun je via enqueteAnswers kijken welke enquete / vragen wel en niet zijn ingevuld.

SELECT * FROM enquetes WHERE enqueteId NOT IN (
SELECT aq.enqueteId FROM enqueteAnswers ea
JOIN enqueteQuestions eq on eq.questionId = ea.questionId);

even snel een query die je alle enquetes terug geeft die de bezoeker nog niet heeft ingevuld
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.