login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Enquetescript (Opgelost)

Offline Oneday - 24/02/2011 19:35 (laatste wijziging 24/02/2011 19:36)
Avatar van OnedayNieuw lid Ik ga een enquete script maken... Het uitlezen en zo ben ik al achter... Maar het toevoegen van nieuwe vragen + antwoorden nog niet... Namelijk:

Ik heb 3 tabellen in de database:
1. De tabel: Vragen
Hier staan de vragen in: (`id` & `vraag`)

2. De tabel: Antwoorden
Hier staan de antwoorden in (`id` & `antwoord`)

3. De linktabel (hier link ik de juiste antwoorden aan de juiste vraag)
(`id`, `vraagID`, `antwoordIDs`)
(antwoordIDs = geserialized, dus een array van de verschillende antwoorden ID's)...

Nu zit ik met volgend probleem:

Ik heb een form waar ik een vraag intype + 3 antwoorden

Ik submit -->

Nu kan ik de vraag in de vragen tabel wegschrijven en de antwoorden in de antwoord tabel, maar daarna moet ik het ID van deze vraag en het ID's van de 3 antwoorden weten om deze te kunnen linken in de tabel.

Hoe kan ik dit doen?

Alvast bedankt!!

~Oneday

17 antwoorden

Gesponsorde links
Offline valles10 - 24/02/2011 21:07
Avatar van valles10 HTML interesse ehm, die linktabel is zinloos...
geef gewoon aan je antwoorden tabel een extra kolom mee met vraag, daarin zet je het id van de vraag.

Vervolgens zoek je gewoon in de db naar antwoorden WHERE vraag = VRAAGID
Offline Oneday - 24/02/2011 21:11
Avatar van Oneday Nieuw lid
valles10 schreef:
ehm, die linktabel is zinloos...
geef gewoon aan je antwoorden tabel een extra kolom mee met vraag, daarin zet je het id van de vraag.

Vervolgens zoek je gewoon in de db naar antwoorden WHERE vraag = VRAAGID

En hoe weet ik welk ID mijn vraag heeft bij het wegschrijven in de database zodat ik dit in dat extra veld in de antwoorden tabel kan schrijven?
Offline valles10 - 24/02/2011 21:13
Avatar van valles10 HTML interesse als je de vraag ophaalt uit de db, kan je toch ook het ID ophalen...
Offline Oneday - 24/02/2011 21:41
Avatar van Oneday Nieuw lid
valles10 schreef:
als je de vraag ophaalt uit de db, kan je toch ook het ID ophalen...

Bij het ophalen wel...


Maar als ik m'n form om vraag + 3 antwoorden heb ingevuld, moet ik de vraag wegschrijven, deze krijgt een bepaald id toegewezen (auto_increment), maar ik moet dit ID weten om in het veld vraagid bij antwoorden te plaatsen zodat ik bij het uitlezen weet dat het antwoord bij die vraag hoort
Offline Martijn2008 - 24/02/2011 22:02
Avatar van Martijn2008 PHP beginner Je kunt ook LimeSurvey gebruiken, dan hoef je helemaal niets te scripten !
Offline Oneday - 24/02/2011 22:02 (laatste wijziging 25/02/2011 08:20)
Avatar van Oneday Nieuw lid
Martijn2008 schreef:
Je kunt ook LimeSurvey gebruiken, dan hoef je helemaal niets te scripten !

Maar dan is de fun er ook af. 

Dus als iemand weet hoe ik dit probleem verhelp??
Offline valles10 - 25/02/2011 09:05
Avatar van valles10 HTML interesse maak hidden fields, met ID als value en een name die je achteraf weet...
Offline Oneday - 25/02/2011 09:19
Avatar van Oneday Nieuw lid Maar dat id mag nog niet bestaan in de database he.. Dus moet ik eerst weten wat de volgende auto increment in de db is of zo..
Offline Beirensg - 25/02/2011 09:43
Avatar van Beirensg HTML beginner de volgende auto increment vind je zo:
  1. $result = mysql_query("SHOW TABLE STATUS LIKE 'table_name' ");
  2. $row = mysql_fetch_array($result);
  3. $Auto_increment = $row['Auto_increment'];


Maar je kan best de laatst geinserted id opvragen (na toevoegen vraag of antwoord):
mbv de php-functie mysql_insert_id() kan je de laatste id van de laatste query opvragen.
Offline UpLink - 25/02/2011 09:53
Avatar van UpLink ... Mss de antwoorden scheiden met een | en als je ze ophaalt exploden op de | ?

dan kan je per ID mooi afwerken

Vraag (ID=1): Is SiteMasters cool?
Antwoord (ID=1): Ja|Nee|Misschien

Als je dat explode (Ja|Nee|Misschien) krijg je Ja Nee Misschien en die kun je dan in een keuzelijstje zetten he :-)

