hallo

ik moet voor een school opdracht een poll maken met een dropdown menu met 50 bands erin en waarbij de eerst stem voor 9 punten telt de 2e voor 6 en de 3e voor 3 punten kan iemand mij daarbij helpen???
hier heb ik de nieuwe code en opnieuw uitleg.

ik moet voor school een php poll maken met een database.
dit is mijn database met de tabellen:
https://gyazo.com/e1b0f0e0aca46ddf3a43794609582076
https://gyazo.com/68cd162bc3e5943b2d5a64653c9ada59
https://gyazo.com/1621e34e94b36e382b3b6f3f0a4aed25
https://gyazo.com/70174c8b6a960299eaa856c5e3266620

maar ik weet niet hoe ik de votes moet laten opslaan in de database en waarbij de eerste stem 10 punten krijgt en de tweede 6 en de derde stem 3 punten. ook moet ik doen dat als ik in de eerste stem bijvoorbeeld racoon pak dat je die niet kunt kiezen bij de 2e en 3e stem.


of weet er iemand hier een site waar je bijna een klant en klare poll kunt downloaden die je alleen aan moet passen??


<?php
<?php


error_reporting(E_ALL ^ E_DEPRECATED);
// php select option value from database

$hostname = "localhost";
$username = "root";
$password = "";
$databaseName = "poll";

// connect to mysql database

$connect = mysqli_connect($hostname, $username, $password, $databaseName);

// mysql select query
$query = "SELECT * FROM `bands`";

// for method 1

$result = mysqli_query($connect, $query);

?>

<body>

<fieldset>

<legend>What is your favorite Band?</legend>

<form action="" id="form1" name="form1" method="POST">

Email<br>
<input type="text" name="Email" id="email"><br>

<select>

<?php while($row1 = mysqli_fetch_array($result)):;?>

<option value=""><?php echo $row1[1];?></option>


<?php endwhile;?>


</select>

<select>

<?php while($row1 = mysqli_fetch_array($result)):;?>

<option value=""><?php echo $row1[1];?></option>


<?php endwhile;?>


</select>

<select>

<?php while($row1 = mysqli_fetch_array($result)):;?>

<option value=""><?php echo $row1[1];?></option>


<?php endwhile;?>


</select>


<input type="submit" name="submit" id="submit" value="Vote" />

<input type="hidden" name="id" value="form1" />

<input type="hidden" name="MM_insert" value="form1" />
</form>

</fieldset>

</body>
?>
Zorg eerst maar eens formulier afhandeling. Daarna kan je eventueel de Poll vragen en de antwoorden gescheiden opslaan. De vragen sla je bijv. op in een tabel 'poll-questions- en de antwoorden aka je in de tabel 'poll-answers' op, met een koppeling naar de poll-questions.

Uiteindelijk kom je dan op twee queries uit.
- Ariën - op 01/06/2016 11:38:29

Zorg eerst maar eens formulier afhandeling. Daarna kan je eventueel de Poll vragen en de antwoorden gescheiden opslaan. De vragen sla je bijv. op in een tabel 'poll-questions- en de antwoorden aka je in de tabel 'poll-answers' op, met een koppeling naar de poll-questions.

Uiteindelijk kom je dan op twee queries uit.


oke maar ik ze echt niet weten hoe ik dat zou moeten gaan doen :p
Indien er niet meerdere "polls" gehouden worden maar enkel de vraag "wat is je favoriete band top 3" dan zou je kunnen volstaan met twee tabellen:

bands
id
name

bands_favorites (oid)
id
email
fav1_band_id
fav2_band_id
fav3_band_id

Als je het zo opslaat weet je precies wie op welke bands heeft gestemd en kun je daarna nog wel uitrekenen wat de meest "favoriete" band is (zowel in PHP als MySQL), zelfs als de gewichten (vermenigvuldigingsfactoren) waarmee je rekent veranderen.
Thomas van den Heuvel op 01/06/2016 13:02:32

Indien er niet meerdere "polls" gehouden worden maar enkel de vraag "wat is je favoriete band top 3" dan zou je kunnen volstaan met twee tabellen:

bands
id
name

bands_favorites (oid)
id
email
fav1_band_id
fav2_band_id
fav3_band_id

Als je het zo opslaat weet je precies wie op welke bands heeft gestemd en kun je daarna nog wel uitrekenen wat de meest "favoriete" band is (zowel in PHP als MySQL), zelfs als de gewichten (vermenigvuldigingsfactoren) waarmee je rekent veranderen.



maar het probleem is dat ze kunnen kiezen uit 50 bands die al in de database staan.
en dan werkt dit niet neem ik aan
Natuurlijk wel. Dat is iets wat je in je formulier oplost (met JavaScript), of in de verwerking (controles in PHP en terugkoppelingen aan de gebruiker indien er fouten zijn of er niets is ingevuld). Meerdere oplossingen denkbaar.

Stap 1 lijkt mij gewoon de informatie in de database krijgen. Desnoods in eerste instantie zonder controle of dit verschillende bands zijn. Als iemand 3x op zijn favoriete band wil stemmen soit. Lossen we later wel op.

Je moet het zo zien: dit zijn allemaal deelproblemen, die je in afzondering op kunt lossen. Eerst wil je toch data in je database krijgen, daarna kun je dit nog tweaken maar dan heb je in ieder geval iets dat (tot op zekere hoogte) werkt.

Probeer niet alles in 1x op te lossen, maar doe dit in stappen.

Verdeel en heers.
oke ik heb de database veranderd naar die 2 tabellen die jij had en wat daarna?
Moet ik echt gaan voorkauwen wat er moet gebeuren?

Indien het formulier gesubmit wordt:
- controleer invoervelden, is alles correct ingevuld? controleer hier ook of iemand al gestemd heeft (kijk of het e-mailadres al voorkomt in de tabel met stemmen dmv een SELECT query)
- zonee: koppel foutmelding(en) terug
- zoja: schrijf de stem met de 3 bands weg naar de stemmen-tabel (dmv een INSERT query)

Dan zou je op een aparte pagina een overzichtje kunnen genereren met de notering van de bands (wederom met een SELECT query en wat rekenwerk ofwel in PHP ofwel in MySQL).
hallo

ik krijg een error in deze code:
<?php
if (isset($_POST['submit'])){
$email = mysqli_real_escape_string($conn, $_POST['Email']);
$vote1 = mysqli_real_escape_string($conn, $_POST['vote1']);
$vote2 = mysqli_real_escape_string($conn, $_POST['vote2']);
$vote3 = mysqli_real_escape_string($conn, $_POST['vote3']);

$stmt = mysqli_prepare($db_link, "
UPDATE poll
SET band_regel =
CASE stemmen

WHEN ? THEN punten + 10
WHEN ? THEN punten + 6
WHEN ? THEN punten + 3
END
WHERE stemmen IN (?, ?, ?)");
mysqli_stmt_bind_param($stmt, "iiiiii", $vote1, $vote2, $vote3, $vote1, $vote2, $vote3);
mysqli_stmt_execute($stmt);
?>

in hier zit de fout volgens de error :
<?php
mysqli_stmt_bind_param($stmt, "iiiiii", $vote1, $vote2, $vote3, $vote1,$vote2, $vote3);
mysqli_stmt_execute($stmt);?
?>

dit is de error :

Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt, boolean given in C:\wamp64\www\poll2.php on line 129

and:

Warning: mysqli_stmt_execute() expects parameter 1 to be mysqli_stmt, boolean given in C:\wamp64\www\poll2.php on line 130



[size=xsmall]Toevoeging op 02/06/2016 11:39:51:[/size]


Reageren