lurup Ekspert
28. maj 2020 - 12:42 Der er 5 kommentarer og
1 løsning

Kan ikke få mine data til at snakke sammen ?? HTML

Hej

Håber på lidt hjælp igen dette forum
Jeg trækker disse data fra en side
https://dhe.skoleplan.skoleit.dk/SPService.asmx/AktuelleTjansehold


<Tjansehold Status="ok">
<Morgen>A1</Morgen>
<Middag>A10</Middag>
<Aften>A12</Aften>
</Tjansehold>

Jeg skal have en side hvor der står

DAGENS KØKKENVAGT  Torsdag
Morgen : A1
Middag : A10
Aften : A12

Jeg har en side her jeg ikke rigtig kan få det til at virke.
Nu viser den kun DAGENS KØKKENVAGT

Kan en hjælpe ? TAK

----------------------------------------------------------------
<?php ini_set('default_socket_timeout', 5); ?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>AU-INFO</title>

        <style type="text/css">
        #dagensret{
            font-size:50px;           
        }
      .food{
//          color: green;
font-size:50px;
        }       
        </style>
       
    </head>
    <body><br><br/>
<span style="font-family:'Comic Sans MS', Comic, Monospace">

<?php
// 11
// remember to remove the ; from the beginning of extension=php_soap.dll in php.ini
$cli= new SoapClient('https://dhe.skoleplan.skoleit.dk/SPService.asmx?WSDL');
$res = $cli->__soapCall('DagensMenu',array());
$xmlstr = $res->DagensMenuResult->any;
$simple = simplexml_load_string($xmlstr);
//$text = $simple->Menu->Tekst;
//echo "dagens ret er ";
echo $text."";
?>
<!--Overskrift-->
<span style="font-size:60pt">
<!--Overskrift-->
<?php
// 13
$simple = simplexml_load_file('https://dhe.skoleplan.skoleit.dk/SPService.asmx/AktuelleTjansehold');
$text = $simple->Menu->Tekst;
$ugedag = $simple->Menu->Ugedag;
$dato = $simple->Menu->Datoo;



echo "<center>DAGENS KØKKENVAGT ". mb_strtoupper($ugedag). "  ". $dato . "<br><center/>";
//echo "<span id='dagensret'>".$text."</span>";
?>
<!--Morgen-->
<span style="font-size:36pt">
<!--->
<?php


$ar = explode("Morgen", $text );
echo "  <span class='foood'>". $ar[0]. "<br/></span>";
//echo "Formiddag <span class='food'>" . $ar[1]. "</span>";
echo preg_replace(['/(Middag|Aften)/'], "<br>$1", $text);

?>




    </body>
</html>
<!--Menu herover-->


</html>
Slater Ekspert
28. maj 2020 - 14:43 #1
Den XML-fil du forsøger at læse fra ser sådan ud:

<Tjansehold Status="ok">
  <Morgen>A1</Morgen>
  <Middag>A10</Middag>
  <Aften>A12</Aften>
</Tjansehold>

Men du forsøger at læse ->Menu->Ugedag osv. fra den. De egenskaber findes ikke i filen, så du kan ikke læse dem.

Hvis du gerne vil have det stillet op som i dit eksempel, kan du f.eks. skrive:
foreach ($simple->children() as $key => $val) {
    echo "$key : $val<br>";
}

- Men du kan ikke få dagen fra det. Det findes ikke i filen.
olsensweb.dk Ekspert
28. maj 2020 - 14:54 #2
intet med HTML at gøre, det er PHP
skåret helt ind til benet:

<?php ini_set('default_socket_timeout', 5); ?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>AU-INFO</title>     
    </head>
    <body><br><br/>
<?php
// 11
// remember to remove the ; from the beginning of extension=php_soap.dll in php.ini
$cli= new SoapClient('https://dhe.skoleplan.skoleit.dk/SPService.asmx?WSDL');
$res = $cli->__soapCall('DagensMenu',array());
$xmlstr = $res->DagensMenuResult->any;
$simple = simplexml_load_string($xmlstr);
$ugedag = $simple->Menu->Ugedag;
$dato = $simple->Menu->Dato;
echo "DAGENS KØKKENVAGT ". mb_strtoupper($ugedag). "  ". $dato . "<br>";



