Vragenlijst/soort van stemwijzer

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

David E

David E

04/05/2017 01:12:48
Quote Anchor link
Beste forumleden,

Bij voorbaat alvast dank voor de genomen moeite tijdens het lezen van deze post van een gloednieuwe gebruiker.

Op het moment ben ik bezig met het schrijven van een vragenlijst. Deze vragenlijst sla ik lokaal op in een phpMyAdmin database en run ik op OSX d.m.v. MAMP.
De betreffende database ziet er als volgt uit (ter illustratie, ik hoop dat de opmaak een beetje fatsoenlijk er uit rolt):
ID | vraag_top | vraag_bot | post_btn_nee | post_btn_ja
1 | vraag | vraag | int 1 of 0 | int 1 of 0
2 etc
3 etc etc.

Nu zou ik middels <p class ="vraag-top">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?= $vraag_top ?>
</p> in de HTML in een <div> (niet in een php echo), de variabele $vraag_top & _bot willen gebruiken om de vragen uit de database te laden, en nog belangrijker; later de gegeven waardes van de <a href> voor post_btn_ja & nee in opslaan. In mijn leek taal: de variabelen $vraag_top en $vraag_bot zijn middels sass/scss mooi gestyled en met (?) if else statements (?) of onClick events op de Ja / Nee href (?) bepalen dat er antwoord is gegeven, dit antwoord opslaan in de database om hier later een uitkomst op te genereren en de volgende vraag te weergeven.

Ik betwijfel of mijn code allemaal logisch en/of semantisch is, ik beroep mij dan op het feit dat ik recent met .php begonnen ben :-), en hoop dat jullie mij alsnog verder willen helpen!

Ter afsluiting, nogmaals dank voor het meedenken.
 
PHP hulp

PHP hulp

30/11/2024 11:48:22
 
- Ariën  -
Beheerder

- Ariën -

04/05/2017 13:24:06
Quote Anchor link
Even ter duidelijkheid om een regelmatige veel gemaakt fout recht te zetten:
phpMyAdmin is geen database, maar een databasebeheertool voor MySQLi/MariaDB databases. In het algemeen gebruik je deze het meest om een databasestructuur op te zetten en even snel wat data in te voeren (voor bijv. test- en ontwikkeldoeleinden).
 
David E

David E

04/05/2017 13:43:14
Quote Anchor link
- Ariën - op 04/05/2017 13:24:06:
Even ter duidelijkheid om een regelmatige veel gemaakt fout recht te zetten:
phpMyAdmin is geen database, maar een databasebeheertool voor MySQLi/MariaDB databases. In het algemeen gebruik je deze het meest om een databasestructuur op te zetten en even snel wat data in te voeren (voor bijv. test- en ontwikkeldoeleinden).


Dank voor uw snelle en duidelijke reactie Ariën!
Wat adviseert u met betrekking tot mijn bovenstaande vraag en uw gegeven informatie?
Bij voorbaat dank.
 
- Ariën  -
Beheerder

- Ariën -

04/05/2017 13:59:38
Quote Anchor link
Ik ben benieuwd waarom je twee velden hebt met: post_btn_nee en post_btn_ja.

Moet je altijd één van beide keuzes maken, of mag je ook een vraag leeg laten?
Gewijzigd op 04/05/2017 14:00:09 door - Ariën -
 
David E

David E

04/05/2017 14:01:44
Quote Anchor link
- Ariën - op 04/05/2017 13:59:38:
Ik ben benieuwd waarom je twee velden hebt met: post_btn_nee en post_btn_ja.

Moet je altijd één van beide keuzes maken, of mag je ook een vraag leeg laten?

Correct, de gebruiker beantwoord de vraag met "ja" of "nee", deze waarden moeten opgeslagen worden om met de uitkomst aan het eind een conclusie aan te trekken.
 
- Ariën  -
Beheerder

- Ariën -