Is volgens mij zowat de snelste oplossing...
Ze hebben mij dat ooit zo eens voorgesteld en het lukte toch goed 
Offline Beirensg - 25/02/2011 10:15
Avatar van Beirensg HTML beginner
  1. mysql_query("INSERT INTO vragen (vraag) VALUES ('hoe gaat het?')");
  2. $vraagid=mysql_insert_id();
  3. mysql_query("INSERT INTO antwoorden (antwoord) VALUES ('goed')");
  4. $antwoordid1=mysql_insert_id();
  5. mysql_query("INSERT INTO antwoorden (antwoord) VALUES ('slecht')");
  6. $antwoordid2=mysql_insert_id();
  7. mysql_query("INSERT INTO vraag_antwoord (vraag,antwoord) VALUES (".$vraagid.",".$antwoordid1.")");
  8. mysql_query("INSERT INTO vraag_antwoord (vraag,antwoord) VALUES (".$vraagid.",".$antwoordid2.")");


Dit werkt en is (imho) iets beter als explode, aangezien je in de tussentabel kan plaatsen of dit het correct antwoord is of niet. Daarbovenop ben ik niet zo'n voorstander van explode omdat je altijd de mogelijkheid van je delimiter die voorkomt in een antwoord moet kunnen omzeilen .

Offline UpLink - 25/02/2011 10:36
Avatar van UpLink ... Maar een enquete heeft geen goed of fout antwoord he 

Een enquete is imo voor meningen en marktonderzoek... dus op zich kan dat ook perfect met mijn voorstel en een session om te kijken of de vraag al beantwoord is en eventueel aan te passen als ze op de "back"-knop drukken...

Of versta ik jouw interpretatie verkeerd? 
Offline Beirensg - 25/02/2011 10:39
Avatar van Beirensg HTML beginner klopt, had de titel niet goed gelezen. Uw voorstel is zeker ook haalbaar.

My mistake 
Offline Oneday - 25/02/2011 16:19
Avatar van Oneday Nieuw lid Oké bedankt! :-)

Moet er naast die 'mysql_insert_id();' niets meegegeven worden parameters? Want hoe weet dat commando nu over welke tabel 't gaat?

+ enig idee hoe ik dat commando in zend framework uitvoer?
Offline Joost - 25/02/2011 18:32 (laatste wijziging 25/02/2011 18:35)
Avatar van Joost PHP expert
Oneday schreef:
Oké bedankt! :-)

Moet er naast die 'mysql_insert_id();' niets meegegeven worden parameters? Want hoe weet dat commando nu over welke tabel 't gaat?

+ enig idee hoe ik dat commando in zend framework uitvoer?
Er hoeven geen extra parameters worden meegegeven, ik geloof dat MySQL gewoon de laatste query in jouw connectie gebruikt. 

Over ZF; ik heb er niet veel verstand van, maar misschien heb je wat aan deze thread: http://zend-fra...74354.html

UpLink schreef:
Mss de antwoorden scheiden met een | en als je ze ophaalt exploden op de | ?

dan kan je per ID mooi afwerken

Vraag (ID=1): Is SiteMasters cool?
Antwoord (ID=1): Ja|Nee|Misschien

Als je dat explode (Ja|Nee|Misschien) krijg je Ja Nee Misschien en die kun je dan in een keuzelijstje zetten he :-)

Is volgens mij zowat de snelste oplossing...
Ze hebben mij dat ooit zo eens voorgesteld en het lukte toch goed
Zo'n constructie in je database toepassen is nooit de beste oplossing. Data groeperen in tabellen met een koppeling is de manier waarop databases hiermee om moeten gaan.
Offline Oneday - 25/02/2011 18:58
Avatar van Oneday Nieuw lid Oké bedankt! En hoe raden jullie 't me nu aan te doen?

Volgens de database structuur zoals in de m'n topicstart post uitgelegd?
Offline Joost - 25/02/2011 19:04
Avatar van Joost PHP expert Wil je een enquete systeem zoals een soort poll, waarbij de gebruiker uit verschillende opties kan kiezen? Dan zou ik deze structuur gebruiken:

vragen vraag_id - vraag_txt
antwoorden antwoord_id - antwoord_txt - parent_vraag_id
gegeven_antwoorden vraag_id - antwoord_id

Als de gebruikers zelf ook vragen mogen invoeren:
vragen vraag_id - vraag_txt
gegeven_antwoorden vraag_id - user_id - antwoord_txt
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.211s