// 13
// notice new simple
$simple = simplexml_load_file('https://dhe.skoleplan.skoleit.dk/SPService.asmx/AktuelleTjansehold');
echo "<br>Morgen : ". $simple->Morgen;
echo "<br>Middag : ". $simple->Middag;
echo "<br>Aften : ". $simple->Aften;
?>
</body>
</html>



output

DAGENS KØKKENVAGT TORSDAG 28-05-2020

Morgen : A1
Middag : A10
Aften : A12



ryd op i din code, fjern forælede tags, ungå at bruge inline css
style din code med class og id
olsensweb.dk Ekspert
28. maj 2020 - 17:10 #3
et optimerings tip kunne være at skifte
// remember to remove the ; from the beginning of extension=php_soap.dll in php.ini
$cli= new SoapClient('https://dhe.skoleplan.skoleit.dk/SPService.asmx?WSDL');
$res = $cli->__soapCall('DagensMenu',array());
$xmlstr = $res->DagensMenuResult->any;
$simple = simplexml_load_string($xmlstr);
$ugedag = $simple->Menu->Ugedag;
$dato = $simple->Menu->Dato;

ud med
$simple = simplexml_load_file('https://dhe.skoleplan.skoleit.dk/SPService.asmx/DagensMenu?nummer=2');
//$text = $simple->Menu->Tekst;
$ugedag = $simple->Menu->Ugedag;
$dato = $simple->Menu->Dato;

fra https://www.computerworld.dk/eksperten/spm/1033499
da WSDL filen er rimelig stor (140K), og dagensmenu (0,3K) hvor du har datoen i forvejen



et andet tip kunne være at bruge JSON isedet for XML, men så er der en det der skal codes om
olsensweb.dk Ekspert
28. maj 2020 - 17:13 #4
man kunne også bare overveje at smide datoen over i
https://dhe.skoleplan.skoleit.dk/SPService.asmx/AktuelleTjansehold
olsensweb.dk Ekspert
28. maj 2020 - 18:29 #5
hvis det altid er dagsdato der skal stå i toppen kan man lave det så kort som:
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>AU-INFO</title>     
    </head>
    <body><br><br/>
<?php
$dato = date("d-m-Y");
$dayofweek = date('w');
switch($dayofweek){
    case 0: $ugedag = "søndag"; break;
    case 1: $ugedag = "mandag"; break;
    case 2: $ugedag = "tirsdag"; break;
    case 3: $ugedag = "onsdag"; break;
    case 4: $ugedag = "torsdag"; break;
    case 5: $ugedag = "fredag"; break;
    case 6: $ugedag = "lørdag"; break;   
}
echo "DAGENS KØKKENVAGT ". mb_strtoupper($ugedag). "  ". $dato . "<br>";
// 13
$simple = simplexml_load_file('https://dhe.skoleplan.skoleit.dk/SPService.asmx/AktuelleTjansehold');
foreach ($simple->children() as $key => $val) {
    echo "$key : $val<br>";
}
?>
</body>
</html>
lurup Ekspert
28. maj 2020 - 22:37 #6
1000 tak olsensweb.
Det hele virkede første gang...Tak og flot arbejde

TAK
Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links

Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Computerworld
Tidligere Intel-udvikler: Derfor besluttede Apple sig for at droppe Intel
Det har vakt opsigt, at Apple har besluttet at droppe sin mangeårige samarbejdspartner Intel som leverandør af chip til Mac. Årsagen var helt konkret, fortæller tidligere Intel-topudvikler.
White paper
Sådan kan du arbejde effektivt uanset tid, sted og type af enhed
Hvad nu hvis dit arbejde, din information, dine processer og teknologien bag ved, var organiseret på en måde så det passede til din organisation – alt sammen guidet af en intelligent udgave af det digitale arbejdsrum? Det er visionen bag Atea og Citrix´s samarbejde med digital workspace – en smartere og mere effektiv måde at arbejde på. I dette whitetpaper kan du derfor læse om, hvordan du kan skabe et mere effektivt og brugervenligt arbejdsrum uanset tid, sted og enhed. En løsning der på en gang er både enkel og som sætter brugeren i centrum.