Juist weergeven Solr query met PHP
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
45
46
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
45
46
$core_url = "http://localhost:8983/solr/[corename]/select?q=";
$start=$page*10-10;
$contents = file_get_contents($core_url.'Keywords:'.$query.'&wt=php&rows=10&start='.$start.'&fl=Journal_title,Publisher,Keywords,Journal_URL,Full_text_formats,Full_text_language,Most_Recent_Article_Added,Number_of_Article_Records'.'');
eval("\$result = " . $contents . ";");
$count = $result["response"]["numFound"];
$numOfPages = ceil($count/10);
if($count==0){
echo "no results found";
}
for($i=0; $i<sizeof($result["response"]["docs"]) ; $i++){
echo '<div class="searchresult">';
foreach($result["response"]["docs"][$i] as $key=>$value){
display($key,$value);
}
echo '</div>';
echo "<br/>";
}
function display($k,$x){
if(!isset($x)){
return;
}
echo $k.": ";
if(!is_array($x)){
echo $x;
echo "<br>";
}
else {
for($i=0; $i<sizeof($x) ; $i++){
if(sizeof($x)==1 || $i==sizeof($x)-1){
echo $x[$i];
}
else {
echo $x[$i].' - ';
}
}
echo "<br>";
}
}
?>
$start=$page*10-10;
$contents = file_get_contents($core_url.'Keywords:'.$query.'&wt=php&rows=10&start='.$start.'&fl=Journal_title,Publisher,Keywords,Journal_URL,Full_text_formats,Full_text_language,Most_Recent_Article_Added,Number_of_Article_Records'.'');
eval("\$result = " . $contents . ";");
$count = $result["response"]["numFound"];
$numOfPages = ceil($count/10);
if($count==0){
echo "no results found";
}
for($i=0; $i<sizeof($result["response"]["docs"]) ; $i++){
echo '<div class="searchresult">';
foreach($result["response"]["docs"][$i] as $key=>$value){
display($key,$value);
}
echo '</div>';
echo "<br/>";
}
function display($k,$x){
if(!isset($x)){
return;
}
echo $k.": ";
if(!is_array($x)){
echo $x;
echo "<br>";
}
else {
for($i=0; $i<sizeof($x) ; $i++){
if(sizeof($x)==1 || $i==sizeof($x)-1){
echo $x[$i];
}
else {
echo $x[$i].' - ';
}
}
echo "<br>";
}
}
?>
Dit geeft mij het volgende resultaat:
![Afbeelding Afbeelding](https://i.stack.imgur.com/d8pih.jpg)
En ik wil uiteindelijk het volgende bereiken:
![Afbeelding Afbeelding](https://i.stack.imgur.com/p1LI7.jpg)
Ik hoop dat ik genoeg informatie heb gestuurd en dat iemand mij hiermee uit de brand kan helpen. Mocht dit niet (duidelijk) genoeg zijn dan stuur ik graag extra informatie.
Alvast bedankt voor het meedenken! :)
Toevoeging op 18/10/2020 18:24:38:
Tevens begrijp ik dat de opmaak in css gedaan moet worden, dit zou (hopelijk) geen probleem moeten zijn. Wat ik voornamelijk lastig vind is hoe ik de tekst op deze manier in de div kan plaatsen op volgorde met apart id/class voor latere css, of bijvoorbeeld een <h1> <h2> <h3> tag of iets in die richting.
Hopelijk maakt dit het iets duidelijker!
Gewijzigd op 18/10/2020 18:35:10 door Joris R
Zou je jouw code tussen code-tags willen zetten? Quote is hier niet voor bedoeld.
- Ariën - op 18/10/2020 18:27:31:
Zou je jouw code tussen code-tags willen zetten? Quote is hier niet voor bedoeld.
Excuus, ga ik doen! Zijn dat de drie ` tekens zoals bij stackoverflow? Ik zie het namelijk niet staan in het optiemenu...
Edit: gelukt!
Gewijzigd op 18/10/2020 18:35:25 door Joris R
$x is een array? Dan kan je die als test met print_r() zichtbaar maken zodat je weet welke elementen je kan gebruiken. Zoaks titel, formaat, type.
- Ariën - op 18/10/2020 18:45:54:
$x is een array? Dan kan je die als test met print_r() zichtbaar maken zodat je weet welke elementen je kan gebruiken. Zoaks titel, formaat, type.
Het is inderdaad een array. Maar wanneer ik dit doe:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$k.": ";
if(!is_array($x)){
print_r ($x);
echo "<br>";
}
else {
for($i=0; $i<sizeof($x) ; $i++){
if(sizeof($x)==1 || $i==sizeof($x)-1){
print_r ($x[$i]);
}
else {
print_r ($x[$i]).' - ';
}
}
echo "<br>";
}
}
if(!is_array($x)){
print_r ($x);
echo "<br>";
}
else {
for($i=0; $i<sizeof($x) ; $i++){
if(sizeof($x)==1 || $i==sizeof($x)-1){
print_r ($x[$i]);
}
else {
print_r ($x[$i]).' - ';
}
}
echo "<br>";
}
}
verandert er niets, of bedoelt u iets anders?
Gewijzigd op 18/10/2020 19:24:51 door Joris R
Haal die spatie in je functie eens weg.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function display($k,$x){
if(!isset($x)){
return;
}
echo $k.": ";
if(!is_array($x)){
print_r($x);
echo "<br>";
}
else {
for($i=0; $i<sizeof($x) ; $i++){
if(sizeof($x)==1 || $i==sizeof($x)-1){
print_r($x[$i]);
}
else {
print_r($x[$i]).' - ';
}
}
echo "<br>";
}
}
if(!isset($x)){
return;
}
echo $k.": ";
if(!is_array($x)){
print_r($x);
echo "<br>";
}
else {
for($i=0; $i<sizeof($x) ; $i++){
if(sizeof($x)==1 || $i==sizeof($x)-1){
print_r($x[$i]);
}
else {
print_r($x[$i]).' - ';
}
}
echo "<br>";
}
}
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$data = $result["response"]["docs"][$i] + [ //defaults - indien nodig / niet altijd gevuld
'Journal_title' => null,
'Journal_URL' => null,
'Publisher' => 'Unknown',
'Keywords' => null,
'Full_text_language' => 'Unknown',
'Full_text_formats' => null
];
print("
<h1>{$data['Journal_title']}</h1>
<a href='{$data['Journal_URL']}'>{$data['Journal_URL']}</a>
Publisher: {$data['Publisher']}<br>
Keywords: {$data['Keywords']}<br>
Language: {$data['Full_text_language']}<span>File type: {$data['Full_text_formats']}"
);
?>
$data = $result["response"]["docs"][$i] + [ //defaults - indien nodig / niet altijd gevuld
'Journal_title' => null,
'Journal_URL' => null,
'Publisher' => 'Unknown',
'Keywords' => null,
'Full_text_language' => 'Unknown',
'Full_text_formats' => null
];
print("
<h1>{$data['Journal_title']}</h1>
<a href='{$data['Journal_URL']}'>{$data['Journal_URL']}</a>
Publisher: {$data['Publisher']}<br>
Keywords: {$data['Keywords']}<br>
Language: {$data['Full_text_language']}<span>File type: {$data['Full_text_formats']}"
);
?>
Opmaken met CSS en via :empty evt lege velden verbergen.
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
if(isset($_GET["page"])){
$page = (int)$_GET["page"];
}
else {
$page = 1;
}
$query = urldecode($_GET["query"]);
$query = str_replace(" ","%20",$query);
$core_url = "http://localhost:8983/solr/[core-name]/select?q=";
$start=$page*10-10;
$contents = file_get_contents($core_url.'Keywords:'.$query.'&wt=php&rows=10&start='.$start.'&fl=Journal_title,Publisher,Keywords,Journal_URL,Full_text_formats,Full_text_language,Most_Recent_Article_Added,Number_of_Article_Records'.'');
eval("\$result = " . $contents . ";");
$count = $result["response"]["numFound"];
$numOfPages = ceil($count/10);
if($count==0){
echo "no results found";
}
for($i=0; $i<sizeof($result["response"]["docs"]) ; $i++){
echo '<div class="searchresult">';
foreach($result["response"]["docs"][$i] as $key=>$value){
display($key,$value);
}
echo '</div>';
echo "<br/>";
}
echo '<div class="pagination">';
$max = 5;
$startPage = max(1, $page - $max);
$firstPage = min(1, $numOfPages);
$lastPage = max(1, $numOfPages);
echo "<a href='search.php?page=".($firstPage)."&query=".$query."'>".($firstPage)."</a> ";
$endPage = min( $numOfPages, $page + $max);
for($i = $startPage; $i < $endPage; $i++) {
echo '<div class="pageresult">';
echo "<a href='search.php?page=".($i+1)."&query=".$query."'>".($i+1)."</a> ";
echo '</div>';
}
echo " <a href='search.php?page=".($lastPage)."&query=".$query."'>".($lastPage)."</a> ";
echo "<br>";
echo "<br>";
echo "<br>";
echo '</div>';
function display($k,$x){
if(!isset($x)){
return;
}
echo $k.": ";
if(!is_array($x)){
echo $x;
echo "<br>";
}
else {
for($i=0; $i<sizeof($x) ; $i++){
if(sizeof($x)==1 || $i==sizeof($x)-1){
echo $x[$i];
}
else {
echo $x[$i].' - ';
}
}
echo "<br>";
}
}
?>
if(isset($_GET["page"])){
$page = (int)$_GET["page"];
}
else {
$page = 1;
}
$query = urldecode($_GET["query"]);
$query = str_replace(" ","%20",$query);
$core_url = "http://localhost:8983/solr/[core-name]/select?q=";
$start=$page*10-10;
$contents = file_get_contents($core_url.'Keywords:'.$query.'&wt=php&rows=10&start='.$start.'&fl=Journal_title,Publisher,Keywords,Journal_URL,Full_text_formats,Full_text_language,Most_Recent_Article_Added,Number_of_Article_Records'.'');
eval("\$result = " . $contents . ";");
$count = $result["response"]["numFound"];
$numOfPages = ceil($count/10);
if($count==0){
echo "no results found";
}
for($i=0; $i<sizeof($result["response"]["docs"]) ; $i++){
echo '<div class="searchresult">';
foreach($result["response"]["docs"][$i] as $key=>$value){
display($key,$value);
}
echo '</div>';
echo "<br/>";
}
echo '<div class="pagination">';
$max = 5;
$startPage = max(1, $page - $max);
$firstPage = min(1, $numOfPages);
$lastPage = max(1, $numOfPages);
echo "<a href='search.php?page=".($firstPage)."&query=".$query."'>".($firstPage)."</a> ";
$endPage = min( $numOfPages, $page + $max);
for($i = $startPage; $i < $endPage; $i++) {
echo '<div class="pageresult">';
echo "<a href='search.php?page=".($i+1)."&query=".$query."'>".($i+1)."</a> ";
echo '</div>';
}
echo " <a href='search.php?page=".($lastPage)."&query=".$query."'>".($lastPage)."</a> ";
echo "<br>";
echo "<br>";
echo "<br>";
echo '</div>';
function display($k,$x){
if(!isset($x)){
return;
}
echo $k.": ";
if(!is_array($x)){
echo $x;
echo "<br>";
}
else {
for($i=0; $i<sizeof($x) ; $i++){
if(sizeof($x)==1 || $i==sizeof($x)-1){
echo $x[$i];
}
else {
echo $x[$i].' - ';
}
}
echo "<br>";
}
}
?>
Mijn stukje vervangt jouw regel 26 t/m 28 (hierboven).
Rob Doemaarwat op 18/10/2020 20:40:46:
Mijn stukje vervangt jouw regel 26 t/m 28 (hierboven).
Bedankt voor uw snelle reactie! Ik heb het volgende (en wat andere pogingen) geprobeerd:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
if(isset($_GET["page"])){
$page = (int)$_GET["page"];
}
else {
$page = 1;
}
$query = urldecode($_GET["query"]);
$query = str_replace(" ","%20",$query);
$core_url = "http://localhost:8983/solr/journals/select?q=";
$start=$page*10-10;
$contents = file_get_contents($core_url.'Keywords:'.$query.'&wt=php&rows=10&start='.$start.'&fl=Journal_title,Publisher,Keywords,Journal_URL,Full_text_formats,Full_text_language,Most_Recent_Article_Added,Number_of_Article_Records'.'');
eval("\$result = " . $contents . ";");
$count = $result["response"]["numFound"];
$numOfPages = ceil($count/10);
if($count==0){
echo "no results found";
}
for($i=0; $i<sizeof($result["response"]["docs"]) ; $i++){
echo '<div class="searchresult">';
$data = $result["response"]["docs"][$i] + [ //defaults - indien nodig / niet altijd gevuld
'Journal_title' => null,
'Journal_URL' => null,
'Publisher' => 'Unknown',
'Keywords' => null,
'Full_text_language' => 'Unknown',
'Full_text_formats' => null
];
print("
<h1>{$data['Journal_title']}</h1>
<a href='{$data['Journal_URL']}'>{$data['Journal_URL']}</a>
Publisher: {$data['Publisher']}<br>
Keywords: {$data['Keywords']}<br>
Language: {$data['Full_text_language']}<span>File type: {$data['Full_text_formats']}"
);
echo '</div>';
echo "<br/>";
}
echo '<div class="pagination">';
$max = 5;
$startPage = max(1, $page - $max);
$firstPage = min(1, $numOfPages);
$lastPage = max(1, $numOfPages);
echo "<a href='search.php?page=".($firstPage)."&query=".$query."'>".($firstPage)."</a> ";
$endPage = min( $numOfPages, $page + $max);
for($i = $startPage; $i < $endPage; $i++) {
echo '<div class="pageresult">';
echo "<a href='search.php?page=".($i+1)."&query=".$query."'>".($i+1)."</a> ";
echo '</div>';
}
echo " <a href='search.php?page=".($lastPage)."&query=".$query."'>".($lastPage)."</a> ";
echo "<br>";
echo "<br>";
echo "<br>";
echo '</div>';
function display($k,$x){
if(!isset($x)){
return;
}
echo $k.": ";
if(!is_array($x)){
echo $x;
echo "<br>";
}
else {
for($i=0; $i<sizeof($x) ; $i++){
if(sizeof($x)==1 || $i==sizeof($x)-1){
echo $x[$i];
}
else {
echo $x[$i].' - ';
}
}
echo "<br>";
}
}
?>
if(isset($_GET["page"])){
$page = (int)$_GET["page"];
}
else {
$page = 1;
}
$query = urldecode($_GET["query"]);
$query = str_replace(" ","%20",$query);
$core_url = "http://localhost:8983/solr/journals/select?q=";
$start=$page*10-10;
$contents = file_get_contents($core_url.'Keywords:'.$query.'&wt=php&rows=10&start='.$start.'&fl=Journal_title,Publisher,Keywords,Journal_URL,Full_text_formats,Full_text_language,Most_Recent_Article_Added,Number_of_Article_Records'.'');
eval("\$result = " . $contents . ";");
$count = $result["response"]["numFound"];
$numOfPages = ceil($count/10);
if($count==0){
echo "no results found";
}
for($i=0; $i<sizeof($result["response"]["docs"]) ; $i++){
echo '<div class="searchresult">';
$data = $result["response"]["docs"][$i] + [ //defaults - indien nodig / niet altijd gevuld
'Journal_title' => null,
'Journal_URL' => null,
'Publisher' => 'Unknown',
'Keywords' => null,
'Full_text_language' => 'Unknown',
'Full_text_formats' => null
];
print("
<h1>{$data['Journal_title']}</h1>
<a href='{$data['Journal_URL']}'>{$data['Journal_URL']}</a>
Publisher: {$data['Publisher']}<br>
Keywords: {$data['Keywords']}<br>
Language: {$data['Full_text_language']}<span>File type: {$data['Full_text_formats']}"
);
echo '</div>';
echo "<br/>";
}
echo '<div class="pagination">';
$max = 5;
$startPage = max(1, $page - $max);
$firstPage = min(1, $numOfPages);
$lastPage = max(1, $numOfPages);
echo "<a href='search.php?page=".($firstPage)."&query=".$query."'>".($firstPage)."</a> ";
$endPage = min( $numOfPages, $page + $max);
for($i = $startPage; $i < $endPage; $i++) {
echo '<div class="pageresult">';
echo "<a href='search.php?page=".($i+1)."&query=".$query."'>".($i+1)."</a> ";
echo '</div>';
}
echo " <a href='search.php?page=".($lastPage)."&query=".$query."'>".($lastPage)."</a> ";
echo "<br>";
echo "<br>";
echo "<br>";
echo '</div>';
function display($k,$x){
if(!isset($x)){
return;
}
echo $k.": ";
if(!is_array($x)){
echo $x;
echo "<br>";
}
else {
for($i=0; $i<sizeof($x) ; $i++){
if(sizeof($x)==1 || $i==sizeof($x)-1){
echo $x[$i];
}
else {
echo $x[$i].' - ';
}
}
echo "<br>";
}
}
?>
Maar nu krijg ik de volgende error:
![Afbeelding Afbeelding](https://i.postimg.cc/XNtH9WYL/image-2.jpg)
Bij de volgende aangegeven regels:
![Afbeelding Afbeelding](https://i.postimg.cc/ZYWs9n40/image-3.jpg)
Code (php)
Blijkbaar zijn alle waarden arrays, en op deze manier "sla je ze plat" tot een enkele string. Als er maar een enkele waarde in de array zit maakt dit effectief niets uit.
Super bedankt! :)
Waarom doe je dat? $_GET variabelen worden automatisch gedecodeerd. Geen reden om dat nog een keer te doen?\
EDIT: en voor de goede orde zou alles wat je terugstopt in de querystring weer ge-escaped moeten worden, bijvoorbeeld met urlencode(). Ook zou de ampersand (&) in HTML ge-escaped moeten worden naar &.
Gewijzigd op 19/10/2020 20:23:24 door Thomas van den Heuvel
Ik ben nog vrij nieuw met PHP en ben daarom erg blij met deze hulp!