Die vraag is al beantwoord. Wanneer je met full text antwoorden werkt zal je met een expert systeem moeten werken, zie de vorige pagina.quote:Op dinsdag 14 november 2006 20:39 schreef USAF het volgende:
Hopelijk iets duidelijker dit keer
Ik heb dus een tabel 'vragen' en een tabel 'antwoorden', tabel antwoorden is gekoppeld aan tabel vragen door vraagid. Tevens heeft de tabel een veld met dag, maand en jaar zodat je weet welke vragen op welke dag getoond moeten worden.
Op de pagina's waar de vragen staan, staan tekstvelden om de antwoorden voor de vragen in te vullen. De naam van het tekstveld is gelijk aan het id van de vraag.
Als het formulier vervolgens gesubmit wordt, wil ik dat per vraag, de ingevulde waarde vergeleken wordt met de (mogelijk meerdere) row's in de tabel 'antwoorden'.
Mensen met toegang tot het back-end kunnen later nog altijd antwoorden waar bijv. een spellingsfout in zit goedkeuren, daar zit het probleem dus niet in.
Maar het probleem voor mij is, hoe vergelijk ik de ingevulde waarde met de mogelijke antwoorden in de database![]()
Gewoon zonder transparency opslaan.quote:Op dinsdag 14 november 2006 21:37 schreef Skorpija het volgende:
Weet iemand het volgende:
Ik wil transparency verwijderen van een gif plaatje en er wit van maken.
Maar ik kan nergens vinden hoe dit moet. Alle voorbeelden zijn juist om een bepaalde kleur transparant te maken...
quote:Op dinsdag 14 november 2006 21:40 schreef Swetsenegger het volgende:
[..]
Gewoon zonder transparency opslaan.
Ah... niet denk ik...quote:Op dinsdag 14 november 2006 21:42 schreef Skorpija het volgende:
[..]Ik heb m'n post nog even ge-edit.
Ik bedoelde, hoe maak ik via php m.b.v. de GD Library een transparante kleur wit..
1 2 3 | $ret = preg_replace("#[url=http://imageshack.us][img=([w:%&/.;\#-=?[]+] echo $ret; |
Ik denk dat een expert-systeem te geavanceerd is voor dit probleem. Je zou dit wellicht als volgt kunnen aanpakken:quote:Op dinsdag 14 november 2006 20:41 schreef Swetsenegger het volgende:
[..]
Die vraag is al beantwoord. Wanneer je met full text antwoorden werkt zal je met een expert systeem moeten werken, zie de vorige pagina.
Een eenvoudiger alternatief is natuurlijk multiple-choice.
De tabellen:quote:Q: Who wrote: "Bring me my bow of burning gold: Bring me my arrows of desire.." ?
A: William Blake (1757-1827, English poet, painter and mystic.)
1 2 3 | 1 Who wrote: "Bring me my bo... 2 Bla bla bla |
1 2 3 4 5 | 1 blake 1 william 1 1827 2 blob |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $punten = 0; $answer = strtolower($_POST["answer"]); if(strstr("blake", $answer)) { echo("CORRECT"); $punten += 1; if(strstr("william", $answer)) { $punten += 1; } //enz... } else { echo("FOUT"); } ?> |
Het lijkt me redelijk omslachtig, maar het is te doen.quote:Op dinsdag 14 november 2006 22:03 schreef papernote het volgende:
[..]
Ik denk dat een expert-systeem te geavanceerd is voor dit probleem. Je zou dit wellicht als volgt kunnen aanpakken:
Je neemt een tabel met vragen en een tabel met antwoorden die je aan elkaar linkt middels een ID of zoiets dergelijks. Vervolgens stel je de vraag en komt het antwoord binnen via de POST. Dan zou je het antwoord kunnen scannen op voorkomens van bepaalde woorden die je in het antwoord verwacht. Deze woorden staan dan natuurlijk in je antwoorden-tabel.
Voorbeeld uit een random quiz:
[..]
De tabellen:
Vragen
[ code verwijderd ]
Antwoorden
[ code verwijderd ]
Middels PHP kan je simpel controleren of het woord "Blake" voorkomt in het antwoord. Verder zou je dan extra punten kunnen geven voor het voorkomen van "William" en ook nog voor de jaartallen.
[ code verwijderd ]
Het hangt natuurlijk wel af van het soort vragen dat je gaat stellen, maar op deze manier zou je wellicht een aardig eindje kunnen komen.
Ik zou graag een uitleg zien inderdaadquote:Als iemand overigens interesse heeft in expertsystemen dan kan ik daar wel eens een topic over openen met een korte tutorial?
http://nl2.php.net/similar_textquote:Op dinsdag 14 november 2006 22:08 schreef CraZaay het volgende:
Daarnaast kun je met PHP ook nog simpel checken in hoeverre een antwoord overeenkomt (strings vergelijken en match-percentage returnen).
stukje verder maar nog niet de oplossing...quote:Op dinsdag 14 november 2006 21:52 schreef Darkomen het volgende:
Wie kan me even helpen met de volgende replace?
[ code verwijderd ]
1 2 3 | echo $ret.' => <br />'; $ret = preg_replace("#[URL=http://imageshack.us+\][a-zA-Z0-9.:=/_\[\]- ]+\[/URL\]#sie","'\\1'", $ret); |
vraag is een beetje wat je wilt hequote:Op woensdag 15 november 2006 13:57 schreef Darkomen het volgende:
[..]
stukje verder maar nog niet de oplossing...
[ code verwijderd ]
Ik krijg er dit uit:
}test{}test{
1 2 3 4 5 6 | $ret = "}test{[url=http://imageshack.us][img=http://img164.imageshack.us/img164/220/152tuning72868gm5.jpg][/url]}test{ "; echo $ret.' => <br />'; $ret = preg_replace("#\[URL=http://imageshack\.us\]([a-z0-9.:=/_\[\]\- ]+)\[/URL\]#sie","'\\1'", $ret); echo $ret; ?> |
Het is een optie als je alleen typefouten etc af wilt vangen.quote:Op dinsdag 14 november 2006 22:16 schreef Swetsenegger het volgende:
[..]
http://nl2.php.net/similar_text
Maar die geeft het aantal overeenkomende karakters in de strings weer.... lijkt me op z'n zachts gezegd niet de meest betrouwbare methode voor een correct antwoord.
Is HTTP authenticatie via je webserver niet misschien een adequate oplossing?quote:Op donderdag 16 november 2006 12:46 schreef De_Hertog het volgende:
Ik zoek een tutorail voor een simpel login-systeem. Als ik op Google zoek vind ik vooral uitgebreide systemen, met login-aanvraag, password-mailer en dat soort dingen, en ik wil alleen maar een gedeelte van mijn site afschermen. Heeft iemand daar een simpele tutorial voor?
Dat ziet er ook wel goed genoeg uit ja, niet eens aan gedacht. Dank je welquote:Op donderdag 16 november 2006 13:00 schreef JeRa het volgende:
[..]
Is HTTP authenticatie via je webserver niet misschien een adequate oplossing?
Voor Apache kun je hier meer vinden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | function get_file_list($root_dir) { if (is_dir($root_dir)) { if ($dh = opendir($root_dir)) { while (false !== ($file = readdir($dh))) { if($file != "." && $file != "..") { $ext = substr($file,-3,3); if(preg_match("/avi|mkv|mpg|mpeg|wmv|mp4/i",$ext)) { $array[] .= $file; } } } closedir($dh); } } return $array; } ?> |
quote:Op maandag 20 november 2006 17:18 schreef ralfie het volgende:
Dit moet je niet in php doen! De enige methode om dit in php te doen zou zijn met recursieve functies, en dat is ronduit stront als je hele schijven gaat indexeren.
(ik neem tenminste aan dat dit voor je projectje van je andere topic is, op windows?)
gebruik de executables die er voor bedoeld zijn, die werken VEEEEEEEEL sneller
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | function getFiles($path, $fileFilter) { $dirStack = array($path); $files = array(); while (null !== ($dir = array_pop($dirStack))) { $dh = opendir($dir) or die(sprintf('Error: Could not open directory "%s".', $dir)); while (false !== ($file = readdir($dh))) { if($file != "." && $file != "..") { $fullFile = $dir . $file; if (is_file($fullFile)) { if (preg_match($fileFilter, $file)) { $files[] = $fullFile; } } else if (is_dir($fullFile)) { $dirStack[] = $fullFile . '/'; } } } closedir($dh); } return $files; } $files = getFiles('d:/temp/', '/\\.(avi|mkv|mpg|mpeg|wmv|mp4)$/i'); sort($files); header('Content-type: text/plain'); print_r($files); ?> |
hmm, leuke functie. Snap alleen niet hoe exec niet handig is als je op verschillende extensies wil filteren, je kunt gewoon "dir /s /b *.exe *.avi *.txt" doen...quote:Op maandag 20 november 2006 18:32 schreef SuperRembo het volgende:
[..]Het hoeft niet met een recursieve functie (zie onder) Exec is niet handig als het bij een externe host moet draaien Exec is niet handig als je op verschillende extensies wil filteren Exec is niet handig als het op een ander OS moet draaien
[ code verwijderd ]
betreft idd dat topicquote:Op maandag 20 november 2006 18:43 schreef ralfie het volgende:
[..]
hmm, leuke functie. Snap alleen niet hoe exec niet handig is als je op verschillende extensies wil filteren, je kunt gewoon "dir /s /b *.exe *.avi *.txt" doen...
Daarnaast zijn de andere punten niet van toepassing als (zoals in aannam) het ging over dit topic
snelheid is voor mij opzich geen punt, tenzij ik timeout's ga krijgenquote:Op maandag 20 november 2006 17:18 schreef ralfie het volgende:
Dit moet je niet in php doen! De enige methode om dit in php te doen zou zijn met recursieve functies, en dat is ronduit stront als je hele schijven gaat indexeren.
(ik neem tenminste aan dat dit voor je projectje van je andere topic is, op windows?)
gebruik de executables die er voor bedoeld zijn, die werken VEEEEEEEEL sneller
[ code verwijderd ]
hmm externe host wordt het zowieso niet (server staat hier lokaal, en me domein zal daar ook naar verhuizenquote:Op maandag 20 november 2006 18:32 schreef SuperRembo het volgende:
[..]Het hoeft niet met een recursieve functie (zie onder) Exec is niet handig als het bij een externe host moet draaien Exec is niet handig als je op verschillende extensies wil filteren Exec is niet handig als het op een ander OS moet draaien
[ code verwijderd ]
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |