Matchen tussen formwaarde en directory
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)
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
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!!";
}
}
}
?>
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
Oké. En nu? Heb je een vraag?
De vraag is hoe ik het werkend kan krijgen. Als je me kan helpen graag!!
En waar loop je op vast? Ik zie niet echt een concrete vraag...
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 :)
Die ! zou ik dan wegdoen.
Die kijkt of er iets is ingevulf of niet. Zelfde als if(empty).
oke en nu?
Als je dit toevoegt, dan is hij goed.
Nu krijg ik de melding no match..
Dan lijkt er geen match te zijn?
Gewijzigd op 10/04/2015 18:55:52 door Ik Wel
Wat doet het script nog niet wat het dan zou moeten kunnen?
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!!
Die brackets horen niet op lijn 20 en de variabele hoort buiten de quotes.
Maar dan wordt ie toch beschouwd als een string ipv een form waarde?
Ja, dat is hij ook als hij ge-POST is.
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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>";
}
}
}
}
?>
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
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):
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)
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
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>";
}
}
}
}
}
?>
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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'];
}
}
?>
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
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!!