Dodanie różnych typów odpowiedzi - ankieta w PHP

0

Tworzę generator ankiet w PHP połączone z bazą danych. Pole dla pytania + odpowiedzi jednokrotnego wyboru (radio), pole dla pytania + odpowiedzi wielokrotnego wyboru (checkbox), pole dla pytania + odpowiedź tekstowa (input text). Działa tylko dla jednego typu (radio lub checkbox). Chciałbym żeby działało również dla odpowiedzi checkbox i text.
Proszę o pomoc i wskazówki odnośnie tego problemu.

Baza danych:

table_questions
numberquestion,
questions_radio,
questions_checkbox,
questions_text.

table_answers
id,
numberquestion,
answers_radio,
answers_checkbox,
answers_text

add.php


<?php include 'survey.php'; ?>
<?php
    if(isset($_POST['submit'])){
        $numberquestion = $_POST['numberquestion'];
        $radio = $_POST['questions_radio'];
        $check = $_POST['questions_check'];
        $text = $_POST['questions_text'];

        $table_answers = array();
        $table_answers[1] = $_POST['answer1'];
        $table_answers[2] = $_POST['answer2'];
        $table_answers[3] = $_POST['answer3'];
        $table_answers[4] = $_POST['answer4'];

        $query = "INSERT INTO `table_questions` 
                    (numberquestion, questions_radio, questions_checkbox, 
                    questions_text) 
                VALUES ('$numberquestion', '$radio', '$check', '$text')";

    <p>
        <label>Question radio:</label>
        <input type="text" name="questions_radio" placeholder="Write to question" />
    </p>

    <p>
        <label>Answer 1:</label>
        <input type="text" name="answer1" placeholder="Write to answer"/>
    </p>

    <p>
        <label>Answer 2:</label>
        <input type="text" name="answer2" placeholder="Write to answer"/>
    </p>
    <p>
        <label>Answer 3:</label>
        <input type="text" name="answer3" placeholder="Write to answer"/>
    </p>
    <p>
        <label>Question checkbox</label>
        <input type="questions_checkbox" name="questions_checkbox" placeholder="Write to question" />
    </p>

    <p>
        <label>Answer1:</label>
        <input type="text" name="answer4" placeholder="Write to answer"/>
    </p>

    <p>
        <label>Answer2:</label>
        <input type="text" name="answer5" placeholder="Write to answer"/>
    </p>

   
    <p>
        <label>Question with answers textfield</label>
        <input type="text" name="questions_text" placeholder="Write to question"/>
    </p>
0

Przede wszystkim nie dubluj kodu i wydzielaj kod do konkretnych funkcji, które będą coś robić. Obecnie masz $table_answers[7] = $_POST['answer7']; - a co będzie jak będziesz miał 50 odpowiedzi? No to może skrajny przypadek, ale generowanie pytań i odpowiedź od strony frontu pozostaw specjalnie do tego przygotowanym funkcjom (które sam napiszesz).

Schemat bazy danych jakoś mi nie leży - Zrób jedną tabelę questions, drugą answers. W tabeli answers dodaj question_id. W tabeli questions definiuj per pytanie - czy odpowiedzi mają być w formie textu,checkboxa czy radio boxa. Zdefiniuj też np ile odpowiedzi można zaznaczyć/ (jak masz np 5 checkboxow, a 3 są poprawne). To tak na szybko :)

aaa i jeszcze masz podatność na SQL Injection.

0
axelbest napisał(a):

Przede wszystkim nie dubluj kodu i wydzielaj kod do konkretnych funkcji, które będą coś robić. Obecnie masz $table_answers[7] = $_POST['answer7']; - a co będzie jak będziesz miał 50 odpowiedzi? No to może skrajny przypadek, ale generowanie pytań i odpowiedź od strony frontu pozostaw specjalnie do tego przygotowanym funkcjom (które sam napiszesz).

Schemat bazy danych jakoś mi nie leży - Zrób jedną tabelę questions, drugą answers. W tabeli answers dodaj question_id. W tabeli questions definiuj per pytanie - czy odpowiedzi mają być w formie textu,checkboxa czy radio boxa. Zdefiniuj też np ile odpowiedzi można zaznaczyć/ (jak masz np 5 checkboxow, a 3 są poprawne). To tak na szybko :)

aaa i jeszcze masz podatność na SQL Injection.

To znaczy co do odpowiedzi to jak na razie będzie ustawione na sztywno 4 pola w obydwu przypadkach (radio, checkbox).
Baza jest tak stworzona są dwie tabele 'pytania' i 'odpowiedzi'. W tabeli 'pytania' jest numer pytania, nazwa pytania dla radio, nazwa pytania dla checkbox. W tabeli 'odpowiedzi' jest numer pytania, odpowiedź radio, odpowiedź checkbox. Co do zaznaczania odpowiedzi to jeśli jest pytanie dla odpowiedzi radio to będzie można tylko 1 zaznaczyć, pytanie dla checkbox to będzie można wiele i pytanie, w którym odpowiedź będzie można wpisać w pole tekstowe (poprawnych, złych odpowiedzi nie będzie, ponieważ jest to ankieta). Tak jak napisałem działa wszystko ładnie tylko dla jednego typu odpowiedzi np. radio (wpisuje w pole tekstowe przeznaczone dla pytania jednokrotnego wyboru jakieś pytanie do ankiety i pod spodem w 4 zdefiniowane pola tekstowe odpowiedzi do tego pytania). Poniżej zrobiłem pole tekstowe dla drugiego pytania (pytanie wielokrotnej odpowiedzi - checkbox) i 4 odpowiedzi, ale jak wpisuję na raz obydwa pytania i odpowiedzi do nich to niestety nie działa tak jak powinno (po wygenerowaniu pokazuje się pytanie jednokrotnego z odpowiedziami typu radio a pod nimi to samo pytanie drugi raz).

0

Dalej mam tylko dla jednego rodzaju odpowiedzi. Pierwsze pytanie pokazuje się odpowiedziami typu radio i zapisuje do bazy, drugie pytanie pokazuje się również i dodaje je do bazy, ale bez odpowiedzi dla typu checkbox (również checkboxy się nie pokazują). Chciałbym również dodać pytanie z odpowiedzią tekstową do tych dwóch. Mógłby ktoś pomóc?

1 użytkowników online, w tym zalogowanych: 0, gości: 1