Hallo allemaal, ik ben nog redelijk nieuw met PHP en ik loop tegen een probleem aan. Wanneer ik data van Apache Solr aanvraag lukt het mij niet om dit uit de juiste manier weer te geven (en ik heb geen idee hoe ik dit moet doen). Dit is de code waar het om zou moeten gaan (mijn pagination code is volgensmij niet nodig):


$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>";
    }
}

?>


Dit geeft mij het volgende resultaat:
En ik wil uiteindelijk het volgende bereiken:

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! :)

[size=xsmall]Toevoeging op 18/10/2020 18:24:38:[/size]

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!
Ah, op die fiets. Voeg dan op regel 64 toe/in:
<?php

foreach($data as $key => $value) if(is_array($value)) $data[$key] = implode(' - ',$value);

?>


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.
Wauw, geweldig! Het werkt helemaal!
Super bedankt! :)
$query = urldecode($_GET["query"]);

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 &amp;.
Hoi Thomas, excuus voor mijn late reactie. Maar bedankt voor je toevoegingen! Ik ga er meteen naar kijken!
Ik ben nog vrij nieuw met PHP en ben daarom erg blij met deze hulp!

Reageren