04/05/2017 14:11:14
Quote Anchor link
Dan is deze opzet niet echt verkeerd. Je kan ook kiezen voor een enkel veld met 'answer' en daarin een E_NUM type met 0 of 1. Maar dan blijft het wel bij vaste keuzes. Als je de opzet verandert met open vragen, meerkeuzes etc, dan zul je een aparte tabel moeten gebruiken.
 
David E

David E

04/05/2017 14:33:03
Quote Anchor link
- Ariën - op 04/05/2017 14:11:14:
Dan is deze opzet niet echt verkeerd. Je kan ook kiezen voor een enkel veld met 'answer' en daarin een E_NUM type met 0 of 1. Maar dan blijft het wel bij vaste keuzes. Als je de opzet verandert met open vragen, meerkeuzes etc, dan zul je een aparte tabel moeten gebruiken.

Dank voor je reactie. Ik ga de velden veranderen naar "antwoord/answer", dit lijkt me inderdaad beter. Nu kom ik terug op de eerste vraag. Hoe kan ik de vragen uit de database lezen, displayen in een div/p tag en het antwoord op die pagina opslaan?
 
- Ariën  -
Beheerder

- Ariën -

04/05/2017 14:44:41
Quote Anchor link
De vragen kan je prima met while() loopen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$result
= mysqli_query($conn,"SELECT vraag_top, vraag_bot, answer FROM tbl_name");
if($result === false) {
    // query loopt fout! Foutafhandeling tonen met mysqli_error()
} else {
    while($data = mysqli_fetch_assoc($result)) {
        // de data staat hier in: $data['vraag_top'], $data['vraag_bot'] en $data['answer']
    }
}

?>
 
David E

David E

04/05/2017 14:52:48
Quote Anchor link
** quote-knip **
Dat is ook mij huidige structuur, excuus voor het niet eerder volledig vermelden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
$id     = isset($_GET['id']);
$sql    = "SELECT * FROM vragenlijsttbl ORDER BY id DESC";
$result = $connection->query($sql) or die($connection->error);

while($row = $result->fetch_assoc()) // nog geen foutmelding handler
    {
       $vraag_top = $row["vraag_top"];
       $vraag_bot = $row["vraag_bot"];
    };


en deze wil ik displayen in:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<div class ="container_vragen">
              <p class ="vraag-top"><?= $vraag_top ?></p>
              <p class ="vraag-bot"><?= $vraag_bot ?></p>
</div>


Het resultaat toont de laatste vraag in de row van de database, id2. Door "ORDER BY id DESC" toe te voegen aan de $sql variabele "SELECT * FROM" tonen $vraag_top en _bot de eerste row.

Het gewenste resultaat is dat er een <a href> (of iets anders) op de "Ja" en "Nee" knop komt te staan en die de resultaten post in de betreffende row gekoppeld aan het id.
Gewijzigd op 04/05/2017 15:53:43 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

04/05/2017 14:56:47
Quote Anchor link
En dat is het punt, je loop schrijft nu steeds de variabelen over $vraag_top en $vraag_bot over. Dus krijg je alleen de laaste records zichtbaar.

Je moet je hele HTML die je steeds wilt herhalen in je while plaatsen.
 
David E

David E

04/05/2017 15:26:50
Quote Anchor link
**quote-knip**

Zou je dat iets meer willen toelichten? Ik ben overigens meer dan bereid om de aangeboden hulp te vergoeden!
Gewijzigd op 04/05/2017 15:53:20 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

04/05/2017 15:44:38
Quote Anchor link
De laatste regel is niet zo heel lastig in de praktijk:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
// voer hier je query uit en dergelijke
while($row = $result->fetch_assoc()) {
?>

<div class ="container_vragen">
              <p class ="vraag-top"><?php echo $row['vraag_top']; ?></p>
              <p class ="vraag-bot"><?php echo $row['vraag_bot']; ?></p>
</div>
<?php
}
?>
 
David E

David E

04/05/2017 15:48:56
Quote Anchor link
**quote-knip**

