Matchen tussen formwaarde en directory

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ik Wel

Ik Wel

09/04/2015 11:45:17
Quote Anchor link
Hallo allemaal.
Hopelijk is alles oke hier!

Ik ben bezig met een simpele zoekfunctie waarbij ik als bezoeker de resultaten krijg die matchen met de zoekterm en ook de hele directory zoeken en matchende bestanden en door de bestanden zoeken en checken of er woorden zijn die ook matchen en de teksten er van en/of foto's of zo.
ik heb alvast een beginntje gemaakt. Staat onder!
==>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
37
<?php
error_reporting(0);
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

if(isset($_POST['submit']))
{

    $searchterm = $_POST['searchterm'];
    //$dir = scandir("../frPHP");
    if($searchterm !== " ")
    {

        echo "Is empty!!";
    }

    else
    {
        $txt = 'Hallo Ik ben een Hallo-persoon!!';
        //$preg = '/foo|bal/';
        $preg = '/[$searchterm]/';
        $dir = "../frPHP";
        if(preg_match($preg, glob($dir), $matches))
        {

            foreach ($matches as $filename)
            {

                echo "Founded results:<br>";
                echo "<b><div class='red'>".$matches[0]."</div></b>";
                echo ' inside: '.$txt;
            }
        }

        else
        {
            echo "No match!!";
        }
    }
}

?>
Gewijzigd op 09/04/2015 11:46:18 door Ik Wel
 
PHP hulp

PHP hulp

16/01/2025 08:07:31
 
Obelix Idefix

Obelix Idefix

09/04/2015 18:06:04
Quote Anchor link
Oké. En nu? Heb je een vraag?
 
Ik Wel

Ik Wel

10/04/2015 00:39:39
Quote Anchor link
De vraag is hoe ik het werkend kan krijgen. Als je me kan helpen graag!!
 
- Ariën  -
Beheerder

- Ariën -

10/04/2015 00:42:36
Quote Anchor link
En waar loop je op vast? Ik zie niet echt een concrete vraag...
 
Ik Wel

Ik Wel

10/04/2015 02:16:54
Quote Anchor link
Als ik een woord typ in de formveld (bijv. dier of wat dan ook) wil ik dat php de hele directory zoekt en kijkt of dat woord voorkomt in zowel de directory als in de bestanden zelf. zo ja wil ik die matchs zien. Ik heb die getest (lokaal via lampp) en krijg alleen de melding is empty maar geen resultaat dus blijkbaar gaat er iets mis.
Ik vergelijk beetje met google. als je het woord dier intypt krijg je alle titels en contexten waarin het woord dier voorkomt incl. de link ernaar.
Neem me niet kwalijk :)
 
- Ariën  -
Beheerder

- Ariën -

10/04/2015 09:21:48
Quote Anchor link
Ja, waarom kijk je nu of de zoektekst niet gelijk is met een spatie?

Die ! zou ik dan wegdoen.
 
Ik Wel

Ik Wel

10/04/2015 18:07:19
Quote Anchor link
Die kijkt of er iets is ingevulf of niet. Zelfde als if(empty).
 
- Ariën  -
Beheerder

- Ariën -

10/04/2015 18:14:14
Quote Anchor link
Ja, maar hij is niet juist ;)
Ik zou het zo doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(trim($searchterm)=='') {
    // hij is leeg
} else {
    // hij is niet leeg, ga verder met je script.
}
?>
Gewijzigd op 10/04/2015 18:15:32 door - Ariën -
 
Ik Wel

Ik Wel

10/04/2015 18:22:34
Quote Anchor link
oke en nu?
 
- Ariën  -
Beheerder

- Ariën -

10/04/2015 18:36:26
Quote Anchor link
Als je dit toevoegt, dan is hij goed.
 
Ik Wel

Ik Wel

10/04/2015 18:46:09
Quote Anchor link
Nu krijg ik de melding no match..
 
- Ariën  -
Beheerder

- Ariën -

10/04/2015 18:53:22
Quote Anchor link
Dan lijkt er geen match te zijn?
 
Ik Wel

Ik Wel

10/04/2015 18:55:37
Quote Anchor link
ja nu weet ik niet meer hoe ik verder moet daarom vroeg ik jullie hulp!!!!
Gewijzigd op 10/04/2015 18:55:52 door Ik Wel
 
- Ariën  -
Beheerder

- Ariën -

10/04/2015 21:33:55
Quote Anchor link
Wat doet het script nog niet wat het dan zou moeten kunnen?
 
Ik Wel

Ik Wel

