abonnement Unibet Coolblue Bitvavo
  dinsdag 14 november 2006 @ 20:39:08 #201
135268 USAF
Sarcastisch als altijd
pi_43555440
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 vragen een veld met dag, maand en jaar zodat het script 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 gesubmitwordt, 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
Commander of the Joint Chiefs
  FOK!-Schrikkelbaas dinsdag 14 november 2006 @ 20:41:45 #202
1972 Swetsenegger
Egocentrische Narcist
pi_43555552
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
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.
pi_43557840
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...

(Ik bedoel hoe doe ik dit in PHP m.b.v. de GD Library )
  FOK!-Schrikkelbaas dinsdag 14 november 2006 @ 21:40:59 #204
1972 Swetsenegger
Egocentrische Narcist
pi_43558010
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...
Gewoon zonder transparency opslaan.
pi_43558085
quote:
Op dinsdag 14 november 2006 21:40 schreef Swetsenegger het volgende:

[..]

Gewoon zonder transparency opslaan.
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..
  FOK!-Schrikkelbaas dinsdag 14 november 2006 @ 21:45:10 #206
1972 Swetsenegger
Egocentrische Narcist
pi_43558214
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..
Ah... niet denk ik...
pi_43558555
Wie kan me even helpen met de volgende replace?

1
2
3
$ret = "blabldsablkdbsl [url=http://imageshack.us][img=http://img164.imageshack.us/img164/220/152tuning72868gm5.jpg][/url] dbsalksablknlksandlsa";
$ret = preg_replace("#[url=http://imageshack.us][img=([w:%&/.;\#-=?[]+]][/url]#sie","'\1n'", $ret);
echo $ret;


[ Bericht 18% gewijzigd door Darkomen op 15-11-2006 13:08:29 ]
pi_43559134
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.
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:
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.)
De tabellen:

Vragen
1
2
3
ID  VRAAG
1   Who wrote: "Bring me my bo...
2   Bla bla bla


Antwoorden
1
2
3
4
5
ID  ANTWOORD
1   blake
1   william
1   1827
2   blob


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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$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 hangt natuurlijk wel af van het soort vragen dat je gaat stellen, maar op deze manier zou je wellicht een aardig eindje kunnen komen.

Als iemand overigens interesse heeft in expertsystemen dan kan ik daar wel eens een topic over openen met een korte tutorial?
Schuimpje... mijn liefste. Verlaat mij nimmer weer...
  dinsdag 14 november 2006 @ 22:08:15 #209
12880 CraZaay
prettig gestoord
pi_43559421
Daarnaast kun je met PHP ook nog simpel checken in hoeverre een antwoord overeenkomt (strings vergelijken en match-percentage returnen).
  FOK!-Schrikkelbaas dinsdag 14 november 2006 @ 22:12:53 #210
1972 Swetsenegger
Egocentrische Narcist
pi_43559621
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.
Het lijkt me redelijk omslachtig, maar het is te doen.
quote:
Als iemand overigens interesse heeft in expertsystemen dan kan ik daar wel eens een topic over openen met een korte tutorial?
Ik zou graag een uitleg zien inderdaad
  FOK!-Schrikkelbaas dinsdag 14 november 2006 @ 22:16:46 #211
1972 Swetsenegger
Egocentrische Narcist
pi_43559796
quote:
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).
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.
pi_43561546
Je zou het één en het ander kunnen uitproberen en een combinatie van soundex(), similar_text(), levenshtein() etc kunnen gebruiken om woorden te matchen. Het is alleen niet echt een oplossing die schaalbaar is, het wordt bij veel documenten al snel trager
pi_43575814
quote:
Op dinsdag 14 november 2006 21:52 schreef Darkomen het volgende:
Wie kan me even helpen met de volgende replace?
[ code verwijderd ]
stukje verder maar nog niet de oplossing...
1
2
3
$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-zA-Z0-9.:=/_\[\]- ]+\[/URL\]#sie","'\\1'", $ret);


Ik krijg er dit uit:
}test{}test{
  woensdag 15 november 2006 @ 14:48:20 #214
85514 ralfie
!Yvan eht nioj
pi_43577472
quote:
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{
vraag is een beetje wat je wilt he

1
2
3
4
5
6
<?php
$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;
?>

zoiets?
pi_43577855
Yups dat is precies wat ik nou wilde doen.
oke nou zie ik ook wat ik fout doe.

bedankt!
Mzz
werkt wel in het test script maar niet in phpbb, straks maar es ff naar kijken

[ Bericht 28% gewijzigd door Darkomen op 15-11-2006 15:10:08 ]
  woensdag 15 november 2006 @ 22:27:10 #216
12880 CraZaay
prettig gestoord
pi_43592582
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.
Het is een optie als je alleen typefouten etc af wilt vangen.
  donderdag 16 november 2006 @ 12:46:02 #217
73232 De_Hertog
Aut bibat, aut abeat
pi_43604833
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?
Mary had a little lamb
Then Mary had dessert
pi_43605322
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?
Is HTTP authenticatie via je webserver niet misschien een adequate oplossing?

Voor Apache kun je hier meer vinden.
  donderdag 16 november 2006 @ 13:11:02 #219
73232 De_Hertog
Aut bibat, aut abeat
pi_43605661
quote:
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.
Dat ziet er ook wel goed genoeg uit ja, niet eens aan gedacht. Dank je wel
Mary had a little lamb
Then Mary had dessert
pi_43721208
ik heb een functie die voor mij een lijst met (in mijn geval) videobestanden teruggeeft na een directory te zijn doorgelopen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
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;
}
?>


hoe kan ik er voor zorgen dat hij alle sub directory's mee neemt in de array?
dus ik geef bijvoorbeeld D: op
en vervolgens zoekt hij de hele schijf af naar videobestanden , ongeacht het aantal subdirectory's.
is dat erg lastig? en hoe pak ik het aan?
  maandag 20 november 2006 @ 17:18:55 #221
85514 ralfie
!Yvan eht nioj
pi_43721890
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
1
2
3
4
5
6
7
8
9
<?php
chdir
("F:\\movies\\");
exec('dir /s /b *.avi',$files);
// /s=search subdirs
// /b=return plain list, no header shizza
foreach($files as $file) {
echo
"<br>found avi :$file<br/>";
}
?>
pi_43723373
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 ]
  • 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

    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
    <?php


    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);

    ?>
  • Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
      maandag 20 november 2006 @ 18:43:55 #223
    85514 ralfie
    !Yvan eht nioj
    pi_43723722
    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 ]
  • 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
    pi_43728038
    quote:
    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
    betreft idd dat topic
    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 ]
    snelheid is voor mij opzich geen punt, tenzij ik timeout's ga krijgen
    en hele schijven indexeren valt wel mee, de grootste schijf die te indexeren valt op dit moment is mijn externe HD:
    in des betreffende map staan 'slechts' 602 files
    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 ]
  • hmm externe host wordt het zowieso niet (server staat hier lokaal, en me domein zal daar ook naar verhuizen )
    meerdere extensie kan wel met dir commando, opzich geen reden om niet voor exec gaan
    zie 1 =) (komt nooit onder andere host te draaien )
    echter wil ik php het helemaal laten afhandelen (vind ik toch netter )

    [ Bericht 34% gewijzigd door mschol op 20-11-2006 20:50:08 ]
      maandag 20 november 2006 @ 20:49:02 #225
    12880 CraZaay
    prettig gestoord
    pi_43728292
    Ik zou sowieso geen preg_match() gebruiken, maar gewoon strstr() of stristr(). Dat is sneller.
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')