Avatar billede 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>
Avatar billede 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.
Avatar billede 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
Avatar billede 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
Avatar billede 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
Avatar billede 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>
Avatar billede lurup Ekspert
28. maj 2020 - 22:37 #6
1000 tak olsensweb.
Det hele virkede første gang...Tak og flot arbejde

TAK
Avatar billede 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. Der sættes "nofollow" på alle links.

Loading billede 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