11/04/2015 15:42:51
Quote Anchor link
Alles behalve wat ik wil. Ik krijg geen resultaten te zien.
Ik wil via preg_match (of een andere manier) de match tussen mijn zoektermen en de bestanden waarin dat ZOEKTERM voorkomt laten weergeven met de link ernaar. Als je voor mij die code aanpast graag en mij erbij helpt heel graag Aar!!
 
- Ariën  -
Beheerder

- Ariën -

11/04/2015 22:06:43
Quote Anchor link
Die brackets horen niet op lijn 20 en de variabele hoort buiten de quotes.
 
Ik Wel

Ik Wel

12/04/2015 15:05:01
Quote Anchor link
Maar dan wordt ie toch beschouwd als een string ipv een form waarde?
 
- Ariën  -
Beheerder

- Ariën -

12/04/2015 15:45:46
Quote Anchor link
Ja, dat is hij ook als hij ge-POST is.
 
Ik Wel

Ik Wel

12/04/2015 16:30:31
Quote Anchor link
Oke.

Nu heb ik de code veranderd naar dit:
<form action="test.php" method="GET">
<input type="text" name="term" placeholder="Your term"/>
<input type="submit" name="submit" value="Search"/>
</form>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
error_reporting(0);
if(isset($_GET['submit']))
{

    $sterm = $_GET['term'];
    $dir = scandir('../searchphp');
    if(empty($sterm))
    {

        echo 'No value!!';
    }

    else
    {
         $cutString = array_slice($dir, 1);
         foreach ($cutString as $filename)
         {

             if(in_array($sterm, $dir))
             {

                 echo "<pre>"; print_r($filename); echo "</pre>";
             }
         }
        
    }
}

?>


alleen ik krijg geen resultaat
 
Eddy E

Eddy E

12/04/2015 17:55:15
Quote Anchor link
Zet de error_reporting() eens op "E_ALL".
Wellicht bestaat scandir() niet.
Of is $_GET['submit'] niet gemaakt, en hoeft je script dus niets te doen.
Oplossing: bij regel 23 dit toevoegen (erna):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
else { echo 'GET-submit bestaat niet';}


Toevoeging op 12/04/2015 17:57:10:

Daarnaast kijk je op regel 3 of $_GET['submit'] bestaat.
En op regel 7 of die toevallig leeg is.
Met $dir doe je nog niets... gaat dat wel goed?
En zal $dir minimaal 2 directories bevatten? Wat als er maar 1 is?
Dan zal $cutString waarschijnlijk false worden.
En dan werkt je foreach() op regel 14 niet.
En dus zal regel 16 niet gaan.
En dus krijg je niets te zien.
Ik zou het zo doen:



Toevoeging op 12/04/2015 18:05:19:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
37
38
39
40
41
42
43
44
<?php
    error_reporting(E_ALL);

    // kijk of $_GET['term'] bestaat etc
    if(!isset($_GET['term']) OR empty($_GET['term']))
    {

        echo 'No input detected!';
    }

    else
    {
        // scan de directory
        $dir = scandir('../searchphp');

        // kijk of dit gelukt is
        if($dir == false)
        {

            echo 'Map kan niet gescand worden of bevat geen bestanden/mappen.';
        }

        // als het gelukt is
        else
        {
            // kijk of er genoeg mappen zijn
            if(count($dir) < 2)
            {

                echo 'Er zijn niet voldoende bestanden/mappen gevonden';
            }

            else
            {
                // er zijn genoeg bestanden/mappen
                // er zijn genoeg bestanden/mappen

                $dir = array_slice($dir, 1);

                // loop nu de directory af
                foreach($dir as $filename)
                {

                    if($_GET['term'] == $filename)
                    {

                        echo "<pre>" . print_r($filename, true) . "</pre>";
                    }
                }
            }
        }
    }

?>


Let op: je krijgt nu alleen je submit te zien als die in de map zit.
Dit kan dus makkelijker, met file-exists() ...
Hoef je heel die map niet voor in te laden etc.
Dus het kan gewoon zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    error_reporting(E_ALL);

    // kijk of $_GET['term'] bestaat etc
    if(!isset($_GET['term']) OR empty($_GET['term']))
    {

        echo 'No input detected!';
    }

    else
    {
        if(file_exists($_GET['term']))    
        {

            echo $_GET['term'];
        }
    }

?>
Gewijzigd op 12/04/2015 18:06:57 door Eddy E
 
Ik Wel

Ik Wel

12/04/2015 19:04:22
Quote Anchor link
Bedankt Eddy voor je bewerkingen en heb die net getest maar ze werken niet. Wat ik dan ook typ krijg niets te zien.
Weetje hoe je op deze beste manier de zoekterm die ik opgeef zoek door alle bestanden in de directory en de matches weergeef. Als je die code voor me zo kan aanpassen heel graag!!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.