Versio

subquery probleem

Overzicht Reageren

Afra ca

Afra ca

27/04/2009 19:06:00
Quote Anchor link
Gegroet,

Was bezig met een quiz site. Ga je eerst naar pagina "categorieselectie.php", die haalt alle vragen uit een bepaalde categorie op en zet ze in een sessie array. Dan ga je naar een andere pagina die 1 voor 1 de vragen laat zien, en je ze dan uiteraard kan maken. Nu zit het probleem in de laatste pagina: resultaat.php. Ik wil op basis van de array met de vraagnummers (sessie array), de juiste antwoorden selecteren uit de database.

Dit is de database structuur, begrijp dat het beetje discutabel is, maar dat doet er nu even niet toe (al zijn suggesties (als ze mooi geformuleerd zijn) welkom, mocht ik zin hebben in versie 3.0):

vragen
--Vraag_ID
--Vraag
--Categorie

antwoorden
--Vraag_ID
--Antwoord1
--Antwoord2
--Antwoord3
--Antwoord4

juiste_antwoorden
--Vraag_ID
--Juiste_Antwoord

Dit is het stuk code dat ik gebruik om de juiste antwoorden te kiezen. (Had eerst hele andere code, en dit is even wat spontaan gepruts).

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
$query0
= "SELECT j.Juiste_Antwoord FROM juiste_antwoorden AS j, vragen AS v WHERE j.Vraag_ID = (SELECT v.Vraag_ID FROM vragen AS v WHERE categorie = '".$_SESSION['Categorie']."') AND v.Vraag_ID = j.Vraag_ID ";
    $result0 = mysql_query($query0);
    if (!$result0){
        echo mysql_error(); }
    else {
        $i = 0;
        while ($resultaat = mysql_fetch_assoc($result0)) {
            $antwoorden[$i] = $resultaat['Juiste_Antwoord'];
            $i++;
        }
    }

?>


Alleen het probleem is, hij geeft aan:
Quote:
Subquery returns more than 1 row


Iemand suggesties......

note: De query is beetje chaos geworden omdat ik uit wanhoop wat dingen door elkaar probeerde..... :$
Gewijzigd op 01/01/1970 01:00:00 door Afra ca
 
PHP hulp

PHP hulp

25/05/2012 15:52:54
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Jesper Diovo

Jesper Diovo

27/04/2009 19:09:00
Quote Anchor link
Je datamodel is al niet ver genoeg genormaliseerd.

antwoorden
--Vraag_id
--Antwoord

That's it. Kun je zoveel antwoorden aanmaken als je wilt.

Quote:
Subquery returns more than 1 row.
Je subquery stuurt meerdere rijen terug, waar er maar 1 nodig was. Dat duidt op de subquery: (SELECT v.Vraag_ID FROM vragen AS v WHERE categorie = '".$_SESSION['Categorie']."') Er zijn dus meerdere vragen met die categorie. Als dat zo moet, zou je i.p.v. de = IN kunnen gebruiken vóór de subquery. Dat betekent dat j.Vraag_ID tussen de resultaten van de subquery zou moeten staan.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
 
Afra ca

Afra ca

27/04/2009 19:23:00
Quote Anchor link
Achja, de dagen dat ik meer dan 5 SQL commando's kende liggen helaas al tijdje achter me. (4 periodes van havo5), so don't blame me.

Maar bedankt voor de hulp :)

ps. Jezpur, je stelt dit voor:

antwoorden
--Vraag_id
--Antwoord

Maar hoe zou m'n primary key er dan uitzien? Lijkt mij in eerste instantie dan de combinatie van de 2 velden.......
 
Jesper Diovo

Jesper Diovo

27/04/2009 19:25:00
Quote Anchor link
Natuurlijk heeft het veld zelf ook een id. Heb je meteen het id van een antwoord, hoef je dat alleen maar in het formulier te verwerken en je kunt zo opslaan waar iemand op gestemd heeft. Datzelfde geldt voor Juiste_Antwoord. Maak daar dan een id van ;-).

Vragen
-- id
-- vraag
-- categorie

Antwoorden
-- id
-- vraag_id
-- antwoord

Ingevoerde_Antwoorden
-- id
-- vraag_id
-- antwoord_id

Juiste_Antwoorden
-- id
-- vraag_id
-- antwoord_id

Et voilà, c'est ça ;-).
 



Overzicht Reageren

Get Adobe Flash player