Dat is me inderdaad gelukt. Door $row['vraag_top & _bot'] te echoën krijg ik ook alle rows als resultaat te zien. Hoe kan ik er nu voor zorgen dat er d.m.v. een antwoord (ja/nee) te geven het resultaat ervan op te slaan en de volgende row in de database te displayen? Nogmaals dank voor alle hulp Ariën!

- Ariën -:
Het is niet nodig om een voorlaatste post integraal te quoten.
Gewijzigd op 04/05/2017 15:52:56 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

04/05/2017 15:55:21
Quote Anchor link
Je hebt al een formuliertje met de radio- of selectbuttons?
 
David E

David E

04/05/2017 15:59:24
Quote Anchor link
Absoluut, momenteel staan de zaken er zo voor:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
            $id
     = isset($_GET['id']);
            $sql    = "SELECT * FROM vragenlijsttbl LIMIT 1 OFFSET 2";
            $result = $connection->query($sql) or die($connection->error);
            while($row = $result->fetch_assoc()) {
            ?>

            <div class ="container_vragen">
                <p class ="vraag-top"><?php echo $row['vraag_top']; ?></p>
                <p class ="vraag-bot"><?php echo $row['vraag_bot']; ?></p>
            </div>
            <?php
            }
            ?>


LIMIT 1 OFFSET 1 t/m 15 wil ik nu in een if statement gaan verwerken. "if href is clicked, then show LIMIT OFFSET 2, 3, 4. Hoe ik de data bij klikken van href ga opslaan is nog maar de vraag.
 
- Ariën  -
Beheerder

- Ariën -

04/05/2017 16:05:23
Quote Anchor link
Ikzelf zet te denken om de settings per verandering direct op te slaan in de database. Dat kan je dan met een AJAX-request in HTML en JavaScript. Je kan bijvoorbeeld als handigheid een mooi visueel vinkje plaatsen bij je vraag zodra je request goed is gegaan (met een status zoals OK vanuit je script).

Dan kan de gebruiker steeds heen en weer switchen omdat alles realtime bij het klikken wordt verstuurd.
Gewijzigd op 04/05/2017 16:10:00 door - Ariën -
 
David E

David E

04/05/2017 16:15:17
Quote Anchor link
Dat klinkt fantastisch! Hier heb ik tijdens het zoeken voor oplossingen ook meermaals reacties over gelezen. Mijn kennis reikt echter nog niet zo ver om hier zoals jij dat kan een oplossing in te bedenken... De oplossing zoals jij het schets is wel het gewenste eindresultaat, inclusief het opslaan van het antwoord dan.
 
- Ariën  -
Beheerder

- Ariën -

04/05/2017 16:33:31
Quote Anchor link
Ikzelf gebruik voor AJAX-requests vaak de $.ajax() functie van de jQuery-library.
Met deze code kan je in ieder geval al de gekozen waarde tonen. Met een $.ajax() request kan je deze naar je script sturen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<script src="https://code.jquery.com/jquery-3.2.1.js"></script>

<select id="123" name="123">
    <option value="0">Nee</option>
    <option value="1">Ja</option>
</select>
<div class="checked"></div>


En de JavaScript:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$('select').on('change', function() {
      alert( this.value );
});
Gewijzigd op 04/05/2017 16:35:23 door - Ariën -
 
David E

David E

04/05/2017 16:49:55
Quote Anchor link
Hier kom ik helaas niet verder mee... Ben je mogelijk bereid om nog verder uit te weiden in je toelichting?
 
- Ariën  -
Beheerder

- Ariën -

04/05/2017 17:02:42
Quote Anchor link
In plaats van die alert moet je dus de $.ajax() functie van jQuery gebruiken.
 
David E

David E

04/05/2017 17:33:59
Quote Anchor link
Misschien even een andere vraag:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$vraagid = 0;
            $sql    = "SELECT * FROM vragenlijsttbl LIMIT 1 OFFSET $vraagid";


Hoe kan ik de variabele $vraagid laten optellen met 1, bij het klikken van de ja of nee button/href/HTML element?
 

Pagina: 1 2 volgende »



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.